在iPhone项目中使用讯飞语音SDK实现语音识别和语音合成
2014-05-29 10:19
375 查看
现在很多手机应用中都出现了语音功能,比如:QQ音乐的语音输入进行搜素、google的语音、最近中国移动联合讯飞发布的《灵犀》手机应用,都有集成语音的功能,而且识别率也是非常的不错,比如《灵犀》中的可以通过语音实现发送短信、拨打电话功能(离线可使用),自己使用了一下,还是比较的方便,而对于一些更高级的功能却会需要在联网的情况下才能使用(查询天气、查询股票、上网搜索、听新闻、地图导航、翻译以及聊天等等功能)。大致介绍了一些,就进入正题,下面讲一讲如何使用讯飞的语音SDK加入到你的iPhone应用中吧 1.首先请先到。如果你还没有注册,那么需要先注册一个开发者账号的。点击网站顶部的“免费注册”即可,使用你的自己的手机号码注册一个账号。 2.仅仅注册了一个开发者账号还可以使用SDK,因为还需要申请Appid。登陆之后到自己的个人中心创建一个应用填写好相关信息,然后等待审核通过,因为只有审核通过之后,你才可以下载讯飞语音的SDK。如下: 3.如果你的应用已经审核通过,点击SDK下载,并且选择对应平台的SDK,比如现在选择iphone平台SDK下载。 4.下载好了之后,你会看到一个压缩包,解压出来有四个文件, 其中sample就是讯飞提供的DEMO了,打开项目,你会看到这样的目录结构: 直接运行,并没有错误,只有几个警告,运行界面如下: 5.那么怎么在自己的项目中使用呢?其实还是非常简单的。讯飞也有提供相关的开发文档,还是比较详细。在开发者专区和下载专区都有文档可供下载。 6.新建一个iPhone 项目吧。新建好了之后,需要先导入需要的lib,如下: 其中需要说明的是,iflyMSC.framework这个lib就在你下载的SDK解压文件下的lib文件夹下。在添加lib的界面选择Add Others...,并且选择你下载的lib。点击Open,就能正确添加。 7.一些函数和配置的说明: 在你需要使用SDK的头文件中导入文件: #import "iFlyMSC/IFlyRecognizeControl.h" #import "iFlyMSC/IFlysynthesizerControl.h" 复制代码 创建一个识别控件或者合成控件: IFlyRecognizeControl *_iFlyRecognizeController; //識別控件 IFlySynthesizerControl *_iFlySynthesizerControl; //合成控件 复制代码 在实现文件初始化控件: //初始化語音識別控件 _iFlyRecognizeController = [[IFlyRecognizeControl alloc] initWithOrigin:CGPointMake(20, 70) initParam:initPara]; [self.view addSubview:_iFlyRecognizeController]; //Configure [_iFlyRecognizeController setEngine:@"sms" engineParam:nil grammarID:nil]; [_iFlyRecognizeController setSampleRate:16000]; [_iFlyRecognizeController setDelegate:self]; [_iFlyRecognizeController setShowLog:NO]; //註冊unActive事件 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resignActive) name:UIApplicationWillResignActiveNotification object:nil]; //初始化語音合成控件 _iFlySynthesizerControl = [[IFlySynthesizerControl alloc] initWithOrigin:CGPointMake(20, 70) initParam:initPara]; //Configure [_iFlySynthesizerControl setDelegate:self]; [_iFlySynthesizerControl setVoiceName:@"vixm"]; //發音人(中英文粵語) [self.view addSubview:_iFlySynthesizerControl]; //show UI [_iFlySynthesizerControl setShowUI:YES]; //show log [_iFlySynthesizerControl setShowLog:NO]; //註冊unActive事件 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resignactiveOfSynthesizer) name:UIApplicationWillResignActiveNotification object:nil]; 复制代码 一些回调函数和方法: //識別結束回調函數-會話過程結束調用此函數 - (void)onRecognizeEnd:(IFlyRecognizeControl *)iFlyRecognizeControl theError:(int)error { [_recognizeButton setEnabled:YES]; [_synthesizerButton setEnabled:YES]; NSLog(@"識別結束"); NSLog(@"上傳流量:%d,下載流量:%d",[iFlyRecognizeControl getUpflow:FALSE],[iFlyRecognizeControl getDownflow:FALSE]); } //識別結果回調函數 - (void)onResult:(IFlyRecognizeControl *)iFlyRecognizeControl theResult:(NSArray *)resultArray { NSString *strResult = [[resultArray objectAtIndex:0] objectForKey:@"NAME"]; NSLog(@"識別的結果是:%@",strResult); } //開始語音識別 - (void)onButtonRecognize { if ([_iFlyRecognizeController start]) { [_recognizeButton setEnabled:NO]; [_synthesizerButton setEnabled:NO]; } } //不支持後台模式則在unActive事件時執行cancel - (void)resignActive { [_iFlyRecognizeController cancel]; } //合成回調函數,執行cancel函數整個會話結束調用此函數 - (void)onSynthesizerEnd:(IFlySynthesizerControl *)iFlySynthesizerControl theError:(int)error { [_synthesizerButton setEnabled:YES]; [_recognizeButton setEnabled:YES]; NSLog(@"結束"); NSLog(@"上傳流量:%d,下載流量:%d",[iFlySynthesizerControl getUpflow:FALSE],[iFlySynthesizerControl getDownflow:FALSE]); } //獲取播放器緩衝進度 - (void)onSynthesizerBufferProgress:(float)bufferProgress { NSLog(@"當前緩衝進度:%f",bufferProgress); } //獲取播放器播放進度 - (void)onSynthesizerPlayProgress:(float)playProgress { NSLog(@"當前播放進度:%f",playProgress); } //開始語音合成 - (void)onButtonSynthesizer { [_iFlySynthesizerControl setText:@"哈哈,这仅仅是一个测试合成功能的例子而已,你不用太紧张会发生什么特别的事情。谢谢" params:nil]; if ([_iFlySynthesizerControl start]) { [_recognizeButton setEnabled:NO]; [_synthesizerButton setEnabled:NO]; } else { NSLog(@"I'm sorry,start error. "); } } //不支持後台模式則unActive事件時執行cancel - (void)resignactiveOfSynthesizer { NSLog(@"resignActive"); [_iFlySynthesizerControl cancel]; } 复制代码 其中下列方法可以在自己需要开始使用语音功能的地方调用,比如: _recognizeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; _synthesizerButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [_recognizeButton setFrame:CGRectMake(70, 100, 180, 60)]; [_synthesizerButton setFrame:CGRectMake(70, 200, 180, 60)]; [_recognizeButton setTitle:@"開始語音識別" forState:UIControlStateNormal]; [_synthesizerButton setTitle:@"開始語音合成" forState:UIControlStateNormal]; [_recognizeButton addTarget:self action:@selector(onButtonRecognize) forControlEvents:UIControlEventTouchDown]; [_synthesizerButton addTarget:self action:@selector(onButtonSynthesizer) forControlEvents:UIControlEventTouchDown]; [self.view addSubview:_recognizeButton]; [self.view addSubview:_synthesizerButton]; //開始語音識別 - (void)onButtonRecognize { if ([_iFlyRecognizeController start]) { [_recognizeButton setEnabled:NO]; [_synthesizerButton setEnabled:NO]; } } //開始語音合成 - (void)onButtonSynthesizer { [_iFlySynthesizerControl setText:@"这仅仅是一个测试合成功能的例子,你不用太紧张会发生什么" params:nil]; if ([_iFlySynthesizerControl start]) { [_recognizeButton setEnabled:NO]; [_synthesizerButton setEnabled:NO]; } else { NSLog(@"I'm sorry,start error. "); } } 复制代码 8.到这里已经可以使用语音识别和合成功能了。 |
相关文章推荐
- 在iPhone项目中使用讯飞语音SDK实现语音识别和语音合成
- 在iPhone项目中使用讯飞语音SDK实现语音识别和语音合成
- iphone之使用讯飞语音sdk实现语音识别功能
- iphone之使用讯飞语音sdk实现语音识别功能
- iphone之使用讯飞语音sdk实现语音识别功能
- iphone之使用讯飞语音sdk实现语音识别功能
- 使用svn管理iphone项目源码
- 使用Log4j为项目配置日志输出应用详解以及示例演示的实现分析
- 使用ant实现svn管理得eclipse插件开发项目的日构建功能(ant1.7.1+svn1.6.3+eclipse3.4.2)
- 使用ant实现svn管理得eclipse插件开发项目的日构建功能(ant1.7.1+svn1.6.3+eclipse3.4.2)
- Spring security 在项目中的使用第二篇之代码实现阶段
- iPhone项目使用静态库的最佳方法
- 使用Spring中的IoC功能来实现我们所开发项目系统的国际化
- 在vista下使用语音合成,语音识别体会(一)
- iPhone项目使用静态库的最佳方法
- iPhone项目中使用OpenCV教程
- iPhone项目使用静态库的最佳方法
- iCopy实现iPhone复制粘贴功能使用教程
- 项目开发技巧(四):使用JspSmartupload实现文件上传下载(三):jspsmartupload samples
- NHibernate+WCF项目实战(二)使用NHibernate实现数据访问并进行单元测试