資源簡介
項目接入語音識別技術進行語音控制請看博文教程:http://blog.csdn.net/sac761/article/details/52751370
本demo不是完整例子demo只是博文配套作者修改過的對應的一些代碼,學習離線語音識別,命令詞控制系統請看博文。

代碼片段和文件信息
/*
@file
@brief?基于錄音接口和MSC接口封裝一個MIC錄音識別的模塊
@author taozhang9
@date 2016/05/27
*/
#include?
#include?
#include?
#include?“../../include/qisr.h“
#include?“../../include/msp_cmn.h“
#include?“../../include/msp_errors.h“
#include?“./include/winrec.h“
#include?“./include/speech_recognizer.h“
#ifdef?_WIN64
//#pragma?comment(lib“../../lib/msc_x64.lib“)?//x64
#else
#pragma?comment(lib“C:/of_v0.9.0_vs_release/examples/AR/MarkerAR/lib/msc.lib“)?//x86
#endif
#define?SR_DBGON?0
#if?SR_DBGON?==?1
# define?sr_dbg?printf
//# define?__FILE_SAVE_VERIFY__??/*?save?the?recording?data?into?file?‘rec.pcm‘?too?*/
#else
# define?sr_dbg
#endif
#define?DEFAULT_FORMAT \
{\
WAVE_FORMAT_PCM \
1 \
16000 \
32000 \
2 \
16 \
sizeof(WAVEFORMATEX) \
}
/*?internal?state?*/
enum?{
SR_STATE_INIT
SR_STATE_STARTED
};
/*?for?debug.?saving?the?recording?to?a?file?*/
#ifdef?__FILE_SAVE_VERIFY__
#define?VERIFY_FILE_NAME “rec.pcm“
static?int?open_stored_file(const?char?*?name);
static?int?loopwrite_to_file(char?*data?size_t?length);
static?void?safe_close_file();
#endif
#define?SR_MALLOC?malloc
#define?SR_MFREE??free
#define?SR_MEMSET memset
#ifdef?__FILE_SAVE_VERIFY__
static?FILE?*fdwav?=?NULL;
static?int?open_stored_file(const?char?*?name)
{
fdwav?=?fopen(name?“wb+“);
if(fdwav?==?NULL)?{
printf(“error?open?file?failed\n“);
return?-1;
}
return?0;
}
static?int?loopwrite_to_file(char?*data?size_t?length)
{
size_t?wrt?=?0?already?=?0;
int?ret?=?0;
if(fdwav?==?NULL?||?data?==?NULL)
return?-1;
while(1)?{
wrt?=?fwrite(data?+?already?1?length?-?already?fdwav);
if(wrt?==?(length?-?already)?)
break;
if(ferror(fdwav))?{
ret?=?-1;
break;
}
already?+=?wrt;
}
return?ret;
}
static?void?safe_close_file()
{
if(fdwav)?{
fclose(fdwav);
fdwav?=?NULL;
}
}
#endif
static?void?end_sr_on_error(struct?speech_rec?*sr?int?errcode)
{
if(sr->aud_src?==?SR_MIC)
stop_record(sr->recorder);
if?(sr->session_id)?{
if?(sr->notif.on_speech_end)
sr->notif.on_speech_end(errcode);
QISRSessionEnd(sr->session_id?“err“);
sr->session_id?=?NULL;
}
sr->state?=?SR_STATE_INIT;
#ifdef?__FILE_SAVE_VERIFY__
safe_close_file();
#endif
}
static?void?end_sr_on_vad(struct?speech_rec?*sr)
{
int?errcode;
int?ret;
const?char?*rslt;
if?(sr->aud_src?==?SR_MIC)
stop_record(sr->recorder);
sr->state?=?SR_STATE_INIT;
ret?=?QISRAudioWrite(sr->session_id?NULL?0?MSP_AUDIO_SAMPLE_LAST?&sr->ep_stat?&sr->rec_stat);
/*if?(ret?!=?0)?{
sr_dbg(“write?LAST_SAMPLE?failed:?%d\n“?ret);
QISRSessionEnd(sr->session_id?“write?err“);
return?ret;
}*/
sr->rec_stat?=?MSP_AUDIO_SAMPLE_CONTINUE;
while(sr->rec_stat?!=?MSP_REC_STATUS_COMPLETE?){
rslt?=?QISRGetResult(sr->session_id?&sr->rec_stat?0?&errcode);
if?(rslt?&&?sr->notif.on_result)
sr->noti
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2847??2016-10-07?16:43??asr_record_demo\include\speech_recognizer.h
?????文件???????2922??2016-06-26?23:54??asr_record_demo\include\winrec.h
?????文件??????11256??2016-10-06?16:32??asr_record_demo\speech_recognizer.c
?????文件??????11958??2016-10-06?13:39??asr_record_demo\winrec.c
?????目錄??????????0??2016-10-07?16:43??asr_record_demo\include
?????目錄??????????0??2016-10-07?21:42??asr_record_demo
-----------?---------??----------?-----??----
????????????????28983????????????????????6
- 上一篇:藍牙的測試方法和標準
- 下一篇:利用FSVM實現對手寫數字的識別
評論
共有 條評論