? ? ? ? ? ? ? ? ? ? ? ? ? ? ?效果是把識(shí)別的語(yǔ)音展示在textFiled上
以下是官方集成文檔里面有的代碼,目的是導(dǎo)入支持的百度語(yǔ)音的內(nèi)置功能
#import "BDSEventManager.h"
#import "BDSASRDefines.h"
#import "BDSASRParameters.h"
#import "BDTheme.h"
#import "BDRecognizerViewParamsObject.h"
#import "BDRecognizerViewController.h"
#import "BDRecognizerViewDelegate.h"
以下是官方集成文檔里面有的代碼遗淳,是導(dǎo)入自己創(chuàng)建項(xiàng)目的各種數(shù)據(jù)
const NSString* API_KEY = @"mFCLdfgYO4C8bebaTxtgaYvU";
const NSString* SECRET_KEY = @"yuHUuEQE3pBhCI5t78BCas6xqK82gUQk";
const NSString* APP_ID =@"15204631";
定義屬性
@property (strong, nonatomic) BDSEventManager *asrEventManager;//注冊(cè)應(yīng)用
@property(nonatomic,strong)BDRecognizerViewController*recognizerViewController;//語(yǔ)音識(shí)別控制器
@property(nonatomic,strong)UITextField * inputTF;//定義一個(gè)文本框
@property(nonatomic,strong)UIButton * btn;//定義一個(gè)開(kāi)始語(yǔ)音按鈕
以下是viewDiedload里面的代碼
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? //初始化文本框的位置信息
? ? self.inputTF=[[UITextField alloc]initWithFrame:CGRectMake(50, 100, self.view.frame.size.width-100, 40)];
? ? //設(shè)置文本框的邊框的樣式
? ? self.inputTF.borderStyle=UITextBorderStyleRoundedRect;
? ? //把文本輸入框添加到主視圖上
? ? [self.viewaddSubview:self.inputTF];
? ? //初始化語(yǔ)音輸入按鈕的位置信息
? ? self.btn=[[UIButton alloc]initWithFrame:CGRectMake(100, 200, self.view.frame.size.width-200, 40)];
? ? //設(shè)置按鈕的背景顏色
? ? self.btn.backgroundColor=[UIColor redColor];
? ? //設(shè)置按鈕的標(biāo)題
? ? [self.btn setTitle:@"開(kāi)始語(yǔ)音識(shí)別" forState:UIControlStateNormal];
? ? //為按鈕添加事件
? ? [self.btn addTarget:self action:@selector(voiceRecgnize:) forControlEvents:UIControlEventTouchUpInside];
? ? //按鈕添加到主視圖
? ? [self.viewaddSubview:self.btn];
self.asrEventManager = [BDSEventManager createEventManagerWithName:BDS_ASR_NAME];
? ? //設(shè)置DEBUG_LOG的級(jí)別
? ? [self.asrEventManager setParameter:@(EVRDebugLogLevelTrace) forKey:BDS_ASR_DEBUG_LOG_LEVEL];
? ? //配置API_KEY 和 SECRET_KEY 和 APP_ID
? ? [self.asrEventManager setParameter:@[API_KEY, SECRET_KEY] forKey:BDS_ASR_API_SECRET_KEYS];
? ? [self.asrEventManager setParameter:APP_ID forKey:BDS_ASR_OFFLINE_APP_CODE];
? ? //配置端點(diǎn)檢測(cè)(二選一)
? ? NSString*modelVAD_filepath = [[NSBundle mainBundle]pathForResource:@"bds_easr_basic_model"ofType:@"dat"];
? ? [self.asrEventManager setParameter:modelVAD_filepath forKey:BDS_ASR_MODEL_VAD_DAT_FILE];
? ? [self.asrEventManager setParameter:@(YES) forKey:BDS_ASR_ENABLE_MODEL_VAD];
? ? //? ? ? [self configDNNMFE];
? ? //? ? [self.asrEventManager setParameter:@"15361" forKey:BDS_ASR_PRODUCT_ID];
? ? // ---- 語(yǔ)義與標(biāo)點(diǎn) -----
? ? // ---- 開(kāi)啟語(yǔ)義理解 -----
? ? [self.asrEventManager setParameter:@(YES) forKey:BDS_ASR_ENABLE_NLU];
? ? [self.asrEventManager setParameter:@"1536" forKey:BDS_ASR_PRODUCT_ID];
}
以下是觸發(fā)按鈕的方法
-(void)voiceRecgnize:(UIButton* )sender
{
?[self.asrEventManager setParameter:@"" forKey:BDS_ASR_AUDIO_FILE_PATH];
? ? BDRecognizerViewParamsObject *paramsObject = [[BDRecognizerViewParamsObject alloc] init];
? ? paramsObject.isShowTipAfterSilence = YES;
? ? paramsObject.isShowHelpButtonWhenSilence = NO;
? ? paramsObject.tipsTitle=@"您可以這樣問(wèn)";
? ? paramsObject.tipsList= [NSArray? arrayWithObjects:@"我要吃飯",@"我要買(mǎi)電影票",@"我要訂酒店",nil];
? ? paramsObject.waitTime2ShowTip=0.5;
? ? paramsObject.isHidePleaseSpeakSection = YES;
? ? paramsObject.disableCarousel=YES;
? ? self.recognizerViewController = [[BDRecognizerViewController alloc] initRecognizerViewControllerWithOrigin:CGPointMake(9, 80)
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? theme:nil
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? enableFullScreen:YES
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? paramsObject:paramsObject
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? delegate:self];
? ? [self.recognizerViewController startVoiceRecognition];
}
以下是語(yǔ)音識(shí)別結(jié)束后回調(diào)的方法搪缨,可以在此方法中獲取語(yǔ)音識(shí)別結(jié)果海蔽,協(xié)議的回調(diào)方法洪乍,以下有遵守協(xié)議的代理
- (void)onEndWithViews:(BDRecognizerViewController*)aBDRecognizerViewController withResult:(id)aResult
{
? ? NSLog(@"識(shí)別結(jié)果%@",aResult);
? ? NSString* res=[aResult[@"results_recognition"]firstObject];
? ? dispatch_async(dispatch_get_main_queue(), ^{
? ? ? ? self.inputTF.text=res;
? ? });
}
- (void)onError:(int)errClass errCode:(int)errCode errDescription:(NSString*)errDescription
{
? ? NSLog(@"識(shí)別錯(cuò)誤庆亡,error====%@",errDescription);
}
遵守協(xié)議
<BDRecognizerViewDelegate>
導(dǎo)入依賴(lài)庫(kù)支持
導(dǎo)入sdk時(shí)候回報(bào)錯(cuò)录煤,看看有沒(méi)有.a文件,如果有就刪掉
需要在info.plist文件中寫(xiě)入使用話(huà)筒的權(quán)限
Privacy - Microphone Usage Description? ? ? ? ? 請(qǐng)你打開(kāi)您的話(huà)筒權(quán)限荞胡,以便更精確的使用語(yǔ)音功能