1. 前言
語音合成技術(shù)在生活中用越來越廣泛,閱讀聽書、訂單播報、智能硬件、語音導航 很多場景下都加入了語音播報功能。語音合成基于深度神經(jīng)網(wǎng)絡技術(shù),提供高度擬人、流暢自然的語音合成服務,可以模擬出不同人的聲音,讓應用APP、設備開口說話,還能智能化訓練個性語音。
這篇文章就介紹華為云提供的語音合成服務使用方法,利用提供的API接口完成語音合成功能,將合成的語音下載下來。
2. 開通功能
華為云的提供的語音合成,是一種將文本轉(zhuǎn)換成逼真語音的服務。用戶通過實時訪問和調(diào)用API獲取語音合成結(jié)果,將用戶輸入的文字合成為音頻。通過音色選擇、自定義音量、語速,為企業(yè)和個人提供個性化的發(fā)音服務。
2.1 語音交互服務
地址: https://console.huaweicloud.com/sis/?region=cn-north-4#/sis/stts
2.2 幫助文檔
地址: https://support.huaweicloud.com/api-sis/sis_03_0111.html
(1)請求Header參數(shù):
參數(shù) | 是否必選 | 參數(shù)類型 | 描述 |
---|---|---|---|
X-Auth-Token | 是 | String | 用戶Token。Token認證就是在調(diào)用API的時候?qū)oken加到請求消息頭,從而通過身份認證,獲得操作API的權(quán)限,響應消息頭中X-Subject-Token的值即為Token。 |
請求頭里的X-Auth-Token字段在之前的文章已經(jīng)介紹過,獲取方法看這里: https://bbs.huaweicloud.com/blogs/317759 翻到2.3小節(jié)。
**
(2)請求Body參數(shù):**
參數(shù) | 是否必選 | 參數(shù)類型 | 描述 |
---|---|---|---|
text | 是 | String | 待合成的文本,文本長度限制小于500字符。 |
config | 否 | 配置JSON | 語音合成配置信息。 |
(3)TtsConfig的配置參數(shù):
參數(shù) | 是否必選 | 參數(shù)類型 | 描述 |
---|---|---|---|
audio_format | 否 | String | 語音格式頭:wav、mp3、pcm默認:wav父節(jié)點:config |
sample_rate | 否 | String | 采樣率:16000、8000默認:8000父節(jié)點:config |
property | 否 | String | 語音合成特征字符串,組成形式為{language} {speaker} {domain},即“語種人員標識領域”。發(fā)音人分為普通發(fā)音人和精品發(fā)音人,每次調(diào)用價格相同,針對精品發(fā)音人,每50字計一次調(diào)用,不足50字按一次計;普通發(fā)音人每100字計一次調(diào)用,不足100字按一次計。其中1個漢字、1個英文字母或1個標點均算作1個字符。精品發(fā)音人:區(qū)域僅支持cn-north-4、cn-east-3,暫時不支持音高調(diào)節(jié)。使用精品發(fā)音人如果報錯SIS.0411,請檢查是否符合使用約束。默認:chinese_xiaoyan_common父節(jié)點:config |
speed | 否 | Integer | 語速。取值范圍:-500~500默認值:0父節(jié)點:config**說明:**當取值為“0”時,表示一個成年人正常的語速,約為250字/分鐘。設置該值時,語速和數(shù)值沒有絕對的映射關(guān)系。 |
pitch | 否 | Integer | 音高。取值范圍: -500~500默認值:0父節(jié)點:config |
volume | 否 | Integer | 音量。取值范圍:0~100默認值:50父節(jié)點:config |
(4)普通發(fā)音人property取值范圍:
property取值 | 描述 |
---|---|
chinese_xiaoqi_common | 小琪,標準女聲發(fā)音人。 |
chinese_xiaoyu_common | 小宇,標準男聲發(fā)音人。 |
chinese_xiaoyan_common | 小燕,溫柔女聲發(fā)音人。 |
chinese_xiaowang_common | 小王,童聲發(fā)音人。 |
chinese_xiaowen_common | 小雯,柔美女聲發(fā)音人。 |
chinese_xiaojing_common | 小婧,俏皮女聲發(fā)音人。 |
chinese_xiaosong_common | 小宋,激昂男聲發(fā)音人。 |
chinese_xiaoxia_common | 小夏,熱情女聲發(fā)音人。 |
chinese_xiaodai_common | 小呆,呆萌童聲發(fā)音人。 |
chinese_xiaoqian_common | 小倩,成熟女聲發(fā)音人。 |
english_cameal_common | cameal,柔美女聲英文發(fā)音人。 |
(5)精品發(fā)音人property取值范圍:
property取值 | 描述 |
---|---|
chinese_huaxiaoxia_common | 華小夏,熱情女聲發(fā)音人。 |
chinese_huaxiaogang_common | 華曉剛,利落男聲發(fā)音人。 |
chinese_huaxiaolu_common | 華小璐,知性女聲發(fā)音人。 |
chinese_huaxiaoshu_common | 華小舒,舒緩女聲發(fā)音人。 |
chinese_huaxiaowei_common | 華小唯,嗲柔女聲發(fā)音人。 |
chinese_huaxiaoliang_common | 華小靚,嘹亮女聲發(fā)音人。 |
chinese_huaxiaodong_common | 華曉東,成熟男聲發(fā)音人。 |
chinese_huaxiaoyan_common | 華小顏,嚴厲女聲發(fā)音人。 |
chinese_huaxiaoxuan_common | 華小萱,臺灣女聲發(fā)音人。 |
chinese_huaxiaowen_common | 華小雯,柔美女聲發(fā)音人。 |
chinese_huaxiaoyang_common | 華曉陽,朝氣男聲發(fā)音人。 |
chinese_huaxiaomin_common | 華小閩,閩南女聲發(fā)音人。 |
chinese_huanvxia_literature | 華女俠,武俠女生發(fā)音人,只支持16k的采樣率。 |
chinese_huaxiaoxuan_literature | 華曉懸,懸疑男聲發(fā)音人,只支持16k的采樣率。 |
chinese_huaxiaomei_common | 華小美,溫柔女聲發(fā)音人。 |
(6)響應的Body參數(shù)
狀態(tài)碼: 200
參數(shù) | 是否必選 | 參數(shù)類型 | 描述 |
---|---|---|---|
trace_id | 否 | String | 服務內(nèi)部的令牌,可用于在日志中追溯具體流程。在某些錯誤情況下可能沒有此令牌字符串。 |
result | 否 | object | 調(diào)用成功表示識別結(jié)果,調(diào)用失敗時無此字段。 |
(7)CustomResult參數(shù)
參數(shù) | 是否必選 | 參數(shù)類型 | 描述 |
---|---|---|---|
data | 否 | String | 語音數(shù)據(jù),以Base64編碼格式返回。用戶如需生成音頻,需要將Base64編碼解碼成byte數(shù)組,再保存為音頻,音頻格式同**“audio_format”**參數(shù)設置的值,默認為wav格式。 |
2.3 在線調(diào)試接口
通過在線調(diào)試接口,可以快速調(diào)試接口參數(shù),請求方式,返回結(jié)果等信息。
地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/debug?product=SIS&api=RunTts
還可以在線填入測試參數(shù),進行測試效果。
2.4 請求接口總結(jié)
請求地址格式: 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編碼語音數(shù)據(jù),可以解碼后保存成文件即可。
3. 實現(xiàn)源碼
軟件采用QT設計的,核心部分主要是用到了HTTP請求相關(guān)的操作。
3.1 文字轉(zhuǎn)語音源碼
//文本轉(zhuǎn)語音
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);
?
//設置數(shù)據(jù)提交格式
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json"));
?
//設置token
request.setRawHeader("X-Auth-Token",Token);
?
//構(gòu)造請求
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());
?
//發(fā)送請求
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);
?
//自己創(chuàng)建的TCP服務器,測試用
//requestUrl="http://10.0.0.6:8080";
?
//設置數(shù)據(jù)提交格式
request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json;charset=UTF-8"));
?
//構(gòu)造請求
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);
?
//發(fā)送請求
manager- >post(request, text.toUtf8());
}
?
3.3 解析返回值
//解析反饋結(jié)果
void Widget::replyFinished(QNetworkReply *reply)
{
QString displayInfo="";
?
int statusCode = reply- >attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
?
//讀取所有數(shù)據(jù)
QByteArray replyData = reply- >readAll();
?
qDebug()< < "狀態(tài)碼:"<
-
音頻
+關(guān)注
關(guān)注
29文章
3031瀏覽量
83287 -
API
+關(guān)注
關(guān)注
2文章
1571瀏覽量
63772 -
AI
+關(guān)注
關(guān)注
88文章
34868瀏覽量
277617 -
語音識別
+關(guān)注
關(guān)注
39文章
1779瀏覽量
114098 -
語音合成
+關(guān)注
關(guān)注
2文章
92瀏覽量
16471 -
深度神經(jīng)網(wǎng)絡
+關(guān)注
關(guān)注
0文章
62瀏覽量
4689 -
華為云
+關(guān)注
關(guān)注
3文章
2768瀏覽量
18246
發(fā)布評論請先 登錄
訊飛AI體驗棧重磅上線,聽寫合成文字識別輕松搞定!
語音合成芯片與語音芯片對比
語音合成芯片與語音芯片對比
29頁PPT,詳細介紹Ouroboros的語音AI芯片
語音合成IC與語音IC的兩三事
語音合成IC選型之經(jīng)驗分享
PWM在合成語音輸出電路中的應用
基于短信和語音合成的報警接口設計
基于TMS320C6678的合成語音檢測算法

評論