随着智能家居概念的火热,语音交互这一新时代的人机交互方式再度掀起了热潮。移动互联网应用在设计开发时也纷纷考虑加入语音识别功能,带给用户除传统键盘或触控交互方式外的更便捷交互体验。中国移动近日推出的“灵犀云”,作为新一代的智能语音云平台,正致力于为应用提供全方位的智能语音能力服务,带给用户高效、准确、智能的交互体验。

基于中移动与语音行业领军者科大讯飞的深度战略合作背景,灵犀云的核心技术源自科大讯飞。凭借电信级网络及4G服务的优势,灵犀云在语音服务质量上具备领先优势。这也是继双方此前面向广大用户推出灵犀语音助手APP后,中移动向广大应用开发者们呈献的一大利器,助力应用进入智能交互时代。

这篇文章主要介绍利用灵犀云SDK(iOS)实现语音识别和语音合成的方法:

1、注册并登录中国移动开发者社区 http://dev.10086.cn(建议使用IE或IE内核浏览器)

2、登录成功后,点击下图红框指示的“申请能力应用”

3、点击“申请能力应用”按钮

4、填写您应用的基本信息

5、语音服务AppID申请成功,之后点击下方按钮下载SDK。

6、开始集成吧!

6.1 iOS 语音控件SDK 接口和体系结构

6.2 iOS 语音控件SDK 资源占用描述

6.3  创建iOS工程
在XCode中建立你的工程,或者打开已经建立的工程。

6.4 添加静态库

将开发工具包中lib目录下的iflyMSC.framework添加到新建工程中(如下图所示)。

6.5 添加framework

按下图添加SDK所需要的iOS 库

6.6 确认SDK的路径

请确认上图红色部分的路径能够找到iflyMSC.framework。为了支持多人开发,建议双击红色部分,把路径改为相对路径,例如像下图所示。

注意:请把不必要的路径删除。例如更新了SDK后,新的SDK和旧的SDK不在同一路径,请把旧路径删除,避免引用到旧的库。对应集成SDK后发现编译失败,提示找不到头文件,请先检查这个路径是否正确。

6.7 导入头文件

在你需要使用MSC服务的文件中导入相应的头文件

例如:

//带界面的语音识别控件

#import “iflyMSC/IFlyRecognizerViewDelegate.h”
#import “iflyMSC/IFlyRecognizerView.h”

//不带界面的语音识别控件

#import “iflyMSC/IFlySpeechRecognizerDelegate.h”
#import “iflyMSC/IFlySpeechRecognizer.h”

//不带界面的语音合成控件

#import “iflyMSC/IFlySpeechSynthesizerDelegate.h”
#import “iflyMSC/IFlySpeechSynthesizer.h”

6.8 集成帮助文档到Xcode

打开终端(terminal 或 iterm),cd到压缩包的doc目录,执行以下命令:

cp -R -f -a com.iflytek.documentation.IFlyMSC.docset
~/Library/Developer/Shared/Documentation/DocSets/

然后执行命令

open ~/Library/Developer/Shared/Documentation/DocSets/

请核对文档的版本为最新下载的版本

打开Xcode的帮助文档就可以看到已经集成的文档

7、在代码中使用开发工具包

7.1 初始化

创建用户语音配置对象后才可以使用语音服务,建议在程序入口处调用。

//将“12345678”替换成您申请的APPID,申请地址:http://dev.10086.cn/NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@” 12345678”];
[IFlySpeechUtility createUtility:initString];

7.2  语音转写(带界面示例)

使用示例如下图所示:

//头文件定义
//需要实现IFlyRecognizerViewDelegate,为识别会话的服务代理
@interface RecognizerViewController :  UIViewController<IFlyRecognizerViewDelegate>
{
IFlyRecognizerView
*_iflyRecognizerView;
}
//初始化语音识别控件
_iflyRecognizerView = [[IFlyRecognizerView alloc] initWithCenter:self.view.center];
_iflyRecognizerView.delegate =  self;
[_iflyRecognizerView setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]];
//asr_audio_path保存录音文件名,如不再需要,设置value为nil表示取消,默认目录是documents
[_iflyRecognizerView setParameter:@"asrview.pcm "  forKey:[IFlySpeechConstant
ASR_AUDIO_PATH]];
//启动识别服务
[_iflyRecognizerView  start];
/*识别结果返回代理
@param resultArray识别结果
@ param isLast表示是否最后一次结果
*/
- (void)onResult: (NSArray *)resultArray isLast:(BOOL) isLast
{
}
/*识别会话错误返回代理
@ param    error错误码
*/
- (void)onError: (IFlySpeechError *)  error
{
}

7.3 语音合成(不带界面示例)

使用示例如下图所示:

//头文件定义
//需要实现IFlySpeechSynthesizerDelegate,为合成会话的服务代理
@interface TTSViewController :  UIViewController<IFlySpeechSynthesizerDelegate>
{
IFlySpeechSynthesizer
* _iFlySpeechSynthesizer;
}
//创建合成对象,为单例模式
_iFlySpeechSynthesizer = [IFlySpeechSynthesizer  sharedInstance];
_iFlySpeechSynthesizer.delegate =  self;
//设置语音合成的参数
//语速,取值范围  0~100
[_iFlySpeechSynthesizer setParameter:@"50" forKey:[IFlySpeechConstant SPEED]];
//音量;取值范围  0~100
[_iFlySpeechSynthesizer setParameter:@"50" forKey: [IFlySpeechConstant VOLUME]];
//发音人,默认为”xiaoyan”;可以设置的参数列表可参考个性化发音人列表
[_iFlySpeechSynthesizer setParameter:@" xiaoyan " forKey: [IFlySpeechConstant
VOICE_NAME]];
//音频采样率,目前支持的采样率有  16000和     8000
[_iFlySpeechSynthesizer setParameter:@"8000" forKey: [IFlySpeechConstant SAMPLE_RATE]];
//asr_audio_path保存录音文件路径,如不再需要,设置value为nil表示取消,默认目录是
documents
[_iFlySpeechSynthesizer setParameter:@" tts.pcm" forKey: [IFlySpeechConstant
TTS_AUDIO_PATH]];
//启动合成会话
[_iFlySpeechSynthesizer startSpeaking: @”你好,我是中国移动的小燕”];
//合成结束,此代理必须要实现
- (void) onCompleted:(IFlySpeechError *) error{}
//可选接口
- (void) onSpeakBegin{
//合成开始}
- (void) onBufferProgress:(int) progress message:(NSString *)msg{
//合成缓冲进度}
- (void) onSpeakProgress:(int) progress{
//合成播放进度}

7.4  语义示例

使用示例如下图所示:

//注:如需使用语义功能,请先将需求直接发送邮件到灵犀云客服邮箱lingxicloud@139.com进行
审核配置
_iFlySpeechUnderstander = [IFlySpeechUnderstander  sharedInstance];
_iFlySpeechUnderstander.delegate =  self;
[_iFlySpeechUnderstander startListening]; //启动识别服务
/*语义识别结果返回代理
@param resultArray识别结果
@ param isLast表示是否最后一次结果
*/
- (void) onResults:(NSArray *) results isLast:(BOOL) isLast
{
}
-(void) onError:(IFlySpeechError*) error
{

7.5  上传联系人

使用示例如下图所示:

//创建上传对象
_uploader = [[IFlyDataUploader alloc] init];
//获取联系人集合
IFlyContact *iFlyContact = [[IFlyContact alloc] init];
NSString *contactList = [iFlyContact  contact];
//设置参数
[_uploader setParameter:@"uup" forKey:@"subject"];
[_uploader setParameter:@"contact" forKey:@"dtt"];
//启动上传
[_uploader uploadDataWithCompletionHandler:^(NSString * grammerID, IFlySpeechError *error)
{
//接受返回的grammerID和error
[self onUploadFinished:grammerID error:error];
}name:@"contact" data:  contactList];

7.6  用户词表的上传

使用示例如下图所示:

//创建上传对象
_uploader = [[IFlyDataUploader alloc] init];
//用户词表
#define USERWORDS       @"{\"userword\":[{\"name\":\"cmcc\",\"words\":[\"德国盐猪手
\",\"1912酒吧街\",\"清蒸鲈鱼\",\"挪威三文鱼\",\"黄埔军校\",\"横沙牌坊\",\"中国移动\",\”
王小贰\”]}]}"
#define NAME @"userwords"
//生成用户词表对象
IFlyUserWords *iFlyUserWords = [[IFlyUserWords alloc] initWithJson:USERWORDS  ];
//设置参数
[_uploader setParameter:@"iat" forKey:@"sub"];
[_uploader setParameter:@"userword" forKey:@"dtt"];
[_uploader uploadDataWithCompletionHandler:^(NSString * grammerID,  IFlySpeechError
*error)
{
//接受返回的grammerID和error
[self onUploadFinished:grammerID error:error];

7.7  abnf 语法上传示例

// ABNF语法示例,可以说”北京到上海”
#define ABNFPARAM @”sub=asr,dtt=abnf”
#define ABNFDATA = “#ABNF 1.0 gb2312;
language  zh-CN;
mode voice;
root $main;
$main = $place1到$place2   ;
$place1 =北京    |武汉     |南京    |天津     |天京    |东京;
$place2 =上海    |合肥;”
//创建上传对象
_uploader = [[IFlyDataUploader alloc] init];
//设置参数
[_uploader setParameter:@"asr" forKey:@"sub"];
[_uploader setParameter:@"abnf" forKey:@"dtt"];
//上传 abnf语法
[_uploader uploadDataWithCompletionHandler:^(NSString * grammerID,  IFlySpeechError
*error)
{
//接受返回的grammerID和error
[self  setGrammerId:grammerID];
}name:ABNFNAME  data:ABNFDATA];

中国移动灵犀云语音识别及合成SDK(iOS)使用指南相关推荐

  1. 中国移动灵犀云语音识别SDK(android)使用指南

    随着智能家居概念的火热,语音交互这一新时代的人机交互方式再度掀起了热潮.移动互联网应用在设计开发时也纷纷考虑加入语音识别功能,带给用户除传统键盘或触控交互方式外的更便捷交互体验.中国移动近日推出的&q ...

  2. 中国移动灵犀云声纹识别SDK(android)使用指南

    随着智能家居概念的火热,语音交互这一新时代的人机交互方式再度掀起了热潮.移动互联网应用在设计开发时也纷纷考虑加入语音识别功能,带给用户除传统键盘或触控交互方式外的更便捷交互体验.中国移动近日推出的&q ...

  3. 阿里云推送 SDK iOS 端 配置

    阿里云 SDK 配置 请依官方为主,毕竟已经很详细了 https://help.aliyun.com/document_detail/30072.html?spm=5176.doc30071.6.64 ...

  4. 灵犀云智能语音云平台产品白皮书(摘要)

    灵犀云产品白皮书 本文档主要描述了中国移动智能语音能力平台灵犀云的基本功能,为初次使用灵犀云的开发者提供简要的入门信息.文档中提供了灵犀云平台的架构和功能介绍,但并不作为开发指南使用. 概述 灵犀云智 ...

  5. 用Visual studio 2019,C#语言,语音识别及合成

    用Visual studio 2019,C#语言,语音识别及合成 本人以前从没有接触过代码,所以下面写的内容非常基础简单,请大佬勿喷.主要是为了记录一下刚接触代码三天的收获--windows环境下语音 ...

  6. 语音识别服务_语音识别服务厂商_腾讯云语音识别服务 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 腾讯云语音识别服务开放实时语音识别.一句话识别和录音文件识别三种服务形式,满足不同 ...

  7. ROS 教程3 机器人语音 语音识别理解合成控制 ASR NLU TTS

    机器人语音 语音识别理解合成控制 ASR NLU TTS github 一.语音处理总体框架 1. 语音识别(ASR , Automatic Speech Recognition )2. 语义理解(N ...

  8. 树莓派实现语音识别与语音合成——百度云语音识别API

    本文采用百度云语音识别API接口,实现低于60s音频的语音识别,也可以用于合成文本长度小于1024字节的音频,此外采用snowboy离线语音唤醒引擎可实现离线语音唤醒,实现语音交互.基于本内容可实现语 ...

  9. CMUSphinx免费离线语音识别开源库教程iOS开发

    CMUSphinx开源语音识别工具包,可以基于CMUSphinx开发iOS版本的语音识别和语音合成库. 本文介绍的语音识别库使您可以轻松快速地将多种语言的离线语音识别和合成语音添加到iOS应用程序中. ...

最新文章

  1. 机器学习工程师 - Udacity 可视化 CNN
  2. Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()
  3. ACMNO.12有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。 输入 N 输出 数列前N项和 样例输入 10
  4. 归并排序原理及代码模板
  5. 山东计算机基础模拟题及答案,2016山东农信社考试模拟题--计算机基础知识答案(1)...
  6. mysql查找字符串最后位置_mysql查找字符串出现位置
  7. when is oData transaction data request sent for an xml view binding case
  8. OrionX Panel for Mac(ps摄影自动化工作流插件)支持ps2021 big sur11 汉化版
  9. java-io流理解
  10. STL常用函数总结-set
  11. 收藏!Java 500 道核心面试题全解析
  12. JAVA ANDROID SOCKET通信检测(SERVER)连接是否断开
  13. linux小技巧--vim下多行注释和取消多行注释
  14. 从SQL Server中导入/导出 Excel 的基本方法
  15. Python的三种基本数据类型
  16. 二进制算法——模二运算
  17. java tm 2已停止工作_Java(TM) 2 Platform Standard Edition binary 已停止工作
  18. 高频交揭密美五大高交商访谈录
  19. MySQL/Mariadb基准测试工具-TPC,TPCC,TPMC(计算机性能衡量指标)
  20. 自适应布局-使用css3函数clac()

热门文章

  1. 级联查询ajax,ajax级联查询
  2. tt作曲家简谱打谱软件_作曲家入门指南
  3. 微信小程序rich-text富文本图片
  4. matlab弹奏旋律(发声)笔记
  5. 2023浙江师范大学计算机考研信息汇总
  6. 诺基亚7原生android,诺基亚7.1喜提Android10系统更新
  7. 为什么不能用赋值语句将一个字符串常量直接赋给一个字符数组?
  8. uniapp如何分享文件到微信 文件分享
  9. C语言有大约40个运算符,最常用的有这些
  10. Mac老是自动关掉屏幕怎么办?