美文网首页
python文字转语音更换pyttsx3的语音包

python文字转语音更换pyttsx3的语音包

作者: CaesarH000 | 来源:发表于2023-04-05 16:35 被阅读0次

起因

个人更喜欢男性的语音,但默认的中文语音包中只存在女性的语音包。

查看语音包列表

  import pyttsx3

  engine = pyttsx3.init()
  voices = engine.getProperty('voices')
  for voice in voices:
    print(voice)
语音包列表

可以看到,在python输出语音包列表中,中文的语音包只有HuiHui。但在设置中我们可以看到还有Kangkang,这个语音包是男性声音的,我们的目的就是使用这个语音包。


默认语音包列表

新增语音包信息

参考文章:https://www.likecs.com/show-204841565.html
根据这篇文章的操作后,重新跑代码,最终依然还是无法找到Kangkang,仔细查看之后,发现是注册表路径与pyttsx3所扫描的路径不一致。

打开注册表页面

win+R 打开运行界面,输入regedit点击确定,打开注册列表界面。

运行
注册表编辑器
根据pyttsx3输出的扫描路径,找到对应的路径的注册表信息,我本地的扫描路径是:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\
在此目录下,能看到的语音包有:

因为Kangkang是中文包,所以选择同样为中文包的HuiHui,进行导出。
导出
对导出的文件进行编辑,将所有的“HuiHui”更换为“Kangkang”,并将gender设置为Male
reg文件内容
保存文件后,双击文件安装注册表信息。但在注册表中,Kangkang所指向的voicepath依然还是huihui,所以要将其更换为Kangkang。
选中voicepath,右击修改,将huihui更改为Kangkang即可。
修改
路径

测试

使用pyttsx3,导出所有的语音包列表即可发现,Kangkang已经可以被检测到了:


语音包列表

Kangkang在整个数组中排第五,使用数组调用kangkang的id即可:

    import pyttsx3

    engine = pyttsx3.init()
    engine.setProperty('rate', 200)  # 设置语速
    engine.setProperty('volume', 1)  # 设置音量,定义区间[0,1]
    voices = engine.getProperty('voices')
    for voice in voices:
        print(voice)
    voices = engine.getProperty('voices')
    engine.setProperty('voice', voices[4].id)  # 设置第五个语音合成器
    engine.say("这里是康康")
    engine.runAndWait()
    engine.stop()

相关文章

网友评论

      本文标题:python文字转语音更换pyttsx3的语音包

      本文链接:https://www.haomeiwen.com/subject/ceaeddtx.html