我试图用Python 3.4将文本转换为语音,但是由于我的电脑的主要语言不是英语(我正在使用Win7x64),所以语音和口音是错误的(因为我想让它“说”英语) 。
import win32com.client speaker = win32com.client.Dispatch("SAPI.SpVoice") speaker.Speak("Hello, it works!")
那么,有没有办法改变语音/语言(程序而不是系统)? 另外,你认为有更好的方法来做到这一点? 也许一个模块,可以在每个系统上工作?
有可能你的操作系统只有一个声音。 有几种方法可以使用IPA( 国际语音语言 )和SVSFIsXML作为您的语音通话中的标志来获得英语听起来的输出…但是我猜你想要的东西不那么复杂。
我要做的第一件事就是如果你还没有一个英文声音的话。 ( 首先进入你的控制面板 – >语音识别 – >文本到语音,然后看看你的语音选择。如果它说“微软安娜 – 英语(美国)”,那么,是的,你已经有一个英语的声音。
如果不是的话,你将不得不再次获得微软语音平台 – 运行时语言(版本11) 。 我强烈建议Microsoft server Speech Text to Speech Voice(en-US,ZiraPro)作为英文语音。 您还需要Microsoft Speech Platform – 软件开发工具包(SDK)(版本11) 。
老实说,我只是把它们全部安装好,因为我觉得它很酷。
一旦你已经安装了所有的东西,我发现的声音工作是一个整洁的注册表黑客,我发现在语音攻击 – 获得免费替代TTS声音与Win7 / 8 64位工作 。
基本上,这需要你在你的注册表中的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,但我想象你想要的电话会看起来像扬声器.SetVoice(“微软服务器语音文字到语音语音(EN – 美国,ZiraPro)”)。 当你设置好声音之后,那个声音应该是你打电话的时候所说的那个声音。
现在,如果你已经得到了这一点,并在控制面板中播放的声音,而不是在你的代码,可能是你的程序是32位/ 64位或什么的,然后你必须跑回去,重新安装相反的32位/ 64位的声音,再次运行您的注册编辑,然后再次运行您的应用程序。
一点工作,但它会得到回报。 如果你确实分发了你的代码,你必须确保你的声音是客户端注册表的一部分,搞砸这件事本身就很麻烦。