参考:http://www.xfyun.cn/doccenter/iOS
一、环境配置
1. 下载SDK,省略
2. 添加SDK,general->linked frameworks and libraries
ibz.dylib,CoreTelephoney.framework不要遗漏。
注:如果使用的是离线识别,还需要增加libc++.dylib。
3. 配置SDK路径: Build Setting->Search paths->Framework Search Paths
$(inherited) $(PROJECT_DIR)/testXunfeiCloud/lib
注意下面的那个路径是下载的framework的路径
4. 真机bitcode的错误
需要在Build Setting -> build option -> enable bitcode 中设置
5. 集成帮助文档到 xcode
下面两种方式都没有成功
5.1 Finder->应用程序->Xcode->显示包内容->Content->Developer->Documentation->DocSets
5.2. 终端中,切换到下载的库中的doc目录
运行命令
cp -R -f -a com.iflytek.IFlyMSC.docset ~/Library/Developer/Shared/Documentation/DocSets/
二、代码开发
1. 导入头文件
//带界面的语音识别控件 #import "iflyMSC/IFlyRecognizerViewDelegate.h" #import "iflyMSC/IFlyRecognizerView.h" //不带界面的语音识别控件 #import "iflyMSC/IFlySpeechRecognizerDelegate.h" #import "iflyMSC/IFlySpeechRecognizer.h" //其它 #import "iflyMSC/IFlySpeechUtility.h" #import "iflyMSC/IFlySpeechConstant.h"
2. 初始化
必须在初始化后才可以使用语音服务,初始化是异步过程,推荐在程序入口处调用。
//将“12345678”替换成您申请的APPID。 NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@"12345678"]; [IFlySpeechUtility createUtility:initString];
声明对象和代理
@interface ViewController ()< IFlyRecognizerViewDelegate > { IFlyRecognizerView *_iflyRecognizerView; }
启动
- (void) startRecognizer { NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@""]; [IFlySpeechUtility createUtility:initString]; if (!_iflyRecognizerView) { //初始化语音识别控件 _iflyRecognizerView = [[IFlyRecognizerView alloc] initWithCenter:self.view.center]; [self.view addSubview:_iflyRecognizerView]; _iflyRecognizerView.delegate = self; [_iflyRecognizerView setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]]; //asr_audio_path保存录音文件名,如不再需要,设置value为nil表示取消,默认目录是documents [_iflyRecognizerView setParameter:nil forKey:[IFlySpeechConstant ASR_AUDIO_PATH]]; } //启动识别服务--每次识别完成,或者隔一段时间,就要重启启动一次 [_iflyRecognizerView start]; } /*识别结果返回代理 @param resultArray 识别结果 @ param isLast 表示是否最后一次结果 */ - (void)onResult: (NSArray *)resultArray isLast:(BOOL) isLast { NSLog(@"%@",resultArray); } /*识别会话错误返回代理 @ param error 错误码 */ - (void)onError: (IFlySpeechError *) error { //NSLog(@"%@",error); [self startRecognizer]; }
不带界面
- (void) startRecognizerNoView { if (!m_flySpeechRecognizer) { NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@""]; [IFlySpeechUtility createUtility:initString]; //初始化语音识别控件 m_flySpeechRecognizer = [IFlySpeechRecognizer sharedInstance] ; m_flySpeechRecognizer.delegate = self; [m_flySpeechRecognizer setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]]; //[m_flySpeechRecognizer setParameter: @"iat" forKey: [IFlySpeechConstant LANGUAGE]]; [m_flySpeechRecognizer setParameter: @"plain" forKey: [IFlySpeechConstant RESULT_TYPE]]; //asr_audio_path保存录音文件名,如不再需要,设置value为nil表示取消,默认目录是documents [m_flySpeechRecognizer setParameter:nil forKey:[IFlySpeechConstant ASR_AUDIO_PATH]]; } //启动识别服务--每次识别完成,或者隔一段时间,就要重启启动一次 [m_flySpeechRecognizer startListening]; }
语音识别是按照一段语音文件来识别的,不是一直不停地识别。所以就有个开始和结束。