关闭

ios开发大连讯飞语音sdk

359人阅读 评论(0) 收藏 举报

[IPHONE]在iPhone项目中使用讯飞语音SDK实现语音识别和语音合成

[复制链接]
   
 
跳转到指定楼层
楼主
发表于 2013-4-19 11:34:20|只看该作者|只看大图回帖奖励
本帖最后由 Koson 于 2013-4-19 11:35 编辑

     现在很多手机应用中都出现了语音功能,比如:QQ音乐的语音输入进行搜素、google的语音、最近中国移动联合讯飞发布的《灵犀》手机应用,都有集成语音的功能,而且识别率也是非常的不错,比如《灵犀》中的可以通过语音实现发送短信、拨打电话功能(离线可使用),自己使用了一下,还是比较的方便,而对于一些更高级的功能却会需要在联网的情况下才能使用(查询天气、查询股票、上网搜索、听新闻、地图导航、翻译以及聊天等等功能)。大致介绍了一些,就进入正题,下面讲一讲如何使用讯飞的语音SDK加入到你的iPhone应用中吧!

1.首先请先到讯飞官方网站的开发者专区http://open.voicecloud.cn/developer.php)。如果你还没有注册,那么需要先注册一个开发者账号的。点击网站顶部的“免费注册”即可,使用你的自己的手机号码注册一个账号。

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的头文件中导入文件:
  1. #import "iFlyMSC/IFlyRecognizeControl.h"
  2. #import "iFlyMSC/IFlysynthesizerControl.h"
复制代码
创建一个识别控件或者合成控件:
  1. IFlyRecognizeControl    *_iFlyRecognizeController;    //識別控件
  2. IFlySynthesizerControl  *_iFlySynthesizerControl;     //合成控件
复制代码
在实现文件初始化控件:
  1. //初始化語音識別控件
  2.     _iFlyRecognizeController = [[IFlyRecognizeControl alloc] initWithOrigin:CGPointMake(20, 70) initParam:initPara];
  3.     [self.view addSubview:_iFlyRecognizeController];
  4.    
  5.     //Configure
  6.     [_iFlyRecognizeController setEngine:@"sms" engineParam:nil grammarID:nil];
  7.     [_iFlyRecognizeController setSampleRate:16000];
  8.     [_iFlyRecognizeController setDelegate:self];
  9.     [_iFlyRecognizeController setShowLog:NO];
  10.    
  11.     //註冊unActive事件
  12.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resignActive) name:UIApplicationWillResignActiveNotification object:nil];
  13.    
  14.     //初始化語音合成控件
  15.     _iFlySynthesizerControl = [[IFlySynthesizerControl alloc] initWithOrigin:CGPointMake(20, 70) initParam:initPara];
  16.    
  17.     //Configure
  18.     [_iFlySynthesizerControl setDelegate:self];
  19.     [_iFlySynthesizerControl setVoiceName:@"vixm"];  //發音人(中英文粵語)
  20.     [self.view addSubview:_iFlySynthesizerControl];
  21.    
  22.     //show UI
  23.     [_iFlySynthesizerControl setShowUI:YES];
  24.    
  25.     //show log
  26.     [_iFlySynthesizerControl setShowLog:NO];
  27.    
  28.     //註冊unActive事件
  29.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resignactiveOfSynthesizer) name:UIApplicationWillResignActiveNotification object:nil];
复制代码
一些回调函数和方法:
  1. //識別結束回調函數-會話過程結束調用此函數
  2. - (void)onRecognizeEnd:(IFlyRecognizeControl *)iFlyRecognizeControl theError:(int)error
  3. {
  4.     [_recognizeButton setEnabled:YES];
  5.     [_synthesizerButton setEnabled:YES];
  6.     NSLog(@"識別結束");
  7.     NSLog(@"上傳流量:%d,下載流量:%d",[iFlyRecognizeControl getUpflow:FALSE],[iFlyRecognizeControl getDownflow:FALSE]);
  8. }

  9. //識別結果回調函數
  10. - (void)onResult:(IFlyRecognizeControl *)iFlyRecognizeControl theResult:(NSArray *)resultArray
  11. {
  12.     NSString *strResult = [[resultArray objectAtIndex:0] objectForKey:@"NAME"];
  13.     NSLog(@"識別的結果是:%@",strResult);
  14. }

  15. //開始語音識別
  16. - (void)onButtonRecognize
  17. {
  18.     if ([_iFlyRecognizeController start]) {
  19.         [_recognizeButton setEnabled:NO];
  20.         [_synthesizerButton setEnabled:NO];
  21.     }
  22. }

  23. //不支持後台模式則在unActive事件時執行cancel
  24. - (void)resignActive
  25. {
  26.     [_iFlyRecognizeController cancel];
  27. }

  28. //合成回調函數,執行cancel函數整個會話結束調用此函數
  29. - (void)onSynthesizerEnd:(IFlySynthesizerControl *)iFlySynthesizerControl theError:(int)error
  30. {
  31.     [_synthesizerButton setEnabled:YES];
  32.     [_recognizeButton setEnabled:YES];
  33.     NSLog(@"結束");
  34.     NSLog(@"上傳流量:%d,下載流量:%d",[iFlySynthesizerControl getUpflow:FALSE],[iFlySynthesizerControl getDownflow:FALSE]);
  35. }

  36. //獲取播放器緩衝進度
  37. - (void)onSynthesizerBufferProgress:(float)bufferProgress
  38. {
  39.     NSLog(@"當前緩衝進度:%f",bufferProgress);
  40. }

  41. //獲取播放器播放進度
  42. - (void)onSynthesizerPlayProgress:(float)playProgress
  43. {
  44.     NSLog(@"當前播放進度:%f",playProgress);
  45. }

  46. //開始語音合成
  47. - (void)onButtonSynthesizer
  48. {
  49.     [_iFlySynthesizerControl setText:@"哈哈,这仅仅是一个测试合成功能的例子而已,你不用太紧张会发生什么特别的事情。谢谢" params:nil];
  50.     if ([_iFlySynthesizerControl start]) {
  51.         [_recognizeButton setEnabled:NO];
  52.         [_synthesizerButton setEnabled:NO];
  53.     } else {
  54.         NSLog(@"I'm sorry,start error. ");
  55.     }
  56. }

  57. //不支持後台模式則unActive事件時執行cancel
  58. - (void)resignactiveOfSynthesizer
  59. {
  60.     NSLog(@"resignActive");
  61.     [_iFlySynthesizerControl cancel];
  62. }

复制代码
其中下列方法可以在自己需要开始使用语音功能的地方调用,比如:
  1. _recognizeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  2.     _synthesizerButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  3.     [_recognizeButton setFrame:CGRectMake(70, 100, 180, 60)];
  4.     [_synthesizerButton setFrame:CGRectMake(70, 200, 180, 60)];
  5.     [_recognizeButton setTitle:@"開始語音識別" forState:UIControlStateNormal];
  6.     [_synthesizerButton setTitle:@"開始語音合成" forState:UIControlStateNormal];
  7.    
  8.     [_recognizeButton addTarget:self action:@selector(onButtonRecognize) forControlEvents:UIControlEventTouchDown];
  9.     [_synthesizerButton addTarget:self action:@selector(onButtonSynthesizer) forControlEvents:UIControlEventTouchDown];
  10.    
  11.     [self.view addSubview:_recognizeButton];
  12.     [self.view addSubview:_synthesizerButton];

  13. //開始語音識別
  14. - (void)onButtonRecognize
  15. {
  16.     if ([_iFlyRecognizeController start]) {
  17.         [_recognizeButton setEnabled:NO];
  18.         [_synthesizerButton setEnabled:NO];
  19.     }
  20. }

  21. //開始語音合成
  22. - (void)onButtonSynthesizer
  23. {
  24.     [_iFlySynthesizerControl setText:@"这仅仅是一个测试合成功能的例子,你不用太紧张会发生什么" params:nil];
  25.     if ([_iFlySynthesizerControl start]) {
  26.         [_recognizeButton setEnabled:NO];
  27.         [_synthesizerButton setEnabled:NO];
  28.     } else {
  29.         NSLog(@"I'm sorry,start error. ");
  30.     }
  31. }
复制代码
8.到这里已经可以使用语音识别和合成功能了。如下:

0
0
查看评论

Android SDK大连东软镜像地址及地址列表

Android SDK更新大连东软镜像地址:mirrors.neusoft.edu.cn,端口:80 镜像地址列表URL: http://mirrors.neusoft.edu.cn/android/repository/addon-6.xml  http://mirrors.neu...
  • Jack_Leonardo
  • Jack_Leonardo
  • 2015-09-07 10:57
  • 1512

讯飞语音SDK继承简单使用

1. 导入SDK: 将开发工具包中libs目录下的Msc.jar和armeabi(实际还有多个文件,我们全部拷贝进来,以便机型适配)复制到Android工程的libs目录 2. 在项目build.gradle文件的android{}内,配置下面一段代码,同步一下gradle文件. sou...
  • Mr_Hu404
  • Mr_Hu404
  • 2017-09-06 19:07
  • 307

讯飞语音的语音听写功能实现的总结以及新手如何着手第三方SDK

讯飞语音的语音听写功能实现的总结以及新手如何着手第三方SDK 前言 {才知道前言和序言的区别,写文章的好处,吱吱} 由于本人最近有点小忙,所以没有更新博客。其实呢!我想说的是我的草稿箱都快要堆满了,只是感觉没有技术含量就不献丑了(内心独白:让一个语文几乎只有小学及格过的人写这种真...
  • pandayima
  • pandayima
  • 2017-08-08 00:38
  • 827

关于讯飞语音SDK开发学习

前奏,浑浑噩噩已经工作一年多,这一年多收获还是挺多的。逛园子应该有两年多了,工作后基本上是天天都会来园子逛逛,园子 里还是有很多牛人写了一些不错的博客,帮我解决很多问题。但是一直没写过博客,归根到底一个字“懒”,还有就是不知道该写 些什么... 今天把我最近研究讯飞语音东东,分享一下,不过有些...
  • qqh19910525
  • qqh19910525
  • 2016-03-04 08:53
  • 6455

Unity 接讯飞语音SDK

在上班时间一边接sdk ,一边总结接入语音sdk中出现的一些问题。拿来和大家分享一下, 不会写得很详细。 官方的sdk例子值得了解,并可以解决很多问题。  我在这里例举出几个自己犯下的错误 跟大家一起分享。  1.报单例创建失败的问题,参考 http://bbs.xfyun.cn...
  • morning_bird
  • morning_bird
  • 2017-04-17 14:11
  • 1780

讯飞语音测评SDK的搭建与运用(Android studio)

环境搭建::个人觉得讯飞的资料写的马马虎虎,不如BAT的,也不像ShareSDK一样可以免费的一对一的问。 解压SDK,找到要用的Lib文件夹: 一看便知有.jar的放到项目里的lib文件夹下。点开online 开发过百度地图的一看就明白要用到jni 所以要在mian目...
  • Coder_Hcy
  • Coder_Hcy
  • 2016-10-15 15:05
  • 2031

使用科大讯飞SDK实现语音功能

这篇文章是从我的笔记直接转过来的,大家将就看吧。 下面两个地址很有参考价值: 语音识别:http://www.tuicool.com/articles/NRF3a2 语音合成:http://www.daxueit.com/article/4422.html 科大讯飞开放地址:ht...
  • u011238639
  • u011238639
  • 2015-05-26 23:16
  • 2433

AndroidStudio科大讯飞语音接入辅助教程

现在很多应用中都加入了语音功能,通常情况下我们都是接入第三方的API进行实现,用的比较多的主要就是科大讯飞和百度的语音。此次针对AndroidStudio下接入科大讯飞语音写了个辅助教程,仅供参考。 科大讯飞的开发平台:http://www.xfyun.cn/ 具体的注册,申请为开发者,我就不多...
  • IT_faquir
  • IT_faquir
  • 2016-11-22 14:48
  • 4877

iOS开发(第三方使用)——讯飞语音SDK接入

去到讯飞开放平台创建应用并添加服务 下载SDK,下载时需要选上项目的,必须选上相应的项目,不能用项目1下载的SDK和项目2的app ID结合使用(估计是讯飞绑定了,所以步骤1和步骤2也不能颠倒) 拷贝下载的SDK中的iflyMSC.framework到桌面,然后拖到工程去 选择刚刚拖进的iflyMS...
  • liumude123
  • liumude123
  • 2016-09-18 12:45
  • 1792

有关集成科大讯飞sdk的语音(三)语音合成

有关语音合成的,废话不说,直接代码 @property (nonatomic, strong) IFlySpeechSynthesizer *iFlySpeechSynthesizer;//语音合成 - (void)viewWillAppear:(BOOL)animated ...
  • qq_28551705
  • qq_28551705
  • 2018-01-26 15:24
  • 21
    个人资料
    • 访问:215994次
    • 积分:4735
    • 等级:
    • 排名:第7246名
    • 原创:271篇
    • 转载:0篇
    • 译文:0篇
    • 评论:20条
    最新评论