# 在线语音合成 Linux SDK 文档

# 1、简介

与语音听写相反,语音合成是将一段文字转换为语音,可根据需要合成出不同音色、语速和语调的声音,让机器像人一样开口说话。

合成详细的接口介绍及说明请参考: MSC LInux API 文档 ,在集成过程中如有疑问,可登录语音云开发者论坛,查找答案或与其他开发者交流。

# 2、SDK集成指南

# 1、sdk包说明

《SDK目录结构一览》

  • bin:
    • msc(生成msc日志)
    • wav(符合标准的音频文件样例)
    • 相关资源文件
  • doc:
    • 相关技术文档
  • include:
    • 调用SDK所需头文件
  • libs:
    • x86/libmsc.so(32位动态库)
    • x64/libmsc.so(64位动态库)
  • samples:
    • iat_online_sample(语音听写示例)
    • ise_online_sample(语音评测示例)
    • tts_online_sample(语音合成示例)
    • iat_online_record_samplele(录音听写示例)

注意:

  • 为了减少SDK包在应用中占用的大小,官网在下载单个功能的SDK包时, 可能并不包含其他功能,如下载合成的SDK包时,可能不包含听写或唤醒等功能,因此在运行未包含功能的示例时,可能会报错。对此请下载对应功能的SDK,或下载组合的SDK包。

# 2、sdk包导入

Step 1: 新建工程文件夹 在当前目录建立一个新目录demo:$ mkdir demo。

Step 2:配置工程属性

  1. 将SDK中bin,include,libs文件夹复制到新建工程“Demo”文件夹下

  2. 在demo目录新建文件demo.c,详细源码请参考samples中对应的语音示例

  3. 在demo目录下,创建Makefile文件,具体参见samples下的Makefile,修改路径和目标文件即可

  4. 将samples目录下“32bit_make.sh”文件或者“64bit_make.sh”文件拷到demo目录下,修改libmsc.so库搜索路径

  5. cd到demo目录下,执行“source 32bit_make.sh”或者 “source 64bit_make.sh”完成编译

  6. cd到bin目录下运行目标文件,SDK启动后,bin/msc目录下会生成日志(注意:msc文件夹下需有msc.cfg文件)

# 3、API调用流程

语音合成主要API调用流程如下图所示:

详细代码调用请参考 Samples中的 tts_sample(语音合成示例),API详细描述请参考API文档,合成业务主要对应的是msp_cmn.h 和 qtts.h。

# 4、引擎类型

MSC SDK 有几种引擎类型(ENGINE_TYPE),此文章中我们主要关注并介绍以下两种:

  • 在线引擎(TYPE_CLOUD),又称为云端模式,需要使用网络,速度稍慢,并产生一定流量,但有更好的识别和合成的效果,如更高的识别匹配度,更多的发音人等。
  • 离线引擎(TYPE_LOCAL),又称为本地模式,不需要使用网络,且识别和合成的速度更快,但同时要求购买并使用对应的离线资源(下载对应离线功能的SDK包)。

需要说明的是,在线引擎下,结果返回速度基本决定于用户网络的带宽限制。

如果使用的是离线合成,MSC 模式下还必须设置合成资源的路径,需下载使用对应的离线合成SDK。

合成默认使用在线方式,如果使用离线服务,需要在QTTSSessionBegin()时设置以下两个参数:

参数 名称 取值
engine_type 引擎类型 local
tts_res_path 合成资源路径 合成资源所在路径,支持fo 方式参数设置,对应格式如下:fo丨[file_info]丨[offset]丨[length](1)若是合并资源,则只需传入一个资源路径,如:fo丨combined.jet丨0丨1024(2)若是分离资源,则需传两个资源路径,如:fo丨common.jet丨0丨1024;fo丨xiaoyan.jet丨0丨1024

# 5、参数说明

语音合成中,主要参数包括:

  • 语言(LANGUAGE,中文、英文等)
  • 方言(ACCENT,中文的普通话,广东话等)
  • 发音人特征(性别,年龄,语气)
  • 语速(SPEED)
  • 音量(VOLUME)
  • 语调(PITCH)
  • 音频采样率(SAMPLE_RATE)

# 6、在线发音人列表

在 MSC SDK 参数中的前三者(语言、方言和特征)基本由发音人决定——即不同的发音人,支持不一样的语言、方言和特征,合成发音人列表请到控制台-我的应用-语音合成-在线语音合成(流式版)-发音人授权管理处查看,部分发音人支持添加试用,添加后即可查看发音人参数值:

  1. 语言为中英文的发音人可以支持中英文的混合朗读。
  2. 英文发音人只能朗读英文,中文无法朗读。
  3. 汉语发音人只能朗读中文,遇到英文会以单个字母的方式进行朗读。
  4. 支持新引擎参数的发音人,使用新引擎参数可以获得更好的合成效果。

# 7、离线发音人列表

  1. 普通的离线语音合成的common.jet资源大概是4.10 MB+发音人.jet资源配合使用
类型 发音人中文名称 音色 发音人资源文件名 发音人资源大小
播报 讯飞小燕 青年女声 xiaoyan.jet 3.91 MB
播报 讯飞小峰 青年男声 xiaofeng.jet 1.27 MB
播报 讯飞小梦 青年女声 xiaomeng.jet 10.6 MB
播报 讯飞小媛 中英文青年女声 xiaoyuan.jet 1.89 MB
播报 iFlytek John 英文男声 john.jet 1.60 MB
播报 讯飞凯瑟琳 青年女声-美式英语 catherine.jet 25.5 MB
播报 讯飞小溪 青年男声 xiaoxi.jet 4.95 MB
播报 讯飞小雪 青年女声 xiaoxue.jet 3.41 MB
播报 讯飞许久 青年男声 jiuxu.jet 3.91 MB
听书 讯飞晓倩 青年女声-东北话 xiaoqian.jet 848 KB
听书 讯飞小蓉 青年女声-四川话 xiaorong.jet 571 KB
听书 讯飞小坤 青年男声-河南话 xiaokun.jet 672 KB
听书 讯飞小强 青年男声-湖南话 xiaoqiang.jet 691 KB
听书 讯飞小英 青年女声-陕西话 xiaoying.jet 850 KB
听书 讯飞小梅 青年女声-广东话 xiaomei.jet 1.66 MB
听书 讯飞嘉嘉 青年女声 jiajia.jet 1.79 MB
听书 讯飞小侯 中年男声 xiaohou.jet 5.95 MB
听书 讯飞一峰 中年男声 yifeng.jet 6.59 MB
听书 讯飞晓琳 青年女声-台普 xiaolin.jet 1.81 MB
交互 讯飞楠楠 女童声 nannan.jet 1.41 MB
交互 讯飞马宝 女童声 mabao.jet 1.79 MB
交互 讯飞小芳 女童声 xiaofang.jet 3.38 MB
交互 讯飞小丸子 卡通声音 xiaowanzi.jet 13.0 MB
  1. 高品质离线语音合成发音人的需要单独定制common.jet和库文件(具体大小需要申请后和商务人员对接)+发音人.jet资源配合使用
类型 发音人中文名称 音色 发音人资源文件名 发音人资源大小
通用 讯飞小楠 可爱童声 pureXtts_nannan.jet 5.9MB
通用 讯飞峰峰 青年男声 pureXtts_xiaoguan.jet 5.9MB
通用 讯飞小关 青年男声 pureXtts_xiaoshi.jet 5.9MB
通用 讯飞小诗 青年女声 pureXtts_xiaoxue.jet 5.9MB
通用 讯飞雪儿 青年女声 pureXtts_xioayan.jet 5.9MB
通用 讯飞小缘 中英文青年女声 pureXtts_yifeng.jet 5.9MB
  1. 离线语音合成购买的发音人使用方法

平台上购买离线语音合成后下载的sdk包,默认只提供小燕和小峰的资源(.jet),也就是说只有这两个发音人可以使用,如果购买(购买方式1:离线语音合成主页—离线发音人库—立即购买—选择绑定的应用—付款;购买方式2:控制台—应用—离线语音合成—服务管理—购买离线发音人音库—付款。付款后重新下载离线语音合成sdk,在sdk中的中会自动多一个购买的发音人资源。)了其他的发音人的话,您就会拿到其他发音人的资源(.jet),以小芳的发音人为例,购买后您会拿到小芳的资源(xiaofang.jet)。

注意

使用购买的新的发音人要注意加载的资源名称,voice_name,资源路径中的资源名称三者的统一,否者会无法正常使用。

# 8、代理服务器设置方法

在MSPLogin接口的params参数中添加:

net_type=custom, proxy_ip=<host>, proxy_port=<port>
其中,<host>,<port>替换为实际的代理服务器地址和端口。

例如:MSPLogin(NULL, NULL, "appid = 12345678, net_type=custom, proxy_ip=192.168.1.2, proxy_port=8080"); 注意:各参数间,以英文逗号分隔。

接口原型: int MSPLogin(const char* usr, const char* pwd, const char* params)

注意: 若在设置代理参数后,使用语音服务过程中,报错10204/10205/10212等网络异常错误时,请查阅以下内容,做出相关操作:

  • 讯飞语音SDK的通信协议使用的是标准HTTP1.1协议,其代理协议使用的是标准HTTP代理协议。
  • 代理服务器需要支持全双工多问多答方式,即 pipeline 模式。
  • 代理服务器不能对80端口做限制,不能对如下域名做拦截: hdns.openspeech.cn scs.openspeech.cn open.xf-yun.com dev.voicecloud.cn
  • 需要确保代理服务器只负责转发数据包,不能改变数据包的完整性和时序性。
  • 代理服务器在转发数据包时,不能在HTTP协议头部添加 IE6 标识头。

# 9、视频教程

概念原理

技术简介

发展历史

典型应用

# 10、常见问题

# 错误码及相应解决方案查询网址

答: 错误码及相应解决方案查询

# 拿到了合成音频但不知道如何来播放

答:拿到的合成音频是没有音频头的,音频头中含有音频格式、采样率、音频长度等播放音频所需信息。拿到合成音频后,用户可以添加音频头,可参考例子tts_sample中的代码,然后使用常规播放器来播放;也可以使用Cool Edit等软件手动选择音频参数来播放。

# 如何进行大文本的合成

答:语音云一次语音合成允许的合成文本大小不超过8192个字节,所以对于长度超过此值的大合成文本,用户可以采用“分段合成”的方式,即先将大文本按照标点符号如句号进行切分,然后对每一段文本分别进行合成。进行分段合成时,用户既可以在一路会话中循环使用QTTSTextPut+QTTSAudioGet组合完成合成,也可以为每一段文本使用一路独立的会话完成合成。

# 如何设置语音云服务URL

答:在MSPLogin接口中添加:server_url = http://YourDomainName/msp.do (YourDomainName是指语音云服务域名,请开发者自行替换) 例如:MSPLogin(NULL, NULL, "appid = 12345678, server_url = http://sdk.openspeech.cn/msp.do"); 注意:各参数间,以英文逗号分隔。 接口原型: int MSPLogin(const char* usr, const char* pwd, const char* params)