科大訊飛簡(jiǎn)單的語(yǔ)音識(shí)別

最近需要做一個(gè)語(yǔ)言搜索的功能,所以需要用到語(yǔ)言識(shí)別的SDK,最終選擇科大訊飛的SDK.

科大訊飛APPkey的獲取直接申請(qǐng)應(yīng)用就可以了

集成SDK主要參考官方文檔:http://doc.xfyun.cn/msc_ios/302721,基本不會(huì)有問(wèn)題

下面主要是記錄代碼部分:

1.首先需要在appdelegate的didFinishLaunchingWithOptions方法中啟用訊飛的SDK

代碼運(yùn)行

2.新建一個(gè)類,初始化IFlySpeechRecognizer

語(yǔ)音.h文件


初始化識(shí)別IFlySpeechRecognizer

3.sdk識(shí)別出來(lái)的是一串json字符串,所以還需要一個(gè)方法將字符串里的字符提取出來(lái)

```/**

?解析聽(tīng)寫json格式的數(shù)據(jù)

?params例如:

?{"sn":1,"ls":true,"bg":0,"ed":0,"ws":[{"bg":0,"cw":[{"w":"白日","sc":0}]},{"bg":0,"cw":[{"w":"依山","sc":0}]},{"bg":0,"cw":[{"w":"盡","sc":0}]},{"bg":0,"cw":[{"w":"黃河入海流","sc":0}]},{"bg":0,"cw":[{"w":"。","sc":0}]}]}

?*/

-(NSString*)getResultFromJson:(NSString*)params

{

? ? if(params ==NULL) {

? ? ? ? returnnil;

? ? }

? ? NSString *tempStr = [[NSString alloc] init];


? ? //返回的格式必須為utf8的,否則發(fā)生未知錯(cuò)誤

? ? NSString*jsonString = params;


? ? tempStr = [selfVoiceConversionString:jsonString];


? ? returntempStr;

}

- (NSString*)VoiceConversionString:(NSString*)jsonString{


? ? NSDictionary*values =? [JKJsonHelpertoJsonObject:jsonString];

? ? NSMutableString *discourse = [NSMutableString string];

? ? NSArray*ws = [valuesobjectForKey:@"ws"];

? ? for(NSDictionary*dicinws) {

? ? ? ? NSArray*cw = [dicobjectForKey:@"cw"];

? ? ? ? for(NSDictionary*secDicincw) {

? ? ? ? ? ? NSString*w = [secDicobjectForKey:@"w"];

? ? ? ? ? ? [discourseappendString:w];

? ? ? ? }

? ? }? ? returndiscourse;

}```

4.在需要的view里調(diào)用創(chuàng)建這個(gè)類并設(shè)置delegate

```

?self.voiceSearchMVVM = [JKVoiceSearchMVVM create];

? ? _voiceRecognition? = [NSString string];? // 保存識(shí)別的字符串

? ? ? ? [self.loading setupAlpha:0.8];

?? ? self.voiceSearchMVVM.iflySpeechRecognizer.delegate = self;

```

5.開(kāi)啟語(yǔ)音識(shí)別

```

bool ret = [self.voiceSearchMVVM.iflySpeechRecognizer startListening];

? ? if(ret) {

? ? ? // 開(kāi)啟成功

? ? ? ? self.wavesView.hidden=NO;

? ? ? ? [self.waveViewwave];

? ? }

? ? else

? ? {

? ? ? ? self.wavesView.hidden=YES;

? ? ? ? // 開(kāi)啟失敗

? ? ? ? [self showToast:@"啟動(dòng)識(shí)別服務(wù)失敗,請(qǐng)稍后重試"];

}

```

6.停止語(yǔ)音識(shí)別

```

? ? if (self.voiceSearchMVVM.iflySpeechRecognizer.isListening) {

?? ? ? ? [self.voiceSearchMVVM.iflySpeechRecognizer stopListening];

? ? }

```

7.取消語(yǔ)音識(shí)別

```

?[self.voiceSearchMVVM.iflySpeechRecognizer cancel];

```

8.實(shí)現(xiàn)代理

- (void)onBeginOfSpeech

{

?DDLogDebug(@"開(kāi)始語(yǔ)音識(shí)別");

}

- (void)onVolumeChanged:(int)volume{

// 語(yǔ)音聲音大小

}

- (void)onResults:(NSArray*)results isLast:(BOOL)isLast{

// 語(yǔ)音結(jié)果識(shí)別后回調(diào),因?yàn)檎Z(yǔ)音識(shí)別是一段段識(shí)別,所以應(yīng)保存所有識(shí)別的語(yǔ)句,當(dāng)isLast為yes時(shí)才算識(shí)別完成

? ? if(results)

? ? {

? ? ? ? NSMutableString *resultString = [[NSMutableString alloc] init];

? ? ? ? NSDictionary*dic = results[0];

? ? ? ? for(NSString*keyindic)

? ? ? ? {

? ? ? ? ? ? [resultStringappendFormat:@"%@",key];

? ? ? ? }

? ? ? ? NSString* resultFromJson =? [self.voiceSearchMVVMgetResultFromJson:resultString];

? ? ? ? _voiceRecognition = [_voiceRecognition stringByAppendingString:resultFromJson];

? ? }

? ? if(isLast)

? ? {

? ? ? ? if (_voiceRecognition.length>0) {

? ? ? ? ? ? int64_tdelayInSeconds =1.0;? ? ? // 延遲的時(shí)間

? ? ? ? ? ? dispatch_time_tpopTime =dispatch_time(DISPATCH_TIME_NOW, delayInSeconds *NSEC_PER_SEC);

? ? ? ? ? ? dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

// 識(shí)別成功

? ? ? ? ? ? });

? ? ? ? }else{


? ? ? ? ? ? int64_tdelayInSeconds =1.0;? ? ? // 延遲的時(shí)間

? ? ? ? ? ? dispatch_time_tpopTime =dispatch_time(DISPATCH_TIME_NOW, delayInSeconds *NSEC_PER_SEC);

? ? ? ? ? ? dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

// 識(shí)別失敗

? ? ? ? ? ? });

? ? ? ? }


? ? }

? ? DDLogDebug(@"isLast=%d",isLast);

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容