语音合成 java_语音合成 JAVA SDK
語音合成 Java SDK
一、SDK描述
京東AI為滿足TTS相關(guān)產(chǎn)品的快速接入,在REST API的基礎(chǔ)上對(duì)各種平臺(tái)和語言進(jìn)行封裝,大大降低客戶接入的難度。現(xiàn)已發(fā)布的平臺(tái)及語言有:C/C++,Java,Android,IOS,Python, H5等,已適用于大部分的應(yīng)用場(chǎng)景。并成功應(yīng)用于虛擬主播,智能客服,智能外呼,讀書,新聞讀報(bào),引導(dǎo)機(jī)器人,智能音箱等各領(lǐng)域的應(yīng)用場(chǎng)景。
用戶通過SDK創(chuàng)建TTSEngine對(duì)象,設(shè)置用戶需要的參數(shù),把文本數(shù)據(jù)通過speak和synthesize方法,交給實(shí)例化的ttsEngine對(duì)象,即可通過注冊(cè)的Listener對(duì)象,獲取生成的語音數(shù)據(jù)和系統(tǒng)的各種狀態(tài),大大降低了AI功能接入的難度。
本文檔只提供Java 版本中的在線語音合成功能
1.1. 功能描述
當(dāng)前主要支持的功能:
基本功能: 語音數(shù)據(jù)合成功能。
1.2. 鑒權(quán)說明
平臺(tái)為每個(gè)API提供試用體驗(yàn)服務(wù),您在AI市場(chǎng)選擇“免費(fèi)試用”規(guī)格下單后,即可開始體驗(yàn)業(yè)內(nèi)領(lǐng)先的人工智能API服務(wù)。 免費(fèi)試用服務(wù)具有調(diào)用量、QPS限制,如需更高性能的API服務(wù),可以提交咨詢工單,聯(lián)系京東AI擴(kuò)容購(gòu)買。
該SDK封裝TTS API的功能,需要先參考 接入流程 獲取AppKey和SecretKey,并在調(diào)用SDK時(shí)作為參數(shù)傳入。
1.3. 支持的系統(tǒng)
通用Java平臺(tái)系統(tǒng)
二、使用說明
2.1. 下載地址
TTS_SDK_JAVA.zip(5980552a7822a9df8bf1e67657661192)
三、接口說明
3.2 TTSParam 參數(shù)封裝
setOpts()
函數(shù)定義:
setOpts(String key, String val)
功能:
設(shè)置TTS系統(tǒng)參數(shù)值。
參數(shù)說明:
key:參數(shù)名稱
val:參數(shù)值
用例:
TTSParam ttsParam = new TTSParam();
ttsParam.setOpts("serverURL", "https://aiapi.jd.com/jdai/tts"); //接口地址(注意每個(gè)API接口地址不同,詳見購(gòu)買的API接口文檔)
ttsParam.setOpts("appKey", "XXXXXX");
ttsParam.setOpts("appSecret", "XXXXXXX");
ttsParam.setOpts("CustomerType", "0"); //固定值,Neuhub平臺(tái)
ttsParam.setOpts("tte", "1"); // 1:UTF-8 (目前僅支持UTF-8格式)
ttsParam.setOpts("aue", "1"); // 0:wav 1:pcm 2:opus 3:mp3
ttsParam.setOpts("tim", "0"); // 0:女聲 1:男聲 (注意每個(gè)API的音色參數(shù)不同,詳見購(gòu)買的API接口文檔)
ttsParam.setOpts("vol", "2.0"); // 音量[0.1, 10.0]
ttsParam.setOpts("sp", "1.0"); // 語速 [0.5, 2.0]
ttsParam.setOpts("sr", "24000"); // 采樣率 wav和pcm支持4k到24k的采樣率 opus支持8k 12k 16k 和24k的采樣率
ttsParam.setOpts("streamMode", "1"); // 1 流式模式, 0 非流式模式
ttsParam.setOpts("tt", "0"); // 文本格式, 0:文本 1:SSML
ttsEngine.setParam(ttsParam);
String txt = "我是京東小精靈";
System.out.println("start synthesize ....");
ttsEngine.synthesize(txt, listener);
System.out.println("synthesize end");
getOpts()
函數(shù)定義:
getOpts(String key)
功能:
獲取系統(tǒng)參數(shù)值
參數(shù):
key:參數(shù)名稱
用例:
String readTimeout = ttsParam.getOpts("readTimeout")
toString()
功能:
輸出系統(tǒng)的參數(shù)
用例:
String paramInfo = ttsParam.toString()
3.3 TTSEngineListener SDK事件監(jiān)聽類
onRecvData(byte[] data, int index);
功能:
合成數(shù)據(jù)的回調(diào)函數(shù)
參數(shù):
data:合成的數(shù)據(jù)
index:數(shù)據(jù)返回的index值, 當(dāng)index由正數(shù)變?yōu)樨?fù)數(shù)時(shí), 合成數(shù)據(jù)結(jié)束
onError()
函數(shù)定義:
onError(int err)
功能:
系統(tǒng)異?;卣{(diào)
參數(shù):
err :錯(cuò)誤碼
3.4 TTSEngine 引擎類
TTSEngine()
函數(shù)定義:
TTSEngine()
功能:
創(chuàng)建tts engine對(duì)象
用例:
TTSEngine ttsEngine = new TTSEngine()
setParam()
函數(shù)定義:
setParam(TTSParam param)
功能:
設(shè)置參數(shù)。
參數(shù):
param:TTSEngine 參數(shù)對(duì)象
用例:
ttsEngine.setParam(ttsParam)
synthesize()
函數(shù)定義:
synthesize(String txt, TTSEngineListener listener)
功能:
TTS 合成音頻功能。
參數(shù):
txt:文本輸入。
listener:監(jiān)聽函數(shù)。
用例:
String txt = "我是京東小精靈";
ttsEngine.synthesize(txt, listener);
五、錯(cuò)誤碼
此處錯(cuò)誤碼只包含的SDK,只處理SDK處理的錯(cuò)誤,API的錯(cuò)誤通過onError函數(shù)直接透?jìng)鳌?/p>
Name
Value
Description
OK_NO
0
Success
ERR_RESOURCE_NO
-100
Loading error
ERR_PLAYER_NO
-101
audio player error
ERR_TEXTEMPTY_NO
-102
Text is empty
ERR_TEXTTOOLONG_NO
-103
Text is too long
ERR_SYNTHESIZE_NO
-104
Synthesize error
ERR_INITTTSENGINE_NO
-105
Init TTS engine error
ERR_BATCHEMPTY_NO
-106
Batch speak empty
ERR_BATCHTOOLONG_NO
-107
Batch speak too long
ERR_PLAYERNULL_NO
-108
Audio player is null
ERR_PLAYERCLOSE_NO
-108
Audio player release failed
ERR_TTSENGINECLOSE_NO
-110
TTS engine release failed
ERR_NOT_SUPPORT
-111
TTS engine not support
ERR_SRV_Error
-112
TTS Srv status
ERR_NOT_AUTH
-113
TTS Not Auth
ERR_NO_Data_Recv
-114
Recv Data len = 0
ERR_PARAM_NO_SUPPORT
-115
Param Not Support
ERR_SRV_Exception
-116
Http Srv Exception
ERR_AUTH_OK
-117
TTS Auth OK
ERR_AUTH_Err
-118
TTS Auth Err
ERR_UNKNOWN_NO
-999
Unknown error
六、Demo示例
static boolean isSynthesizeStart = true;
static boolean isFileStart = true;
final boolean isEnd = false;
static int errno = -1;
public static void main( String[] args )
{
System.out.println( "Hello World!" );
System.out.println("Hello JD TTS ");
final Base64.Encoder encoder = Base64.getEncoder();
TTSEngine ttsEngine = new TTSEngine();
TTSParam ttsParam = new TTSParam();
TTSEngineListener listener = new TTSEngineListener() {
public int onRecvData(byte[] audioBin, int index) {
if(errno < 0) {
System.out.println("errno=" + errno);
return -1;
}
System.out.println("onRecvData :index=" + index + ", onRecvData=" + encoder.encodeToString(audioBin));
if (index > 0) { // 沒有結(jié)束
FileUtil.WriteBuf(audioBin, isFileStart, false);
} else {
FileUtil.WriteBuf(audioBin, isFileStart, true);
}
isFileStart = false;
return 0;
}
public void onError(int err) {
//System.out.println("onError");
errno = err;
return ;
}
};
//server
ttsParam.setOpts("serverURL", "https://aiapi.jd.com/jdai/tts"); //接口地址(注意每個(gè)API接口地址不同,詳見購(gòu)買的API接口文檔)
ttsParam.setOpts("appKey", "XXXXXX");
ttsParam.setOpts("appSecret", "XXXXXXX");
ttsParam.setOpts("CustomerType", "0"); //固定值,Neuhub平臺(tái)
//param
ttsParam.setOpts("tte", "1"); // 1:UTF-8 (目前僅支持UTF-8格式)
ttsParam.setOpts("aue", "3"); // 0:wav 1:pcm 2:opus 3:mp3
ttsParam.setOpts("tim", "0"); // 0:女聲 1:男聲(注意每個(gè)API的音色參數(shù)不同,詳見購(gòu)買的API接口文檔)
ttsParam.setOpts("vol", "2.0"); // 音量[0.1, 10.0]
ttsParam.setOpts("sp", "1.0"); // 語速 [0.5, 2.0]
ttsParam.setOpts("sr", "24000"); // 采樣率 wav和pcm支持4k到24k的采樣率 opus支持8k 12k 16k 和24k的采樣率
ttsParam.setOpts("streamMode", "1"); // 1 流式模式, 0 非流式模式
ttsParam.setOpts("tt", "0"); // 文本格式, 0:文本 1:SSML
ttsEngine.setParam(ttsParam);
String txt = "我是京東小精靈";
System.out.println("start synthesize ....");
ttsEngine.synthesize(txt, listener);
System.out.println("synthesize end");
}Copyright ? JD AI Platform all right reserved,powered by GitbookFile Modify:
2021-01-28 07:06:14
總結(jié)
以上是生活随笔為你收集整理的语音合成 java_语音合成 JAVA SDK的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据挖掘算法之-关联规则挖掘(Assoc
- 下一篇: 求HCNP实验指南