You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyttsx3开发Python AI助手:无法区分男女语音及语言配置疑问

pyttsx3语音选择与语言配置问题解决

一、解决语音性别无差异的问题

你遇到的voices[0]和voices[1]无明显差异,大概率是系统中这两个语音本身性别/风格接近,或是选的索引不对。先枚举所有可用语音,查看详细信息再精准选择:

1. 打印所有语音的详细信息

运行以下代码,获取每个语音的索引、名称、语言等关键信息:

import pyttsx3
engine = pyttsx3.init()

voices = engine.getProperty('voices')
for idx, voice in enumerate(voices):
    print(f"索引: {idx}")
    print(f"ID: {voice.id}")
    print(f"名称: {voice.name}")
    print(f"语言: {voice.language}\n")

从输出里找到明确标注性别(比如名称含Male/Female、男声/女声)的语音,再用对应的索引设置。

2. 补充系统语音包

如果输出里没有不同性别的语音,需要给系统安装额外语音包:

  • Windows:打开「设置 > 时间和语言 > 语音 > 添加语音」,选择带不同性别的语音包安装
  • macOS:打开「系统偏好设置 > 辅助功能 > 语音 > 系统语音 > 管理语音」,添加需要的语音
  • Linux:通过包管理器安装espeak-ng相关的多语言/多性别语音包

3. 正确设置目标语音

找到目标语音的ID后,修改代码:

import pyttsx3
engine = pyttsx3.init()

voices = engine.getProperty('voices')
# 替换成你找到的目标语音索引
engine.setProperty('voice', voices[2].id)

engine.say("Hello World!")
engine.runAndWait()

二、配置语音语言

pyttsx3的语言依赖系统安装的语音包,直接选择对应语言的语音ID即可:

  1. 用上面的枚举代码找到对应语言的语音(比如language字段为zh-CN对应中文,en-US对应英文)
  2. 设置该语音的ID,示例:
import pyttsx3
engine = pyttsx3.init()

voices = engine.getProperty('voices')
# 匹配中文语音
for voice in voices:
    if voice.language == 'zh-CN':
        engine.setProperty('voice', voice.id)
        break

engine.say("你好,世界!")
engine.runAndWait()

切换多语言时,只需替换对应语言的语音ID即可。

内容的提问来源于stack exchange,提问作者user22290650

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:50:08