可參照iOS百度語(yǔ)音識(shí)別開發(fā)文檔完成相關(guān)配置
一、接入指南
先引入編譯需要的Framework:
AudioToolbox.framework
AVFoundation.framework
SystemConfiguration.framework
CoreTelephony.framework
Security.framework
libz.1.tbd
CFNetwork.framework
CoreLocation.framework
OpenGLES.framework
QuartzCore.framework
GLKit.framework
CoreGraphics.framework
CoreText.framework?
注意事項(xiàng):
1.注意 JSONKit.m 使用非arc方式編譯齿兔,需在Build Phases-> Compile Sources->JSONKit.m 的 Compiler Flags 中添加 -fno-objc-arc橱脸, 若在xcode7上編譯過(guò)程中,運(yùn)行到 JSONKit文件中這一句
void? *objectISA? = (JK_EXPECT_F(workAroundMacOSXABIBreakingBug)) ? NULL : *((void **)objectPtr); ?的時(shí)候程序就崩潰分苇,那么 JSONKit 的版本有點(diǎn)低添诉,下載最新的JSONKit文件將其替換即可;
2.設(shè)置App Transport Security组砚,在項(xiàng)目的info.plist中吻商,添加NSAppTransportSecurity,然后在NSAppTransportSecurity 下選擇 Allow Arbitrary Loads糟红,類型Boolean,值設(shè)為YES艾帐。
3.在BuildSettings中,設(shè)置Enable Bitcode為NO盆偿;
二柒爸、使用
在此僅使用的是BDVoiceRecognitionClient來(lái)進(jìn)行語(yǔ)音識(shí)別。
1.引入頭文件
#import "BDVoiceRecognitionClient.h"
2.配置 BDVoiceRecognitionClient
// 使用自己申請(qǐng)的應(yīng)用的ApiKey和SecretKey替換之
[[BDVoiceRecognitionClient sharedInstance]setApiKey:@"ApiKey"withSecretKey:@"SecretKey"];
[[BDVoiceRecognitionClient sharedInstance] setLanguage:EVoiceRecognitionLanguageChinese];
[[BDVoiceRecognitionClient sharedInstance] setResourceType:RESOURCE_TYPE_NLU];
[[BDVoiceRecognitionClient sharedInstance] setPropertyList:@[@(EVoiceRecognitionPropertyWeb)]];
if ([[BDVoiceRecognitionClient sharedInstance] isCanRecorder]) {
[[BDVoiceRecognitionClient sharedInstance] startVoiceRecognition:self];
}
3.遵守MVoiceRecognitionClientDelegate協(xié)議事扭,實(shí)現(xiàn)以下代理方法
根據(jù)不同的字段捎稚,可自行對(duì)結(jié)果進(jìn)行處理
- (void)VoiceRecognitionClientWorkStatus:(int) aStatus obj:(id)aObj{
? ? ? ? switch (aStatus) {
? ? ? ? ? ? ? ? ? ? case EVoiceRecognitionClientWorkStatusStartWorkIng:
? ? ? ? ? ? ? ? ? ? NSLog(@"開始錄音");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ?case EVoiceRecognitionClientWorkStatusStart:
? ? ? ? ? ? ? ? ? ?NSLog(@"檢測(cè)到用戶開始說(shuō)話");
? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ?case EVoiceRecognitionClientWorkStatusEnd:
? ? ? ? ? ? ? ? ? ?NSLog(@"結(jié)束錄音");
? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ?case EVoiceRecognitionClientWorkStatusFinish:
? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ?// 此處返回識(shí)別結(jié)果
? ? ? ? ? ? ? ? ? ? ? ? ? ? NSLog(@"語(yǔ)音識(shí)別功能完成,服務(wù)器返回正確結(jié)果");
? ? ? ? ? ? ? ? ? ? ? ? ? ?NSString * string = [aObj JSONString];
? ? ? ? ? ? ? ? ? ? ? ? ? ?NSLog(@"識(shí)別結(jié)果: %@",string);
? ? ? ? ? ? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? break;
? ? ? ? ?}
}
- (void)VoiceRecognitionClientErrorStatus:(int) aStatus subStatus:(int)aSubStatus{
? ? ? ? ? ? ? ? switch (aStatus) {
? ? ? ? ? ? ? ? case EVoiceRecognitionClientErrorStatusClassVDP:
? ? ? ? ? ? ? ? NSLog(@"語(yǔ)音數(shù)據(jù)處理過(guò)程出錯(cuò)");
? ? ? ? ? ? ? ? break;?
? ? ? ? ? ? ? ?case EVoiceRecognitionClientErrorStatusUnKnow:
? ? ? ? ? ? ? ?NSLog(@"未知錯(cuò)誤(異常)");
? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? ?case EVoiceRecognitionClientErrorStatusNoSpeech:
? ? ? ? ? ? ? ?NSLog(@"用戶未說(shuō)話");
? ? ? ? ? ? ? ?break;
? ? ? ? ? ? ? case EVoiceRecognitionClientErrorStatusShort:
? ? ? ? ? ? ? NSLog(@"用戶說(shuō)話聲音太短");
? ? ? ? ? ? ? break;
? ? ? ? ? ? ? case EVoiceRecognitionClientErrorStatusException:
? ? ? ? ? ? ? NSLog(@"語(yǔ)音前端庫(kù)檢測(cè)異常");
? ? ? ? ? ? ? break;
? ? ? ? ? ? ? case EVoiceRecognitionClientErrorStatusClassRecord:
? ? ? ? ? ? ?NSLog(@"錄音出錯(cuò)");
? ? ? ? ? ? ?break;
? ? ? ? ? ? ?case EVoiceRecognitionClientErrorStatusClassLocalNet:
? ? ? ? ? ? ?NSLog(@"本地網(wǎng)絡(luò)聯(lián)接出錯(cuò)");
? ? ? ? ? ? ?break;
? ? ? ? ? ? ?case EVoiceRecognitionClientErrorStatusClassServerNet:
? ? ? ? ? ? ?NSLog(@"服務(wù)器返回網(wǎng)絡(luò)錯(cuò)誤");
? ? ? ? ? ? ?break;
? ? ? ? ? ? ?default:
? ? ? ? ? ? ?break;
? ? ? ? ? ? }
}
- (void)VoiceRecognitionClientNetWorkStatus:(int) aStatus{
? ? ? ? ? ? ?switch (aStatus) {
? ? ? ? ? ? ?case EVoiceRecognitionClientNetWorkStatusStart:
? ? ? ? ? ? ?NSLog(@"網(wǎng)絡(luò)工作開始");
? ? ? ? ? ? ?break;
? ? ? ? ? ? ?case EVoiceRecognitionClientNetWorkStatusEnd:
? ? ? ? ? ? ? NSLog(@"網(wǎng)絡(luò)工作完成");
? ? ? ? ? ? ? break;
? ? ? ? ? ? ? default:
? ? ? ? ? ? ? break;
? ? ? ? ? ? ?}
}