[Freeswitch ASR] 使用Pocket Sphinx进行英文语音识别

Song3561 次浏览0个评论2018年08月29日

Sphinx是卡内基梅隆大学研究的开源语音识别软件,Pocket Sphinx则是一个轻量版,主要用于嵌入 式及手持移动设备。FreeSWITCH中有一个mod_pocketsphinx模块可以通过PocketSphinx进行语音识别。

安装mod_pocketsphinx

进入安装包目录,取消掉event_handlers/mod_pocketsphinx的注释:

vim modules.conf

接下来安装模块:

make mod_pocketsphinx-install

从软件包安装FreeSWITCH后,在autoload_configs/modules.conf.xml取消mod_pocketsphinx注释设置FreeSWITCH默认加载加载mod_pocketsphinx

<load module="mod_pocketsphinx"/>

首次安装可以在FS中加载:

reloadxml
reload mod_pocketsphinx

使用mod_pocketsphinx实现英文语音识别

FreeSWITCH安装目录的grammar目录下新建yes_no.gram文件,输入以下内容:

#JSGF V1.0;
/** JSGF Grammar for example */
grammar example;
<yes> = [ yes ];
<no> = [ no ];
public <results> = [ <yes> | <no> ];

该语法文件是根据JSGF语法写的,它的作用是对照字典组成相关的词语或句子。在此,该语法仅定义 了yesno,因此,它仅能识别英文单词yesno。不过,对于我们演示语言识别的例子来说足 够了。

在下面创建拨号计划:

<extension name="ASR">
    <condition field="destination_number" expression="^1234$">
        <action application="answer"/>
        <action application="set" data="tts_engine=flite"/>
        <action application="set" data="tts_voice=kal"/>
        <action application="play_and_detect_speech" data="say:please say yes or no detect:pocketsphinx yes_no"/>
        <action application="log" data="ERR ${detect_speech_result}"/>
    </condition>
</extension>
  • play_and_detect_speech是一个App,它的作用是播放一段声音(声音文件或TTS文本)并进行语音识别。
  • say:please say yes or no,用于指定播放的TTS文本
  • detect:pocketsphinx,表示使用pocketsphinx进行语音识别
  • yes_no,指定一个语法文件(即我们刚才创建的语法文件)。 当语音识别完成后,识别的结果将存入detect_speech_result通道变量中,同时使用log App将它的内容打印到日志中以便观察识别结果。
2018-08-29 15:41:02.785093 [ERR] mod_dptools.c:1787 <?xml version="1.0"?>
<result grammar="yes_no">
  <interpretation grammar="yes_no" confidence="100">
    <input mode="speech">yes</input>
  </interpretation>
</result>

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文

    当前暂无更多相关好文推荐...