科大讯飞

UI进阶 科大讯飞(1) 语音听写(语音转换成文字)

 

一、科大讯飞开放平台:

http://www.xfyun.cn/

注册、登录之后创建新应用。

因为本项目只实现了语音听写,所以在SDK下载中心勾选语音听写单项SDK就可以了

开发平台选择iOS,应用选择你要实现语音听写的应用,然后点击"下载SDK"按钮

程序中会用到Appid,程序中导入的SDK一定是要与这个应用相关联的SDK,下载下来的SDK压缩包就是以Appid结尾命名的。

二、项目配置

官方文档:http://www.xfyun.cn/doccenter/iOS

1、添加静态库

按下图添加SDK所需要的iOS库,请注意libz.dylib,CoreTelephoney.framework不要遗漏。

注:如果使用的是离线识别,还需要增加libc++.dylib。

2、初始化

必须在初始化后才可以使用语音服务,初始化是异步过程,推荐在程序入口处调用。

Appid是应用的身份信息,具有唯一性,初始化时必须要传入Appid。可以从demo的Definition.h APPID_VALUE中查看此信息。Demo和SDK申请地址:http://xfyun.cn

在AppDelegate.m的didFinishLaunchingWithOptions:方法中初始化

先导入头文件:

#import "iflyMSC/IFlySpeechUtility.h"

复制代码
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
2     // Override point for customization after application launch.
3     // 登录科大讯飞语音平台
4     NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@", @"5750da0e"];
5     [IFlySpeechUtility createUtility:initString];
6     return YES;
7 }
复制代码

 

3、实现语音听写(语音转换成文字):

功能实现步骤:

  • 导入头文件
  • 创建声音识别视图
  • 指定声音识别后回调的代理对象
  • 开启声音识别功能
  • 在回调方法中处理声音识别后返回的对象

语音识别中的参数:

 

复制代码
 1 //第一步:引入库文件
 2 //科大讯飞语音识别功能回调方法的接口文件
 3 #import <iflyMSC/IFlyRecognizerViewDelegate.h>
 4 //科大讯飞语音识别功能的声音识别视图
 5 #import <iflyMSC/IFlyRecognizerView.h>
 6 //科大讯飞语音识别功能中定义的常量
 7 #import <iflyMSC/IFlySpeechConstant.h>
 8 
 9 // 遵循代理协议
10 @interface FirstViewController ()<IFlyRecognizerViewDelegate>
11 
12 @property (weak, nonatomic) IBOutlet UITextView *wordTextView;
13 
14 /// 语音识别对象
15 @property (nonatomic, strong) IFlyRecognizerView *iflyRecognizerView;
16 
17 /// 可变字符串接收相关的结果
18 @property (nonatomic, copy) NSMutableString *resultStr;
19 @end
20 
21 @implementation FirstViewController
22 
23 - (void)viewDidLoad {
24     [super viewDidLoad];
25     /**
26      语音识别文字
27      */
28     // 初始化语音识别控件
29     self.iflyRecognizerView = [[IFlyRecognizerView alloc] initWithCenter:self.view.center];
30     // 设置代理
31     self.iflyRecognizerView.delegate = self;
32     
33     //设置语音识别结果应用为普通文本领域
34     [self.iflyRecognizerView setParameter: @"iat" forKey:[IFlySpeechConstant IFLY_DOMAIN]];
35     //设置前端点检测时间为6000ms
36     [self.iflyRecognizerView setParameter: @"6000" forKey:[IFlySpeechConstant VAD_BOS]];
37     //设置后端点检测时间为700ms
38     [self.iflyRecognizerView setParameter: @"700" forKey:[IFlySpeechConstant VAD_EOS]];
39     //设置采样率为8000
40     [self.iflyRecognizerView setParameter: @"8000" forKey:[IFlySpeechConstant SAMPLE_RATE]];
41     //设置为返回结果中包含标点符号
42     [self.iflyRecognizerView setParameter: @"1" forKey:[IFlySpeechConstant ASR_PTT]];
43     //设置语音识别完成后数据的返回数据结构类型xml
44     [self.iflyRecognizerView setParameter: @"plain" forKey:[IFlySpeechConstant RESULT_TYPE]];
45     //设置在Documents文件夹下缓存的文件名为temp.asr
46     [self.iflyRecognizerView setParameter: @"temp.asr" forKey:[IFlySpeechConstant ASR_AUDIO_PATH]];
47     //设置自定义的参数
48     [self.iflyRecognizerView setParameter: @"custom" forKey:[IFlySpeechConstant PARAMS]];
49     
50 
51 }
52 
53 #pragma mark - 语音识别文字
54 - (IBAction)recognizeAction:(UIButton *)sender {
55 
56     // 开始识别语音
57     [self.iflyRecognizerView start];
58     
59 }
60 
61 
62 #pragma mark - 代理方法
63 /*!
64  *  回调返回识别结果
65  *
66  *  @param resultArray 识别结果,NSArray的第一个元素为NSDictionary,NSDictionary的key为识别结果,sc为识别结果的置信度
67  *  @param isLast      -[out] 是否最后一个结果
68  */
69 // 成功
70 - (void)onResult:(NSArray *)resultArray isLast:(BOOL) isLast {
71     self.resultStr = [[NSMutableString alloc] init];
72     NSDictionary *dic = [resultArray objectAtIndex:0];
73     
74     for (NSString *key in dic)
75     {
76         [self.resultStr appendFormat:@"%@",key];
77     }
78     NSLog(@"%@---------",_resultStr);
79     
80     self.wordTextView.text = [NSString stringWithFormat:@"%@%@",self.wordTextView.text,self.resultStr];
81 }
82 
83 /*!
84  *  识别结束回调
85  *
86  *  @param error 识别结束错误码
87  */
88 // 失败
89 - (void)onError: (IFlySpeechError *) error {
90     NSLog(@"%@", error);
91 }
92 
93 @end

UI进阶 科大讯飞(2) 语音合成(文字转换成语音)

 

科大讯飞开放平台、SDK下载、添加静态库、初始化见UI进阶 科大讯飞(1) 语音听写(语音转换成文字)

实现语音合成

功能实现步骤:

  • 导入头文件
  • 创建文字识别对象
  • 指定文字识别后的回调代理对象
  • 开启文字识别功能
  • 在回调方法中处理文字识别后返回的对象

文字合成中的参数:

 

复制代码
 1 //文字识别的回调方法接口
 2 #import <iflyMSC/IFlySpeechSynthesizerDelegate.h>
 3 
 4 //文字识别对象
 5 #import <iflyMSC/IFlySpeechSynthesizer.h>
 6 
 7 //科大讯飞语音框架定义的常量
 8 #import <iflyMSC/IFlySpeechConstant.h>
 9 
10 // 遵循协议
11 @interface SecondViewController ()<IFlySpeechSynthesizerDelegate>
12 /// 文字显示
13 @property (weak, nonatomic) IBOutlet UITextView *wordTextView;
14 
15 /// 文字识别
16 @property (nonatomic, strong) IFlySpeechSynthesizer *synthesizer;
17 @end
18 
19 @implementation SecondViewController
20 
21 - (void)viewDidLoad {
22     [super viewDidLoad];
23     self.synthesizer = [IFlySpeechSynthesizer sharedInstance];
24     self.synthesizer.delegate = self;
25     
26     //设置文字识别对象的关键属性
27     //设置语音合成的参数
28     //语速,取值范围 0~100
29     [self.synthesizer setParameter:@"50" forKey:[IFlySpeechConstant SPEED]];
30     //音量;取值范围 0~100
31     [self.synthesizer setParameter:@"50" forKey:[IFlySpeechConstant VOLUME]];
32     //发音人,默认为”xiaoyan”;可以设置的参数列表可参考个性化发音人列表
33     [self.synthesizer setParameter:@"XIAOYAN" forKey:[IFlySpeechConstant VOICE_NAME]];
34     //音频采样率,目前支持的采样率有 16000 和 8000
35     [self.synthesizer setParameter:@"8000" forKey:[IFlySpeechConstant SAMPLE_RATE]];
36     //asr_audio_path保存录音文件路径,如不再需要,设置value为nil表示取消,默认目录是documents
37     [self.synthesizer setParameter:@"tts.pcm" forKey:[IFlySpeechConstant TTS_AUDIO_PATH]];
38   
39     [self.synthesizer setParameter:@"custom" forKey:[IFlySpeechConstant PARAMS]];
40 
41 }
42 #pragma mark - 文字转换成语音
43 - (IBAction)recognize:(UIButton *)sender {
44     // 启动合成会话
45     [self.synthesizer startSpeaking:self.wordTextView.text];
46     
47 }
48 
49 
50 /**
51  *  结束回调
52  *  当整个合成结束之后会回调此函数
53  *
54  *  @param error 错误码
55  */
56 - (void) onCompleted:(IFlySpeechError*) error {
57     
58 }
59 
60 @end
复制代码






posted @ 2016-06-04 10:03  维他命11  阅读(385)  评论(0编辑  收藏  举报