语音AI语⾳合成时,使用原生 js ws 发送的报文是怎样的?https://help.aliyun.com/document_detail/84435.html?spm=a2c4g.84425.0.0.1fcc142anBzqt6表示里的数据是传在 header 里还是 payload 里
语音合成请求需要使用WebSocket协议进行发送。在发送请求时,语音合成数据是通过WebSocket的payload传输的,即发送的报文内容需要写入WebSocket消息的payload中,而不是header中。具体的报文格式可以参考文档中的示例代码:
var crypto = require('crypto');
function createAudioBuffer(ws, text, appkey, token) {
var audioData = {
"format": "pcm",
"sample_rate": "16000",
"voice": "xiaoyun",
"speech": text
};
var audioDataString = JSON.stringify(audioData);
var audioDataBuffer = new Buffer(audioDataString);
var audioReqData = {
"id": crypto.randomBytes(16).toString("hex"),
"method": "POST",
"url": "/synth_voice",
"headers": {
"content-type": "application/json",
"authorization": "Bearer " + token,
"x-appkey": appkey,
"x-sdk-version": "2.0.0",
"x-request-id": crypto.randomBytes(16).toString("hex")
},
"body": audioDataBuffer
};
var audioReqDataString = JSON.stringify(audioReqData);
var audioReqDataBuffer = new Buffer(audioReqDataString);
var audioHeaderBuffer = new Buffer(2);
audioHeaderBuffer[0] = 0x82;
audioHeaderBuffer[1] = audioReqDataBuffer.length;
var audioBuffer = Buffer.concat([audioHeaderBuffer, audioReqDataBuffer]);
ws.send(audioBuffer);
console.log("audio buffer length:", audioBuffer.length);
}
可以看到,在创建语音合成请求发送的Buffer时,将请求数据写入了WebSocket消息的payload中。同时,在headers中携带了请求的Authorization等信息。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。