百度語音SDK(離在線語音識別2(識別模式及識別錯誤設置))

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;}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容