!!!!!!!!!!!注意:返回的是PCM!!!!!!!!!!!!!!!!
*/
public class TTSStream {
private static final Logger logger;static {
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
logger = LogManager.getLogger(TTSStream.class);
}public static void main(String[] args) {
try {
IO.Options options = new IO.Options();
options.transports = new String[] {WebSocket.NAME};
options.rememberUpgrade = true;
options.secure = true;
options.path = "/openApisocket.io";;
SocketSSL.set(options);
Long time = System.currentTimeMillis()/1000;
options.query = "app_id=xxxx×tamp=" + time +"&authorization=" + RequestUtil.getAuthorization(time) +"&req_from=C";
Socket socket = IO.socket(URI.create("wss://meta-daily.yiwise.com"), options);
// 监听连接事件
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Connected to server");
}
});socket.on("onConnect", new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("Connected to server " + args[0]);
}
});socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
@Override
public void call(Object... args) {
for (Object arg : args) {
System.out.println("Connected to server error: " + arg);
}
}
});File file =new File("test.pcm");
FileOutputStream fout = new FileOutputStream(file);
// 监听TTS合成完毕事件
socket.on("onTTSComplete", new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("onTTSComplete: " + args[0]);
try {
fout.close();
}catch (Exception e) {
e.printStackTrace();
}
}
});// 监听TTS合成流式输出
socket.on("onTTSMessage", new Emitter.Listener() {
@Override
public void call(Object... args) {
//System.out.println("onTTSMessage: " + args[0]);
try {
String encode = (String) args[0];
byte[] bytes = Base64.decode(encode);
System.out.println(bytes.length);
fout.write(bytes);
}catch (Exception e){
e.printStackTrace();
}
}
});// 监听TTS合成失败事件
socket.on("onTTSFail", new Emitter.Listener() {
@Override
public void call(Object... args) {
System.out.println("onTTSFail: " + args[0]);
}
});// 连接到服务器
socket.connect();
//设置要和成的对象
TTSTextRequest request = new TTSTextRequest();
request.setText("你好啊,我是小智,很高兴为您服务。");
// 注意这个音色需要联系技术人员开通,否则无法使用流式输出
request.setVoice("xxxxx");
//语调,范围是-500500,可选,默认是0。
request.setPitchRate(10);
//语速,范围是-500500,默认是0。
request.setSpeechRate(10);
socket.emit("ttsText", JSONUtil.parse(request), new Ack() {
@Override
public void call(Object... objects) {
if(objects != null) {
System.out.println("ttsText: " + JSONUtil.toJsonStr(objects));
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}