linux下语音识别小总结

        我之前发过我的贪吃蛇的代码,我想把它变成语音控制上下左右的,于是选择科大讯飞的SDK,官方有一些文档,但有一些细节还是会让在linux下开发的孩子们产生困惑比如我,现在总结在此~

        首先下载科大讯飞的SDK-linux版本,需要注册先。。。在下载下来的include文件夹下,有四个文件:msp_errors.h  msp_types.h  qisr.h  qtts.h。前两个是通用的一些数据结构,剩下的qisr.h是语音识别用的头文件,qtts.h是语音合成用的头文件,因为我之需要语音识别的功能,只要在我的代码中include进qisr.h头文件就OK啦。在bin文件夹下比较乱,但主要就是libmsc.so和libspeex.so两个动态库,我直接把这两个动态库拷到/usr/lib里面。

         在bin文件夹下注意到一个asr_keywords_utf8.txt的文件,这个SDK的思路是这样:把自己想识别的文字写到asr_keywords_utf8.txt中,然后上传到讯飞的服务器上,然后返回一个GrammarID,据说上传一次“终身有效”,意思就是不让重复上传占用服务器空间,反正有了这个GrammarID以后在不同的程序中想识别相同的文字就直接用好了,比如我想识别“左,右,上,下,图书馆,独自”,把这些汉字写到asr_keywords_utf8.txt中,而且必须是utf-8的格式,当然在linux下默认如此。下面是我写的上传这个txt并获得GrammarID的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

#include <qisr.h>

#define TRUE 1
#define FALSE 0

int main()
{
	int ret = QISRInit("appid=xxxxxxx");
	if(ret != MSP_SUCCESS)
	{
		printf("QISRInit with errorCode: %d \n", ret);
		return 0;
	}
	char GrammarID[128];
	memset(GrammarID, 0, sizeof(GrammarID));
	const int MAX_KEYWORD_LEN = 4096;
	ret = MSP_SUCCESS;
	const char * sessionID = NULL;
	
	sessionID = QISRSessionBegin(NULL, "ssm=1,sub=asr", &ret);
	if(ret != MSP_SUCCESS)
	{
		printf("QISRSessionBegin with errorCode: %d \n", ret);
		return ret;
	}

	char UserData[MAX_KEYWORD_LEN];
	memset(UserData, 0, MAX_KEYWORD_LEN);
	FILE* fp = fopen("asr_keywords_utf8.txt", "rb");
	if (fp == NULL)
	{
		printf("keyword file cannot open\n");
		return -1;
	}
	unsigned int len 
  • 15
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值