美文网首页
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