Liv*_*vio 4 python windows sapi python-3.x
我试图使用此代码使用Python 3.4将文本转换为语音,但由于我的计算机的主要语言不是英语(我使用的是Win7x64),因此语音和口音是错误的(因为我希望它“说”英语) 。
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("Hello, it works!")
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法改变(程序的,而不是系统的)语音/语言?另外,您认为有更好的方法吗?也许一个模块可以在每个系统上工作?
小智 5
您的操作系统很可能只带有一种声音。有多种方法可以使用 IPA(国际音标语言)和 SVSFIsXML 作为通话中的标志来获得英语发音输出......但我猜您会想要比这更简单的东西。
如果你还没有英语语音,我要做的第一件事就是获取一个英语语音。(首先检查控制面板 -> 语音识别 -> 文本转语音,然后查看你的语音选择。如果它显示“Microsoft Anna - 英语(美国)”,那么,是的,你已经有英语语音了。)
如果没有,您将不得不获取另一个语音Microsoft Speech Platform - Runtime Languages (Version 11)。我强烈推荐 Microsoft Server Speech Text to Speech Voice(en-US、ZiraPro)作为英语语音。您还需要Microsoft 语音平台 - 软件开发工具包 (SDK)(版本 11)。
老实说,我只是把它们全部安装了,因为我觉得这很酷。
一旦你安装了所有这些,我发现让声音工作的是一个巧妙的注册表黑客我发现在语音攻击 - 获得免费的替代 TTS 声音与 Win7/8 64bit 一起工作。
基本上,这需要您在注册表中的 MS Speech Platform 语音中进行一些字符串替换,以便您在注册表中看到的内容
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech Server\v11.0\Voices HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech Server\v11.0\Voices
注册表将最终出现在:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices
完成后,返回控制面板并查看您安装的所有声音。您应该能够测试所有这些,即使是使用不同的语言。如果声音没有播放,则说明您安装的声音不正确(x86 与 64)。
现在在 python 中,您必须进行 SetVoice 调用。我一生中从未用Python编程过,但我想你想要的调用看起来像speaker.SetVoice(“Microsoft Server Speech Text to Speech Voice (en-US, ZiraPro)”)。设置语音后,当您拨打“通话”呼叫时,该语音应该始终说话。
现在,如果您已经到达这一点并且声音在控制面板中播放,但不在您的代码中播放,则可能是您的程序是32位/64位或其他什么,然后您必须跑回来,重新安装相反的32位/64位声音,再次运行您的注册表编辑,并尝试再次运行您的应用程序。
有点工作,但会有回报。如果您确实分发代码,则必须确保您的声音是客户端注册表的一部分,而弄乱这一点本身就可能令人头疼。