0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AI语音处理-文字合成语音功能

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2023-07-08 09:50 次阅读

1. 前言

语音合成技术在生活中用越来越广泛,阅读听书、订单播报、智能硬件、语音导航 很多场景下都加入了语音播报功能。语音合成基于深度神经网络技术,提供高度拟人、流畅自然的语音合成服务,可以模拟出不同人的声音,让应用APP、设备开口说话,还能智能化训练个性语音。

这篇文章就介绍华为云提供的语音合成服务使用方法,利用提供的API接口完成语音合成功能,将合成的语音下载下来。

image-20220224123015538

image-20220224123052201

2. 开通功能

华为云的提供的语音合成,是一种将文本转换成逼真语音的服务。用户通过实时访问和调用API获取语音合成结果,将用户输入的文字合成为音频。通过音色选择、自定义音量、语速,为企业和个人提供个性化的发音服务。

2.1 语音交互服务

地址: https://console.huaweicloud.com/sis/?region=cn-north-4#/sis/stts

image-20220224110120220

2.2 帮助文档

地址: https://support.huaweicloud.com/api-sis/sis_03_0111.html

image-20220224112109108

(1)请求Header参数:

参数 是否必选 参数类型 描述
X-Auth-Token String 用户Token。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限,响应消息头中X-Subject-Token的值即为Token。

请求头里的X-Auth-Token字段在之前的文章已经介绍过,获取方法看这里: https://bbs.huaweicloud.com/blogs/317759 翻到2.3小节。

**

(2)请求Body参数:**

参数 是否必选 参数类型 描述
text String 待合成的文本,文本长度限制小于500字符。
config 配置JSON 语音合成配置信息

(3)TtsConfig的配置参数:

参数 是否必选 参数类型 描述
audio_format String 语音格式头:wav、mp3、pcm默认:wav父节点:config
sample_rate String 采样率:16000、8000默认:8000父节点:config
property String 语音合成特征字符串,组成形式为{language} {speaker} {domain},即“语种人员标识领域”。发音人分为普通发音人和精品发音人,每次调用价格相同,针对精品发音人,每50字计一次调用,不足50字按一次计;普通发音人每100字计一次调用,不足100字按一次计。其中1个汉字、1个英文字母或1个标点均算作1个字符。精品发音人:区域仅支持cn-north-4、cn-east-3,暂时不支持音高调节。使用精品发音人如果报错SIS.0411,请检查是否符合使用约束。默认:chinese_xiaoyan_common父节点:config
speed Integer 语速。取值范围:-500~500默认值:0父节点:config**说明:**当取值为“0”时,表示一个成年人正常的语速,约为250字/分钟。设置该值时,语速和数值没有绝对的映射关系。
pitch Integer 音高。取值范围: -500~500默认值:0父节点:config
volume Integer 音量。取值范围:0~100默认值:50父节点:config

(4)普通发音人property取值范围:

property取值 描述
chinese_xiaoqi_common 小琪,标准女声发音人。
chinese_xiaoyu_common 小宇,标准男声发音人。
chinese_xiaoyan_common 小燕,温柔女声发音人。
chinese_xiaowang_common 小王,童声发音人。
chinese_xiaowen_common 小雯,柔美女声发音人。
chinese_xiaojing_common 小婧,俏皮女声发音人。
chinese_xiaosong_common 小宋,激昂男声发音人。
chinese_xiaoxia_common 小夏,热情女声发音人。
chinese_xiaodai_common 小呆,呆萌童声发音人。
chinese_xiaoqian_common 小倩,成熟女声发音人。
english_cameal_common cameal,柔美女声英文发音人。

(5)精品发音人property取值范围:

property取值 描述
chinese_huaxiaoxia_common 华小夏,热情女声发音人。
chinese_huaxiaogang_common 华晓刚,利落男声发音人。
chinese_huaxiaolu_common 华小璐,知性女声发音人。
chinese_huaxiaoshu_common 华小舒,舒缓女声发音人。
chinese_huaxiaowei_common 华小唯,嗲柔女声发音人。
chinese_huaxiaoliang_common 华小靓,嘹亮女声发音人。
chinese_huaxiaodong_common 华晓东,成熟男声发音人。
chinese_huaxiaoyan_common 华小颜,严厉女声发音人。
chinese_huaxiaoxuan_common 华小萱,台湾女声发音人。
chinese_huaxiaowen_common 华小雯,柔美女声发音人。
chinese_huaxiaoyang_common 华晓阳,朝气男声发音人。
chinese_huaxiaomin_common 华小闽,闽南女声发音人。
chinese_huanvxia_literature 华女侠,武侠女生发音人,只支持16k的采样率。
chinese_huaxiaoxuan_literature 华晓悬,悬疑男声发音人,只支持16k的采样率。
chinese_huaxiaomei_common 华小美,温柔女声发音人。

(6)响应的Body参数

状态码: 200

参数 是否必选 参数类型 描述
trace_id String 服务内部的令牌,可用于在日志中追溯具体流程。在某些错误情况下可能没有此令牌字符串。
result object 调用成功表示识别结果,调用失败时无此字段。

(7)CustomResult参数

参数 是否必选 参数类型 描述
data String 语音数据,以Base64编码格式返回。用户如需生成音频,需要将Base64编码解码成byte数组,再保存为音频,音频格式同**“audio_format”**参数设置的值,默认为wav格式。

2.3 在线调试接口

通过在线调试接口,可以快速调试接口参数,请求方式,返回结果等信息。

地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=SIS&api=RunTts

image-20220224110439767

还可以在线填入测试参数,进行测试效果。

image-20220224110636711

2.4 请求接口总结

请求地址格式: POST /v1/{project_id}/tts
 ​
 ​
 完整请求地址:
 https://sis-ext.cn-north-4.myhuaweicloud.com/v1/0e5957be8a00f53c2fa7c0045e4d8fbf/tts
 ​
 请求体:
 {
  "text": "请注意坐姿",
  "config": {
   "audio_format": "wav",
   "sample_rate": "16000",
   "property": "chinese_xiaoqi_common",
   "speed": 0,
   "pitch": 0,
   "volume": 0
  }
 }
 ​
 ​
 请求头:
 {
  "X-Auth-Token": "******",
  "Content-Type": "application/json;charset=UTF-8"
 }
 ​
 响应体:
 {"result":{"data":xxxxxxxx"}}
 ​
 这个xxxx就是返回的Base64编码语音数据,可以解码后保存成文件即可。

3. 实现源码

软件采用QT设计的,核心部分主要是用到了HTTP请求相关的操作。

image-20220224122910244

image-20220224122947682

3.1 文字转语音源码

//文本转语音
 void Widget::TextToAudio(QString text)
 {
     function_select=1;
     QString requestUrl;
     QNetworkRequest request;
 ​
     //设置请求地址
     QUrl url;
 ​
     //请求地址
     requestUrl = QString("https://sis-ext.%1.myhuaweicloud.com/v1/%2/tts")
             .arg(SERVER_ID)
             .arg(PROJECT_ID);
 ​
     //设置数据提交格式
     request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
 ​
     //设置token
     request.setRawHeader("X-Auth-Token",Token);
 ​
     //构造请求
     url.setUrl(requestUrl);
     request.setUrl(url);
 ​
     QString post_param=QString
                ("{"
                 ""text": "%1","
                 ""config": {"
                  ""audio_format": "%2","
                  ""sample_rate": "%3","
                  ""property": "%4","
                  ""speed": %5,"
                  ""pitch": 0,"
                  ""volume": %6"
                 "}"
                "}").arg(text).arg(ui- >comboBox_formt- >currentText())
             .arg(ui- >comboBox_cai_yang_lv- >currentText())
             .arg(ui- >comboBox_fa_yin_ren- >currentText())
             .arg(ui- >spinBox_audio_speed- >value())
             .arg(ui- >spinBox_yin_liang- >value());
 ​
     //发送请求
     manager- >post(request, post_param.toUtf8());
 }
 ​
 ​
 //生成语音
 void Widget::on_pushButton_to_audio_clicked()
 {
     QString text=ui- >lineEdit- >text();
     if(text.isEmpty())
     {
         QMessageBox::information(this,"提示","请输入文本",
         QMessageBox::Ok,QMessageBox::Ok);
         return;
     }
     qDebug()< < "text:"<

3.2 获取token

/*
 功能: 获取token
 */
 void Widget::GetToken()
 {
     //表示获取token
     function_select=3;
 ​
     QString requestUrl;
     QNetworkRequest request;
 ​
     //设置请求地址
     QUrl url;
 ​
     //获取token请求地址
     requestUrl = QString("https://iam.%1.myhuaweicloud.com/v3/auth/tokens")
                  .arg(SERVER_ID);
 ​
     //自己创建的TCP服务器,测试用
     //requestUrl="http://10.0.0.6:8080";
 ​
     //设置数据提交格式
     request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json;charset=UTF-8"));
 ​
     //构造请求
     url.setUrl(requestUrl);
 ​
     request.setUrl(url);
 ​
     QString text =QString("{"auth":{"identity":{"methods":["password"],"password":"
     "{"user":{"domain": {"
     ""name":"%1"},"name": "%2","password": "%3"}}},"
     ""scope":{"project":{"name":"%4"}}}}")
             .arg(MAIN_USER)
             .arg(IAM_USER)
             .arg(IAM_PASSWORD)
             .arg(SERVER_ID);
 ​
     //发送请求
     manager- >post(request, text.toUtf8());
 }
 ​

3.3 解析返回值

//解析反馈结果
 void Widget::replyFinished(QNetworkReply *reply)
 {
     QString displayInfo="";
 ​
     int statusCode = reply- >attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
 ​
     //读取所有数据
     QByteArray replyData = reply- >readAll();
 ​
     qDebug()< < "状态码:"<
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 音频
    +关注

    关注

    28

    文章

    2600

    浏览量

    79969
  • API
    API
    +关注

    关注

    2

    文章

    1382

    浏览量

    60991
  • AI
    AI
    +关注

    关注

    87

    文章

    26443

    浏览量

    264044
  • 语音识别
    +关注

    关注

    37

    文章

    1635

    浏览量

    111834
  • 语音合成
    +关注

    关注

    2

    文章

    80

    浏览量

    16020
  • 深度神经网络

    关注

    0

    文章

    42

    浏览量

    4463
  • 华为云
    +关注

    关注

    3

    文章

    2155

    浏览量

    16807
收藏 人收藏

    评论

    相关推荐

    基于波形音频段处理的中文语音合成研究

    高,语音单元之间的过渡还不够自然。因此,如何提高合成语音的自然度,使合成语音更加流畅是语音合成
    发表于 03-06 22:24

    SYN6288语音合成芯片全开发

    、准确的中文语音合成效果;可合成任意的中文文本,支持英文字母的合成; •具有智能的文本分析处理
    发表于 12-02 08:36

    一个不错的语音合成软件

    感觉比较好用的文字语音合成软件,用单片机和语音模块可以做提示器、报时等。
    发表于 03-14 16:48

    讯飞AI体验栈重磅上线,听写合成文字识别轻松搞定!

    ,后台曾推出智能聊天、星座分析、世界杯小游戏等多款应用功能,而这一次,借助讯飞开放平台的强大AI功能,我们一次集结了以下优秀AI能力,让你免费、高效地使用上堪称完美的日常
    发表于 07-24 09:02

    语音合成芯片与语音芯片对比

    )的转换。其特性是:支持任意中文文本的合成,对常见的数值、电话号码、时间日期、度量衡符号等格式的文本具有文本智能分析处理功能;只需要上位机通过串行通信对其发送一段文本信息,再将文本信息转化为
    发表于 03-08 17:26

    语音合成芯片与语音芯片对比

    )的转换。其特性是:支持任意中文文本的合成,对常见的数值、电话号码、时间日期、度量衡符号等格式的文本具有文本智能分析处理功能;只需要上位机通过串行通信对其发送一段文本信息,再将文本信息转化为
    发表于 03-11 15:39

    29页PPT,详细介绍Ouroboros的语音AI芯片

    阿里达摩院发布一款名为Ouroboros的语音AI芯片。据官方表示,这款芯片是业界首款专门用于语音合成算法的AI芯片,它基于FPGA芯片结构
    发表于 10-16 16:32

    语音合成IC与语音IC的两三事

    通讯方式,接收待合成的文本数据,实现文本到语音(或TTS语音)的转换。其特性是:支持任意中文文本的合成,对常见的数值、电话号码、时间日期、度量衡符号等格式的文本具有文本智能分析
    发表于 05-13 17:02

    语音合成IC选型之经验分享

    `语音合成芯片,又称TTS芯片,通过UART接口或SPI接口通讯方式,接收待合成的文本数据,实现文字语音模块
    发表于 05-19 14:37

    PWM在合成语音输出电路中的应用

    基于采用权电流D/A方式实现合成语音输出方式有集成电阻离散性大、开关的非线性,以及功耗高等缺点,提出了利用脉冲宽度调制(PWM)技术的方法将数字语音信号直接转换为脉冲宽
    发表于 05-16 11:53 45次下载

    基于TMS320C6678的合成语音检测算法

    流水和核间高效通信。实验结果表明,该方法是可行、有效的,并且基于TMS320C6678的合成语音检测系统的实时处理能力有很大提升。
    发表于 11-14 14:47 15次下载
    基于TMS320C6678的<b class='flag-5'>合成语音</b>检测算法

    采用人工智能技术的高质量合成语音开发和定制

      当涉及到高质量的合成语音开发和定制时,深度学习被证明是一个强大的工具。一家总部位于多伦多的初创公司, NVIDIA Inception 成员类似人工智能正在利用一种新的生成语音工具增加赌注,该工具能够创建高质量的合成人工智能
    的头像 发表于 04-08 09:28 1136次阅读

    语音合成数据的重要性:打造自然流畅的语音合成体验

    和应用提供关键支持。 提供训练基础: 语音合成数据作为语音合成模型的训练基础,直接影响合成语音的质量。丰富、准确的
    的头像 发表于 06-24 03:07 342次阅读

    语音合成技术的简介与未来发展

    计算机技术生成人类可听的语音,从而实现语音交互的过程。根据合成方式的不同,语音合成技术可分为以下几类: 参数
    的头像 发表于 09-15 18:17 817次阅读

    科普语音芯片和语音合成芯片的不同之处

     可发声芯片分为语音芯片和语音合成芯片,二者在技术和用途上不同。语音合成芯片能将任意文字实时转换
    的头像 发表于 10-31 15:42 262次阅读