今天测试了一下科大迅飞的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=============================================================
按任意键退出 ...