admin 管理员组

文章数量: 887007

解决pyttsx3不读中文的问题

首先我们需要知道我们自己的系统里自带什么语音包,然后才能从这些自带的语音包里选出一个来用:

# 这段代码会把系统里的可用语音包的信息print出来
import pyttsx3
engine = pyttsx3.init()voices = engine.getProperty('voices')
for voice in voices:print("Voice:")print(" - ID: %s" % voice.id)print(" - Name: %s" % voice.name)print(" - Languages: %s" % voice.languages)print(" - Gender: %s" % voice.gender)print(" - Age: %s" % voice.age)

上面这段代码会把系统里的可用语音包的信息print出来,具体输出结果是什么应该是因人而异,我的运行结果是:

Voice:- ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0- Name: Microsoft David Desktop - English (United States)- Languages: []- Gender: None- Age: None
Voice:- ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0- Name: Microsoft Zira Desktop - English (United States)- Languages: []- Gender: None- Age: None
Voice:- ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0- Name: Microsoft Huihui Desktop - Chinese (Simplified)- Languages: []- Gender: None- Age: None

然后我们选择一个语音包,把他的ID作为engine.setProperty()函数的参数:

# 把刚才代码输出的语音包ID信息储存起来
zh_voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0"# 用语音包ID来配置engine
engine.setProperty('voice', zh_voice_id)
engine.say('这回可以了吧')engine.runAndWait()

参考:

全部信息和帮助来自于以上参考链接。

PS:本文已经在CSDN社区发过帖子,但是我自己从app上没看到,所以为了自己查看方便,再发在这里,也希望能帮助更多人。

本文标签: 解决pyttsx3不读中文的问题