Linux下语音识别小总结
作者:网络转载 发布时间:[ 2014/12/26 13:50:32 ] 推荐标签: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
", 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
", 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
");
return -1;
}
unsigned int len = (unsigned int)fread(UserData, 1, MAX_KEYWORD_LEN, fp);
UserData[len] = 0;
fclose(fp);
const char* testID = QISRUploadData(sessionID, "contact", UserData, len, "dtt=keylist", &ret);
if(ret != MSP_SUCCESS)
{
printf("QISRUploadData with errorCode: %d
", ret);
return ret;
}
memcpy((void*)GrammarID, testID, strlen(testID));
printf("GrammarID: "%s"
", GrammarID);
QISRSessionEnd(sessionID, "normal");
return 0;
}
|
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11