为什么可以';t我使用“;演讲稿.SpVoice“;而不是",;SAPI.SpVoice“;使用python和win32com?

为什么可以';t我使用“;演讲稿.SpVoice“;而不是",;SAPI.SpVoice“;使用python和win32com?,python,text-to-speech,win32com,sapi,Python,Text To Speech,Win32com,Sapi,我正试图使用python中的WindowsSAPI来实现文本到规范的目的。 我是win32com软件包的新手。 有了英语,一切都好 import win32com.client speaker = win32com.client.Dispatch("SAPI.SpVoice") speaker.Speak("Hello!") 但对于其他语言则不然 # that code doesn't work import win32com.client speaker = win32com.client.

我正试图使用python中的WindowsSAPI来实现文本到规范的目的。 我是win32com软件包的新手。 有了英语,一切都好

import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("Hello!")
但对于其他语言则不然

# that code doesn't work
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak("Привет!")
我在VB上搜索了一个使用“Speech.SpVoice”的例子,它只适用于俄语

我试着使用“Speech.SpVoice”,但失败了

import win32com.client
speaker = win32com.client.Dispatch("Speech.SpVoice")
speaker.Speak("Привет!")
#pywintypes.com_error: (-2147221164, 'Class not registered', None, None)
“Speech.SpVoice”和“SAPI.SpVoice”有什么区别? 为什么我不能在python和win32com中使用“Speech.SpVoice”而不是“SAPI.SpVoice”


或者,如何在不创建vbs文件的情况下运行VB oneliner?这将是我的解决方案。

我认为你的SAPI语音不起作用,因为它是说英语的SAPI语音,而你没有改成俄语。有几种方法可以在SAPI中获得俄罗斯人的声音

第一种方法是为Windows安装俄语语言包,如果您有Windows的最终版或企业版,就可以这样做

第二种方法是安装windows语音服务器语音,并破解注册表,以便在SAPI中获得更多语音

第三种选择是购买第三方语音

Speech.SpVoice和SAPI.SpVoice之间有重要区别。尽管它们有相似的用法,但它们不是相同的库,也不会具有完全相同的功能。有一点不同

import win32com.client
speaker = win32com.client.Dispatch("Speech.SpVoice")
speaker.Speak("Привет!")
#pywintypes.com_error: (-2147221164, 'Class not registered', None, None)