语音识别LinuxSDK(C++)识别越来越慢
happierb 发布于2018-01-22 17:31 浏览:293 回复:4
0
收藏

问题:

使用linux-cpp-sdk.3.0.1.tar.gz中的 asrDemo 对语音流进行识别测试时,会有一个奇怪的现象——识别开始时间会越来越晚。当连续使用1-2分钟后,当一句话说完后好几秒钟了,识别竟然还没开始。

好像语音或识别由于某种原因后延了,而且这个后延时间越来越大。

-------------------------------------------------

测试环境:

ubuntu 16.04 , g++4.9

-------------------------------------------------

重现步骤:

1,修改 recog_one_file() 文件中 string filename = "../pcm/test.pcm";

2,打开终端,sample/asrDemo/run 文件夹下执行(建立管道文件,并录音):

mkfifo ../pcm/test.pcm ; arecord -f S16_LE -r 16000 > ../pcm/test.pcm

3,打开另一个终端,sample/asrDemo/run 文件夹下执行识别任务:

bash build_and_run.sh

收藏
点赞
0
个赞
共4条回复 最后由happierb回复于2018-05-16 15:16
#5happierb回复于2018-05-16

整理后的声卡实时语音流识别方法如下,共各位参考:

1,修改 recog_one_file() 文件中

string filename = "/tmp/test.pcm";

2,禁用掉源码中的usleep

if (sleep_ms > 0) { //上次_post_data欠的sleep
                //cout << "sleep :"<<sleep_ms<<endl;
                //usleep(sleep_ms * 1000); // 一个音频的需要sleep的总长约等于音频时间,如果不遵守,服务器将可能会返回异常结果。
            }

3,打开终端,执行(建立管道文件,对声卡进行音频采集,直接输出到管道文件):

mkfifo /tmp/test.pcm ; arecord -f S16_LE -r 16000 > /tmp/test.pcm

4,打开另一个终端,执行识别任务:

bash build_and_run.sh
0
#4happierb回复于2018-05-11

强烈要求技术团队出一个基于真实的音频流的demo。

0
#3happierb回复于2018-05-11

我们自己搞好了,虽然仍然不是很明白。

用实时音频流的话,需要将usleep禁用掉。

我们猜测这个usleep只是用于传输语音文件时候用的,可能是用来模拟实时音频流的。

            if (sleep_ms > 0) { //上次_post_data欠的sleep
                //cout << "sleep :"<<sleep_ms<<endl;
                //usleep(sleep_ms * 1000); // 一个音频的需要sleep的总长约等于音频时间,如果不遵守,服务器将可能会返回异常结果。
            }
0
#2fujiayi1984回复于2018-01-22

看下代码中对于usleep的调用,打印下每次识别的sleep时间

0
TOP
切换版块