语音识别实践 之 科大讯飞
参考: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];
}
语音识别是按照一段语音文件来识别的,不是一直不停地识别。所以就有个开始和结束。
浙公网安备 33010602011771号