Skip to main content
 首页 » 编程设计

Python 微软语音 API 错误 : SPERR_NO_DRIVER from CmdLoadFromFile

2025年05月04日15Leo_wl

这个问题很可能没有答案,但我非常希望在这个问题上得到一些帮助。 找了一段用 Python 处理微软语音 API 的代码,然后去了解了 W3C 的“Speech Recognition Grammar Specification Version 1.0”。

我把它归结为:

>>> import win32com.client 
>>> listener = win32com.client.Dispatch("SAPI.SpSharedRecognizer") 
>>> context = listener.CreateRecoContext() 
>>> grammar = context.CreateGrammar() 
>>> grammar.DictationSetState(0) 
>>> grammar.CmdLoadFromFile("C:\\grammar.grxml") 
Traceback (most recent call last): 
  File "<pyshell#1>", line 1, in <module> 
    grammar.CmdLoadFromFile("C:\\grammar.grxml") 
  File "C:\Python26\lib\site-packages\win32com\gen_py\C866CA3A-32F7-11D2-9602-00C04F8EE628x0x5x4.py", line 2372, in CmdLoadFromFile 
    , LoadOption) 
com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2147201021), None) 

据我所知,上述错误代码对应于“SPERR_NO_DRIVER”,与“There is no wave driver installed.”有关

我现在卡住了。我不知道在这种情况下,wave driver 是什么,也不知道在哪里可以找到它或如何调试它等...... 有什么想法吗?

请您参考如下方法:

.wav 数据是最基本的声音数据类型 - 波形的原始采样,“声音有多大”每秒 8000 到 44000 次。

波形驱动程序可让您的计算机从麦克风获取此原始数据或将其发送到扬声器。

如果您的计算机有声卡,则应该已经安装了声卡。您是否在没有声音硬件的计算机上进行开发?

编辑:在进一步查看文档后,我认为您错误地识别了错误; -2147201021 是 0x80045003,这是 SPERR_UNSUPPORTED_FORMAT(参见 http://msdn.microsoft.com/en-us/library/ms717306%28VS.85%29.aspx)

您确定您的 Speech API 版本支持 grxml 文件吗?看着http://msdn.microsoft.com/en-us/library/ee125091%28v=VS.85%29.aspx它可能需要 .xml 或 .cfg - 尝试将扩展名从 .grxml 更改为 .xml?