今天我们要来看的是linux离线语音识别的安装和运行,在开始说之前,我想问一下,很多人都玩过小游戏吧,我之前的一个朋友自己做了一个贪吃蛇小游戏,然后给他加上了语音识别系统,更加增添了游戏的趣味,对于语音识别系统可以说是还是很简单的,今天我们就先看看如何进行linux离线语音识别的安装和运行,我亲自给你们示范一下。
我们首先可以在讯飞上下载sdk,下载完之后,要解析文件,你要分清里面的都是什么意思,文件解析玩,会有4个头文件:msp_errors.h msp_types.h qisr.h qtts.h,msp_errors.h msp_types.h为通用数据结构的头文件,qisr.h是语音识别用的头文件,qtts.h是语音合成用的头文件。这些你是必须要了解的,不然怎么开始接下来的步骤。
在你下载的sdk里面是有步骤的,但是也是要注意一些问题的,步骤如下:
1.doc目录下存放开发文档等;
2.lib目录下存放SDK需要调用的动态库以及需要引用的头文件。
3.example目录下存放提供的示例demo,每个例子下都有Makefile文件,在当前目录make即可;
4.bin目录下存放符合标准的语音文件样例、配置文件和资源文件等,make之后的example可执行程序也会拷贝至此,请在此目录下运行,否则会运行失败;
5.prj目录下提供make脚本,可以快速编译例子。
但是在这个过程中我遇到了一些问题就是报错了,这是为什么呢,他提示是说找不到 lasound,去看它的makefile文件,其中需要这个库,所以在这里需要注意一点,你如果重新编译下面这个库进去,他还是会报错,并且警告,这就说明创建可能是不完整的,那么解决方法就是把之前创建的“asrdemo.o”删除,再继续编译,就可以成功了。
然后在bin下生成了"asrdemo"可执行文件,在bin目录下运行(./asrdemo)
这样就运行成功了,但是你会发现会有一堆代码,那你就要做如下步骤了
1.先要调用QISRInit()函数,参数是自己的appid,每个SDK都是注册才能下载的,所以是唯一的,用来区分用户的,不同级别的用户每天可以使用SDK的次数有限制,毕竟人用的多了语音识别的性能肯定会下降;
2.之后就是把GrammarID,输入输出的参数param和调用状态返回值ret作为参数传入QISRSessionBegin()函数中进行初始化,返回值是sessionID,这个是后面所有函数的主要参数之一;
3.打开自己的音频文件,调用QISRAudioWrite()函数写入,可以分段也可以一次,第一个参数是sessionID,上面初始化函数返回的值,第二个参数是音频数据头指针,第三个参数是音频文件大小,第四个参数是音频发送的状态,表示发送完了没有,剩下两个是服务器端检测语音状态和识别状态的返回值;
4.调用QISRGetResult()函数获取识别的结果,第一个参数还是sessionID,第二个参数是输出识别的状态,第三个参数是与服务器交互的间隔时间,官方建议5000,我取为0,第四个参数是调用状态返回值ret,最后这个函数的返回值就是上面结果的json数据了
你在进行录音的时候,要使用“ffmpeg”录音,他是比较简单的,而且还能满足要求。这样你的linux离线语音识别系统就安装运行好了,就是这么的简单,但是也有一些里面需要注意的东西,就像刚才碰到的那些情况一样,如果再安装运行时还有其他错误,可以咨询哦。