解决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()

参考:https://www.devdungeon.com/content/text-speech-python-pyttsx3#change_voice_language

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

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

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值