有道智云在線 TTS SDK 簡介
概念解釋
TTS:功能包含對文本的合成功能,輸入需要合成的文本,返回可以播放的在線URL和本地可以播放的文件和路徑
說明
Hi,您好,歡迎使用有道智云TTS Android SDK。如果您想快速體驗服務(wù),建議您前往官網(wǎng)體驗中心或者搜索小程序(有道智云體驗中心)進(jìn)行試用。
本文檔主要針對需要集成TTS服務(wù) Android SDK的開發(fā)工程師,詳細(xì)描述有道智云TTS能力及集成過程。
如果您有與我們商務(wù)合作的需求,可以通過一下方式聯(lián)系我們:
商務(wù)郵箱: AIcloud_Business@corp.youdao.com
如果您對文檔內(nèi)容有任何疑問,可以通過以下幾種方式聯(lián)系我們:
客服QQ:1906538062
智云語音技術(shù)交流QQ群:861723255
聯(lián)系郵箱: zyservice@corp.youdao.com
溫馨提示:
本文檔主要針對開發(fā)人員,接入測試前需要在后臺創(chuàng)建Android應(yīng)用,并綁定TTS實例;如果您還沒有,請按照新手指南操作。
平臺向每個賬戶贈送100元的體驗金,供用戶集成前測試所用,具體資費規(guī)則詳見TTS服務(wù)報價。
功能介紹
有道TTS SDK 是有道智云開放平臺提供的云服務(wù)之一,是有道TTS接口的一種實現(xiàn),支持文字合成語音等功能。
兼容性
支持設(shè)備:運(yùn)行了 Android 4.1及以上系統(tǒng)的 Android 設(shè)備
TTS SDK集成指南
集成前提
開始集成SDK之前開發(fā)者需要登錄有道開放平臺(http://), 創(chuàng)建應(yīng)用獲取應(yīng)用ID(或者通過運(yùn)營人員獲取應(yīng)用ID),以便使用TTS服務(wù)。
集成步驟
SDK包導(dǎo)入
請在工程文件根目錄下創(chuàng)建一個名為 libs 的子目錄(有的話則不需要創(chuàng)建),并將YoudaoBase.jar,so包和YoudaoTTS.jar拷貝到 libs 目錄下,將以下代碼添加到app的build.gradle中:
android {
sourceSets.main.jniLibs.srcDirs = ['libs']
...
}
dependencies {
implementation files('libs/online_auth.jar')
implementation files('libs/zhiyun_offline_common.jar')
implementation files('libs/YoudaoBase_v20230803.jar')
implementation files('libs/YoudaoTTS_v1.0.1.jar')
}
也可以把so包放在jniLibs下(去掉上面的jniLibs的設(shè)置)
AndroidManifest配置
添加權(quán)限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
代碼混淆配置
代碼混淆文件proguard-project.txt,添加如下內(nèi)容
-ignorewarnings
-libraryjars libs/YoudaoBase_v2.0.0.jar
-libraryjars libs/YoudaoTTS_v1.0.0.jar
-keep class com.youdao.sdk.ydtranslate.** { ;}
-keep class com.youdao.speechsynthesizer.online.* { *;}
SDK初始化
使用TTS SDK,請在程序的Application中調(diào)用SDK初始化代碼,可以參考demo中DemoApplication
//appkey即應(yīng)用ID
YouDaoApplication.init(this, appkey);
功能集成
請參考demo中的 SpeechSynthesizerDemoActivity
使用
參數(shù)說明
speed:合成語音的速度
lanType:支持語種的code
source:設(shè)置為app對應(yīng)的名稱(英文字符串)
timeout:表示超時時間
voice:翻譯結(jié)果發(fā)音選擇,0為女聲,1為男聲,默認(rèn)為女聲
volume:音量大小,最大5.0,最小0.5
構(gòu)造TTS輸入對象
tps = new YoudaoSpeechSynthesizerParameters.Builder()
.source("youdaotts")
.timeout(12000)
.voiceName(currentVoiceName)
.speed(s)
.format(Constants.SOUND_OUTPUT_MP3)
.volume(Float.valueOf(volumeEditText.getText().toString().trim()))
.filePath(getExternalCacheDir().toString() + "/youdao/")///自定義文件夾需要獲取讀寫權(quán)限
.fileName("abc")
.build();
youdaoSpeechSynthesizer = YoudaoSpeechSynthesizer.getInstance(tps);
設(shè)置回調(diào),開始合成
設(shè)置回調(diào)接口包含兩個方法:onResult表示合成成功,相關(guān)結(jié)果存儲在result參數(shù)中,onError表示失敗,失敗信息放在TTSErrorCode是一個枚舉類中。
注意:整個合成是異步的,回調(diào)在子線程進(jìn)行,若涉及到界面操作,請切回主線程。
youdaoSpeechSynthesizer.synthesizeAndCache(text, listener, "requestid");
YoudaoSpeechSynthesizerListener listener = new YoudaoSpeechSynthesizerListener() {
@Override
public void onResult(final TTSResult result, String input, final int seq, String requestid) {
}
@Override
public void onError(final TTSErrorCode error, final String input, final int seq, String requestid) {
}
};
發(fā)言人列表
中文名稱 | 調(diào)用參數(shù) | 音色 | 語種 | 計費分類 |
---|
有小智 | youxiaozhi | 男 | 中文 | 常見語種 |
有小薰 | youxiaoxun | 女 | 中文 | 常見語種 |
有小沁 | youxiaoqin | 女 | 中文 | 常見語種 |
有雨婷 | youyuting | 女 | 中文 | 常見語種 |
有婷婷 | youtingting | 女 | 中文 | 常見語種 |
有小浩 | youxiaohao | 男 | 中文 | 常見語種 |
有小楠 | youxiaonan | 男 | 中文 | 常見語種 |
有小美 | youxiaomei | 女 | 英文美式 | 常見語種 |
有小英 | youxiaoying | 女 | 英文英式 | 常見語種 |
有小偉 | youxiaowei | 男 | 英文中文(混合) | 常見語種 |
有小官 | youxiaoguan | 男 | 英文英式 | 常見語種 |
有雅婷 | youyating | 女 | 英文美式 | 常見語種 |
有可醬 | youkejiang | 女 | 日文 | 常見語種 |
原田君 | yuantianjun | 男 | 日文 | 常見語種 |
宮崎帥 | gongqishuai | 男 | 日文 | 非常見語種 |
有小貝 | youxiaobei | 女 | 中文 | 常見語種 |
薇小美 | weixiaomei | 女 | 英文美式 | 非常見語種 |
薇小英 | weixiaoying | 男 | 英文英式 | 非常見語種 |
有梅梅 | youmeimei | 女 | 英文(詞典發(fā)音) | 常見語種 |
有瑩瑩 | youyingying | 女 | 英文(詞典發(fā)音) | 常見語種 |
有小紹 | youxiaoshao | 女 | 中英混(詞典發(fā)音) | 常見語種 |
樸智幼 | piaozhiyou | 女 | 韓文 | 常見語種 |
樸泰言 | piaotaiyan | 男 | 韓文 | 常見語種 |
安娜 | anna | 女 | 葡語 | 非常見語種 |
薇小粵 | youxiaoyue | 女 | 粵語 | 非常見語種 |
艾米娜 | aimina | 女 | 阿拉伯 | 非常見語種 |
阿西亞 | axiya | 男 | 阿拉伯 | 非常見語種 |
薇加泰 | weijiatai | 男 | 加泰隆 | 非常見語種 |
薇小加 | weixiaojia | 女 | 加泰隆 | 非常見語種 |
Alois | Alois | 男 | 捷克 | 非常見語種 |
Bara | bara | 女 | 丹麥 | 非常見語種 |
Molly | Molly | 女 | 荷蘭 | 非常見語種 |
William | William | 男 | 英語(澳大利亞) | 非常見語種 |
Olivia | Olivia | 女 | 英語(澳大利亞) | 非常見語種 |
neale | neale | 女 | 英語(英國) | 非常見語種 |
Osric | Osric | 男 | 英語(印度) | 非常見語種 |
Rama | Rama | 女 | 英語(印度) | 非常見語種 |
Noah | Noah | 男 | 英語(美國) | 非常見語種 |
芬小美 | fenxiaomei | 女 | 芬蘭語 | 非常見語種 |
芬小帥 | fenxiaoshuai | 男 | 芬蘭語 | 非常見語種 |
法小美 | faxiaomei | 男 | 法語 | 非常見語種 |
法小帥 | faxiaoshuai | 男 | 法語 | 非常見語種 |
法大拿 | fadana | 女 | 法語(加拿大) | 非常見語種 |
德小美 | dexiaomei | 女 | 德語 | 非常見語種 |
德小帥 | dexiaoshuai | 男 | 德語 | 非常見語種 |
希小帥 | xixiaoshuai | 男 | 希臘語 | 非常見語種 |
希伯小帥 | xiboxiaoshuai | 男 | 希伯來語 | 非常見語種 |
印地小帥 | yindixiaoshuai | 男 | 印地語 | 非常見語種 |
印地小美 | yindixiaomei | 女 | 印地語 | 非常見語種 |
匈小帥 | xiongxiaoshuai | 男 | 匈牙利語 | 非常見語種 |
意小帥 | yixiaoshuai | 男 | 意大利語 | 非常見語種 |
意小美 | yixiaomei | 女 | 意大利語 | 非常見語種 |
注意: 更多中文音色發(fā)音人列表請查看發(fā)音人列表
錯誤代碼列表
錯誤碼 | 含義 |
---|
101 | 缺少必填的參數(shù) |
102 | 不支持的語言類型 |
103 | 翻譯文本過長 |
104 | 不支持的API類型 |
105 | 不支持的簽名類型 |
106 | 不支持的響應(yīng)類型 |
107 | 不支持的傳輸加密類型 |
108 | 應(yīng)用ID無效,注冊賬號,登錄后臺創(chuàng)建應(yīng)用和實例并完成綁定,可獲得應(yīng)用ID和應(yīng)用密鑰等信息 |
109 | batchLog格式不正確 |
110 | 無相關(guān)服務(wù)的有效實例 |
111 | 開發(fā)者賬號無效 |
112 | 請求服務(wù)無效 |
113 | q不能為空 |
114 | 不支持的圖片傳輸方式 |
201 | 解密失敗,可能為DES,BASE64,URLDecode的錯誤 |
202 | 簽名檢驗失敗 |
203 | 訪問IP地址不在可訪問IP列表 |
205 | 請求的接口與應(yīng)用的平臺類型不一致,如有疑問請參考入門指南 |
206 | 因為時間戳無效導(dǎo)致簽名校驗失敗 |
207 | 重放請求 |
301 | 辭典查詢失敗 |
302 | 翻譯查詢失敗 |
303 | 服務(wù)端的其它異常 |
304 | 會話閑置太久超時 |
401 | 賬戶已經(jīng)欠費停 |
402 | offlinesdk不可用 |
411 | 訪問頻率受限,請稍后訪問 |
412 | 長請求過于頻繁,請稍后訪問 |
1001 | 無效的OCR類型 |
1002 | 不支持的OCR image類型 |
1003 | 不支持的OCR Language類型 |
1004 | 識別圖片過大 |
1201 | 圖片base64解密失敗 |
1301 | OCR段落識別失敗 |
1411 | 訪問頻率受限 |
1412 | 超過最大識別字節(jié)數(shù) |
2003 | 不支持的語言識別Language類型 |
2004 | 合成字符過長 |
2005 | 不支持的音頻文件類型 |
2006 | 不支持的發(fā)音類型 |
2201 | 解密失敗 |
2301 | 服務(wù)的異常 |
2411 | 訪問頻率受限,請稍后訪問 |
2412 | 超過最大請求字符數(shù) |
3001 | 不支持的語音格式 |
3002 | 不支持的語音采樣率 |
3003 | 不支持的語音聲道 |
3004 | 不支持的語音上傳類型 |
3005 | 不支持的語言類型 |
3006 | 不支持的識別類型 |
3007 | 識別音頻文件過大 |
3008 | 識別音頻時長過長 |
3009 | 不支持的音頻文件類型 |
3010 | 不支持的發(fā)音類型 |
3201 | 解密失敗 |
3301 | 語音識別失敗 |
3302 | 語音翻譯失敗 |
3303 | 服務(wù)的異常 |
3411 | 訪問頻率受限,請稍后訪問 |
3412 | 超過最大請求字符數(shù) |
4001 | 不支持的語音識別格式 |
4002 | 不支持的語音識別采樣率 |
4003 | 不支持的語音識別聲道 |
4004 | 不支持的語音上傳類型 |
4005 | 不支持的語言類型 |
4006 | 識別音頻文件過大 |
4007 | 識別音頻時長過長 |
4201 | 解密失敗 |
4301 | 語音識別失敗 |
4303 | 服務(wù)的異常 |
4411 | 訪問頻率受限,請稍后訪問 |
4412 | 超過最大請求時長 |
5001 | 無效的OCR類型 |
5002 | 不支持的OCR image類型 |
5003 | 不支持的語言類型 |
5004 | 識別圖片過大 |
5005 | 不支持的圖片類型 |
5006 | 文件為空 |
5201 | 解密錯誤,圖片base64解密失敗 |
5301 | OCR段落識別失敗 |
5411 | 訪問頻率受限 |
5412 | 超過最大識別流量 |
9001 | 不支持的語音格式 |
9002 | 不支持的語音采樣率 |
9003 | 不支持的語音聲道 |
9004 | 不支持的語音上傳類型 |
9005 | 不支持的語音識別 Language類型 |
9301 | ASR識別失敗 |
9303 | 服務(wù)器內(nèi)部錯誤 |
9411 | 訪問頻率受限(超過最大調(diào)用次數(shù)) |
9412 | 超過最大處理語音長度 |
10001 | 無效的OCR類型 |
10002 | 不支持的OCR image類型 |
10004 | 識別圖片過大 |
10201 | 圖片base64解密失敗 |
10301 | OCR段落識別失敗 |
10411 | 訪問頻率受限 |
10412 | 超過最大識別流量 |
11001 | 不支持的語音識別格式 |
11002 | 不支持的語音識別采樣率 |
11003 | 不支持的語音識別聲道 |
11004 | 不支持的語音上傳類型 |
11005 | 不支持的語言類型 |
11006 | 識別音頻文件過大 |
11007 | 識別音頻時長過長,最大支持30s |
11201 | 解密失敗 |
11301 | 語音識別失敗 |
11303 | 服務(wù)的異常 |
11411 | 訪問頻率受限,請稍后訪問 |
11412 | 超過最大請求時長 |
12001 | 圖片尺寸過大 |
12002 | 圖片base64解密失敗 |
12003 | 引擎服務(wù)器返回錯誤 |
12004 | 圖片為空 |
12005 | 不支持的識別圖片類型 |
12006 | 圖片無匹配結(jié)果 |
13001 | 不支持的角度類型 |
13002 | 不支持的文件類型 |
13003 | 表格識別圖片過大 |
13004 | 文件為空 |
13301 | 表格識別失敗 |
15001 | 需要圖片 |
15002 | 圖片過大(1M) |
15003 | 服務(wù)調(diào)用失敗 |
17001 | 需要圖片 |
17002 | 圖片過大(1M) |
17003 | 識別類型未找到 |
17004 | 不支持的識別類型 |
17005 | 服務(wù)調(diào)用失敗 |
常見問題及注意事項
- 返回110
應(yīng)用沒有綁定服務(wù)實例,可以新建服務(wù),綁定服務(wù)。 - 返回108
appKey無效,注冊賬號, 登錄后臺創(chuàng)建應(yīng)用并完成綁定, 可獲得應(yīng)用ID和密鑰等信息,其中應(yīng)用ID就是appKey( 注意不是應(yīng)用密鑰) - 返回101
首先確保必填參數(shù)齊全,然后,確認(rèn)參數(shù)書寫是否正確。 - 返回202
如果確認(rèn)?appKey?和?appSecret?的正確性,仍返回202,一般是編碼問題。請確保?img?為UTF-8編碼.
版本更新記錄
上線日期 | 版本號 | 更新內(nèi)容 |
---|
2023.08.08 | v1.0.1 | 支持TTS 合成 |