尝试使用 pyttsx3 时,我只能使用英语语音。我也希望能够使用荷兰语。
我已经在 Windows 设置菜单中安装了文本到语音语言包。但我仍然只能使用聋哑的英语语音。
我怎样才能解决这个问题?
尝试使用 pyttsx3 时,我只能使用英语语音。我也希望能够使用荷兰语。
我已经在 Windows 设置菜单中安装了文本到语音语言包。但我仍然只能使用聋哑的英语语音。
我怎样才能解决这个问题?
如果您想更改一种语言,您需要更改为另一种支持您的语言的“声音”。
import pyttsx3
engine = pyttsx3.init()
for voice in engine.getProperty('voices'):
print(voice)
engine.setProperty('voice', voice.id)
我个人也使用我在这里提到的这个辅助函数
# 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))
最后,您可以像这样使用它(如果安装了语言和性别):
import pyttsx3
engine = pyttsx3.init()
change_voice(engine, "nl_BE", "VoiceGenderFemale")
engine.say("Hello World")
engine.runAndWait()
在 Windows 上安装另一种语言是不够的。默认情况下,Windows 安装的新“扬声器”只能由 Windows 官方程序访问。您需要授予在 python 代码中使用它的权限。这是通过更改几个注册表文件来完成的(不要在没有备份的情况下执行此操作,或者如果您不确定自己在做什么)。这是一个使用另一种语言的小例子,在这种情况下是希伯来语。至于如何更改注册表的手册,请进入 machine_buddy.get_all_voices(ack=True) 文档,它写在评论中。
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
)
输出:
<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