【问题标题】:Adding grammar causes speech recognition to fail添加语法导致语音识别失败
【发布时间】:2018-04-08 05:16:16
【问题描述】:

我对如何在 Python 的 speech_recognition 包中使用语法文件感到相当困惑。我曾尝试在线寻找解决方案,但关于语法的信息至少稀疏。这是我的设置:

ma​​in.py:

import speech_recognition as sr

converter = sr.Recognizer()
with sr.Microphone() as source:
    print('Please say "zero":')
    audio = converter.listen(source)

print('Without: ' + str(converter.recognize_sphinx(audio, show_all=False)))
print('With: ' + str(converter.recognize_sphinx(audio, show_all=False, grammar='Numbers.jsgf')))

Numbers.jsgf:

#JSGF V1.0;
grammar Numbers;
<Zero> = ( zero );

输出:

Please say "zero":
Without: zero
INFO: jsgf.c(706): Defined rule: <Numbers.g00000>
INFO: jsgf.c(706): Defined rule: <Numbers.Zero>

Process finished with exit code -1073741819 (0xC0000005)

我在 PyCharm 中工作,使用 Python 3.5.4 (v3.5.4:3f56838, Aug 8 2017, 02:17:05) [MSC v.1900 64 bit (AMD64)] on win32。有什么想法吗?提前感谢您的帮助!

【问题讨论】:

    标签: python speech-recognition grammar speech-to-text cmusphinx


    【解决方案1】:

    经过大量修改,并与project page 中的一些示例进行比较后,我终于发现了错误所在。它归结为一个命名约定,如果您不知道要查找它或您要查找的内容,则该命名约定是不容易找到的。这是一个不正确的文件:

    Numbers.jsgf

    #JSGF V1.0;
    grammar Values;
    <Zero> = ( zero );
    

    这是一个正确的文件:

    Numbers.jsgf

    #JSGF V1.0;
    grammar Numbers;
    <Numbers> = ( zero );
    

    简单解释一下:

    • 文件名必须与语法名相同
    • 必须有一个与文件/语法名称同名的语法规则(例如&lt;Numbers&gt;

    如果不满足其中任何一个条件,则程序将无法理解该文件并崩溃。附带说明一下,.jsgf.gram 文件引用了相同的编码标准,扩展名似乎取决于个人喜好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多