如何使用讯飞的语音SDK加入到你的iPhone应用中吧!

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

2.仅仅注册了一个开发者账号还可以使用SDK,因为还需要申请Appid。登陆之后到自己的个人中心创建一个应用填写好相关信息,然后等待审核通过,因为只有审核通过之后,你才可以下载讯飞语音的SDK。如下:
<ignore_js_op>




讯飞星火java开发 讯飞开放_人工智能





3.如果你的应用已经审核通过,点击SDK下载,并且选择对应平台的SDK,比如现在选择iphone平台SDK下载。

4.下载好了之后,你会看到一个压缩包,解压出来有四个文件,
<ignore_js_op>


讯飞星火java开发 讯飞开放_移动开发_02




其中sample就是讯飞提供的DEMO了,打开项目,你会看到这样的目录结构:
<ignore_js_op>


讯飞星火java开发 讯飞开放_人工智能_03




直接运行,并没有错误,只有几个警告,运行界面如下:
<ignore_js_op>


讯飞星火java开发 讯飞开放_人工智能_04


<ignore_js_op>


讯飞星火java开发 讯飞开放_人工智能_05




5.那么怎么在自己的项目中使用呢?其实还是非常简单的。讯飞也有提供相关的开发文档,还是比较详细。在开发者专区和下载专区都有文档可供下载。

6.新建一个iPhone 项目吧。新建好了之后,需要先导入需要的lib,如下:
<ignore_js_op>


讯飞星火java开发 讯飞开放_讯飞星火java开发_06



其中需要说明的是,iflyMSC.framework这个lib就在你下载的SDK解压文件下的lib文件夹下。在添加lib的界面选择Add Others...,并且选择你下载的lib。点击Open,就能正确添加。
<ignore_js_op>


讯飞星火java开发 讯飞开放_讯飞星火java开发_07




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. //識別結果回調函數
11. - (void)onResult:(IFlyRecognizeControl *)iFlyRecognizeControl theResult:(NSArray *)resultArray
12. {

13.     NSString *strResult = [[resultArray objectAtIndex:0] objectForKey:@"NAME"];
14.     NSLog(@"識別的結果是:%@",strResult);
15. }
16. 
17. //開始語音識別
18. - (void)onButtonRecognize
19. {

20.     if ([_iFlyRecognizeController start]) {

21.         [_recognizeButton setEnabled:NO];
22.         [_synthesizerButton setEnabled:NO];
23.     }
24. }
25. 
26. //不支持後台模式則在unActive事件時執行cancel
27. - (void)resignActive
28. {

29.     [_iFlyRecognizeController cancel];
30. }
31. 
32. //合成回調函數,執行cancel函數整個會話結束調用此函數
33. - (void)onSynthesizerEnd:(IFlySynthesizerControl *)iFlySynthesizerControl theError:(int)error
34. {

35.     [_synthesizerButton setEnabled:YES];
36.     [_recognizeButton setEnabled:YES];
37.     NSLog(@"結束");
38.     NSLog(@"上傳流量:%d,下載流量:%d",[iFlySynthesizerControl getUpflow:FALSE],[iFlySynthesizerControl getDownflow:FALSE]);
39. }
40. 
41. //獲取播放器緩衝進度
42. - (void)onSynthesizerBufferProgress:(float)bufferProgress
43. {

44.     NSLog(@"當前緩衝進度:%f",bufferProgress);
45. }
46. 
47. //獲取播放器播放進度
48. - (void)onSynthesizerPlayProgress:(float)playProgress
49. {

50.     NSLog(@"當前播放進度:%f",playProgress);
51. }
52. 
53. //開始語音合成
54. - (void)onButtonSynthesizer
55. {

56.     [_iFlySynthesizerControl setText:@"哈哈,这仅仅是一个测试合成功能的例子而已,你不用太紧张会发生什么特别的事情。谢谢" params:nil];
57.     if ([_iFlySynthesizerControl start]) {

58.         [_recognizeButton setEnabled:NO];
59.         [_synthesizerButton setEnabled:NO];
60.     } else {

61.         NSLog(@"I'm sorry,start error. ");
62.     }
63. }
64. 
65. //不支持後台模式則unActive事件時執行cancel
66. - (void)resignactiveOfSynthesizer
67. {

68.     NSLog(@"resignActive");
69.     [_iFlySynthesizerControl cancel];
70. }
71.


其中下列方法可以在自己需要开始使用语音功能的地方调用,比如:

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. //開始語音識別
15. - (void)onButtonRecognize
16. {

17.     if ([_iFlyRecognizeController start]) {

18.         [_recognizeButton setEnabled:NO];
19.         [_synthesizerButton setEnabled:NO];
20.     }
21. }
22. 
23. //開始語音合成
24. - (void)onButtonSynthesizer
25. {

26.     [_iFlySynthesizerControl setText:@"这仅仅是一个测试合成功能的例子,你不用太紧张会发生什么" params:nil];
27.     if ([_iFlySynthesizerControl start]) {

28.         [_recognizeButton setEnabled:NO];
29.         [_synthesizerButton setEnabled:NO];
30.     } else {

31.         NSLog(@"I'm sorry,start error. ");
32.     }
33. }

8.到这里已经可以使用语音识别和合成功能了。如下:
<ignore_js_op>


讯飞星火java开发 讯飞开放_讯飞星火java开发_08


<ignore_js_op>


讯飞星火java开发 讯飞开放_移动开发_09


<ignore_js_op>


讯飞星火java开发 讯飞开放_php_10