今天测试了一下科大迅飞的sdk。
遇到了几个问题。
问题1
我使用语音识别的Demo,当我换了一个语音文件时,识别出来他的结果是这样的。
confidence=91 grammar=0 id=nomatch name=nomatch:out-of-voca input=nomatch:out-of-voca
经过查找发现,需要修改这个打开的语法文件的内容。
fp = fopen("gm_continuous_digit.abnf", "rb"); if (NULL == fp) { printf("\nopen grammar file failed!\n"); goto grammar_exit; }
这个迅飞sdk只能按照语法文件来进行识别。不然是识别不了的。
问题2
接下来我成功识别了别的例子文件。我开始写了自己的语法文件,然后自己开始录音了。
我的语法文件
#ABNF 1.0 GB2312; mode voice; language zh-CN; root $main; $main = $yidong $digit<1-9> 米; $yidong = 前进 | 后退 ; $digit = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0;
现在我开始录音,我的录音命令是
arecord -q -d 5 -f S16_LE -r 16000 -D plughw:0 test.wav
但是,现在开始识别还是出现了问题。
QISRGetResult failed, error code: 10119
官方说这个问题是格式不匹配。但是我的格式是完全正确的。
最后我发现原来是我的声音太轻,他识别出来都以为是噪音,才会出现这个问题。然后我加大了音量。
语音识别结束 ============================================================= confidence=60 grammar=0 input=前进5 4 米 confidence=50 grammar=0 input=前进6 5 4 1 米 confidence=50 grammar=0 input=前进6 5 4 2 米 ============================================================= 按任意键退出 ...