首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改变pyttsx3语言

改变pyttsx3语言
EN

Stack Overflow用户
提问于 2021-01-31 08:37:43
回答 2查看 16.5K关注 0票数 5

当尝试使用pyttsx3时,我只能使用英语语音。我也想用荷兰语。

我已经在windows设置菜单中安装了文本到语音语言包。但我仍然只能用失聪的英语声音。

我怎么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-21 20:36:04

如果你想改变一种语言,你需要改变另一个支持你的语言的“声音”。

要查看安装了哪些声音/语言,可以如下所示:

代码语言:javascript
复制
import pyttsx3

engine = pyttsx3.init()

for voice in engine.getProperty('voices'):
    print(voice)

  1. 不你可以换到你最喜欢的声音:

代码语言:javascript
复制
engine.setProperty('voice', voice.id)

我个人也使用这个助手函数I mentioned here

代码语言:javascript
复制
# language  : en_US, de_DE, ...
# gender    : VoiceGenderFemale, VoiceGenderMale
def change_voice(engine, language, gender='VoiceGenderFemale'):
    for voice in engine.getProperty('voices'):
        if language in voice.languages and gender == voice.gender:
            engine.setProperty('voice', voice.id)
            return True

    raise RuntimeError("Language '{}' for gender '{}' not found".format(language, gender))

最后,您可以这样使用它(如果安装了语言和性别):

代码语言:javascript
复制
import pyttsx3

engine = pyttsx3.init()
change_voice(engine, "nl_BE", "VoiceGenderFemale")
engine.say("Hello World")
engine.runAndWait()
票数 11
EN

Stack Overflow用户

发布于 2022-02-19 12:44:12

仅在Windows上安装另一种语言是不够的。默认情况下,安装了新的“扬声器”的窗口只能由windows官方程序访问。您需要在python代码中提供使用它的访问权限。这是通过更改两个注册表文件来完成的(不要在没有备份的情况下执行此操作,或者如果您不确定自己在做什么)。这里有一个使用另一种语言,希伯来语的小例子。至于如何更改注册中心的手册,请进入machine_buddy.get_all_voices(ack=True)文档,并将其写入注释中。

代码语言:javascript
复制
import wizzi_utils as wu  # pip install wizzi_utils


def tts():
    # pip install pyttsx3 # needed
    machine_buddy = wu.tts.MachineBuddy(rate=150)
    all_voices = machine_buddy.get_all_voices(ack=True)

    print('\taudio test')
    for i, v in enumerate(all_voices):
        machine_buddy.change_voice(new_voice_ind=i)
        machine_buddy.say(text=v.name)
        if 'Hebrew' in str(v.name):
            t = 'שלום, מה קורה חברים?'
            machine_buddy.say(text=t)
    return


def main():
    tts()
    return


if __name__ == '__main__':
    wu.main_wrapper(
        main_function=main,
        seed=42,
        ipv4=False,
        cuda_off=False,
        torch_v=False,
        tf_v=False,
        cv2_v=False,
        with_pip_list=False,
        with_profiler=False
    )

产出:

代码语言:javascript
复制
    <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\MSTTS_V110_heIL_Asaf
          name=Microsoft Asaf - Hebrew (Israel)
          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>
    audio test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65977155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档