Python Microsoft 语音 API 错误:来自 CmdLoadFromFile 的 SPERR_NO_DRIVER

Posted

技术标签:

【中文标题】Python Microsoft 语音 API 错误:来自 CmdLoadFromFile 的 SPERR_NO_DRIVER【英文标题】:Python Microsoft Speech API Error: SPERR_NO_DRIVER from CmdLoadFromFile 【发布时间】:2010-12-20 00:08:07 【问题描述】:

这个问题很可能没有答案,但我非常希望在这件事上得到一些帮助。 找了一段sn-p的代码,用Python处理微软的Speech 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.”有关

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

【讨论】:

不,我不是……我看不出波形驱动器应该如何影响加载语法文件的能力…… 抱歉这么久才回复,我尝试将扩展名更改为 .xml,但仍然出现相同的错误。 我是否需要安装 Visual Studio 才能正常工作?

以上是关于Python Microsoft 语音 API 错误:来自 CmdLoadFromFile 的 SPERR_NO_DRIVER的主要内容,如果未能解决你的问题,请参考以下文章

新的 Microsoft 语音服务 WebSocket API 的端点是啥?

无法使用Delphi通过Post打开Microsoft语音识别API

微软语音识别api

Microsoft Speech API (SAPI) UserTraining 语法

必应语音 API 参考

安装python3时,报错提示api-ms-win-crt-runtime-l1-1-0.dll丢失