1.demo自帶的document文件(詳細的參數設置及api講解)
2.重要參數講解(doc中)
2.1設置語音識別模式TBDV oiceRecognitionProperty(18種不同的識別垂類)
BOOL res= [[BDVoiceRecognitionClientsharedInstance]setPropertyList: @[]];
用處:如果貴公司搜索業務是屬于18種類型中的某一種,可以采用,否則慎用。
原理:若設置了某一類(如地圖),百度會現在你設置的地圖類詞庫中優先搜索,若搜索到就匹配轉義,若沒有,繼續去大詞庫做循環查找。
結果:若公司的搜索業務只是一般的關鍵詞,或者不在18中垂直類型里,建議不設置(可以不設置默認就是輸入EVoiceRecognitionPropertyInput),否則會導致識別時間稍長和準確率偏低(已踩坑)。
2.2當前支持3種不同的識別語言:普通話、粵語和美式英文,(可以不設置默認)為普通話,取值參見BDVoiceRecognitionClient.h中的枚舉類型。
[[BDVoiceRecognitionClientsharedInstance]setLanguage:];
2.3錄音開始提示音和結束提示音(在開始語音識別前,配置 示音的開關)
具體見doc圖片文件
a.引入提示音 文件
b.打開播放 提示音的開關
2.4其他設置
禁用標點符號,(可以不設置)默認為不禁用。
[[BDVoiceRecognitionClientsharedInstance]disablePuncs:YES];
設置是否對語音進行端點檢測,(可以不設置)默認開啟。如進行端點檢測,SDK會自動判斷說話是否結束,從而停止錄音;否則,需要調用speakFinish顯式結束識別錄音。
[[BDVoiceRecognitionClientsharedInstance]setNeedVadFlag:YES];
設置是否對上傳的語音進行壓縮,(可以不設置)默認開啟。壓縮語音會節約手機流量,但是會消耗CPU資源。
[[BDVoiceRecognitionClientsharedInstance]setNeedCompressFlag:YES];
設置在線識別的響應等待時間,如果超時,觸發同步離線識別。
[[BDVoiceRecognitionClientsharedInstance]setOnlineWaitTime:5];
3.重要API講解(doc中)
3.1開始語音識別需要配置參數,具體配置可參考開發包頭文件中的說明。開發者信息ApiKey
和SecretKey為必須配置項,其余可選。設置方式如下:
[[BDVoiceRecognitionClientsharedInstance]setApiKey:@"apiKey "withSecretKey:@”se
cretKey”];
3.2開始語音API(設置自己為代理,也就可以任意耍了 轉義 錯誤 網絡情況)
[BDVoiceRecognitionClientsharedInstance]startVoiceRecognition:self];
3.3啟動語音識別:此操作將會啟動錄音,預處理和網絡通訊三個模塊的工作(3個都是可選協議方法)。
a.啟動語音(接收語音識別的結果):這里建議采用demo中的方式
//開始語音識別功能,之前必須實現MVoiceRecognitionClientDelegate協議中的-(void)VoiceRecognitionClientWorkStatus:(int)aStatus obj:(id)aObj方法
感興趣的同學可以打斷點調試每個方法的執行順序,一方面加深代理方法的調用順序,另一方面可以在某個具體的枚舉方法中實現自己需要的某些效果。
ps:
intstartStatus = -1;
startStatus = [[BDVoiceRecognitionClientsharedInstance]startVoiceRecognition:self];
if(startStatus !=EVoiceRecognitionStartWorking)//創建失敗則報告錯誤
{
NSString*statusString = [NSStringstringWithFormat:@"%d",startStatus];
[selfperformSelector:@selector(firstStartError:)withObject:statusStringafterDelay:0.3];//延遲0.3秒,以便能在出錯時正常刪除view
return;
}
…
b.如果應用程序需要監聽BDVRClient識別過程中的網絡狀態,需要實現如下方法,代碼如下:
- (void)VoiceRecognitionClientNetWorkStatus:(int) aStatus{
switch (aStatus){
case EVoiceRecognitionClientNetWorkStatusStart:{
// 底層網絡通訊模塊通訊開始,用戶可以在狀態條中顯示菊花轉等等, 示用戶
break;}
case EVoiceRecognitionClientNetWorkStatusEnd:{
//底層網絡通訊模塊通訊完成,同樣此狀態可以在UI上給用戶 示break;
}}
}
c.BDVRClient識別中發生錯誤后,如果應用程序需要得到更加詳細的錯誤信息,需要實現如下方法,具體的錯誤類型說明參考表4(doc文檔)。
- (void)VoiceRecognitionClientErrorStatus:(int) aStatus subStatus:(int)aSubStatus{
switch (aStatus){
case EVoiceRecognitionClientErrorStatusClassVDP:{
//語音數據處理出錯switch (aSubStatus){
case EVoiceRecognitionClientErrorStatusNoSpeech:{
//用戶未說話
break;}
//其他case}
break;}
case EVoiceRecognitionClientErrorStatusClassRecord:{
//錄音出錯
break;}
case EVoiceRecognitionClientErrorStatusClassLocalNet:{
//網絡出錯break;
}
case EVoiceRecognitionClientErrorStatusClassServerNet:{
//服務器返回錯誤
break;}