我使用AWS-SDK使用base-64将语音转换为文本,当我通过套接字将数据发送到服务器时,它打开了连接,但是打开后立即关闭了连接并且没有发送任何结果, 这是我的服务器代码:
function pcmEncode(input) {
var offset = 0;
var buffer = new ArrayBuffer(input.length * 2);
var view = new DataView(buffer);
for (var i = 0; i < input.length; i++, offset += 2) {
var s = Math.max(-1, Math.min(1, input[i]));
view.setInt16(offset, s < 0 ? 0x8000 : 0x7FFF, true);
}
return buffer;
}
function getAwsEventMessage(buffer) {
return {
headers: {
":message-type": {
type: "string",
value: "event",
},
":event-type": {
type: "string",
value: "AudioEvent",
},
},
body: buffer,
}
}
function speechToText(io, config) {
let ws;
io.on('start', () => {
console.log('---------start')
let awsURL = awsSignature.createPreSignedUrl({
region: config.region,
sampleRate: 16000,
languageCode: "en-US",
accessKeyId: config.accessKeyId,
secretAccessKey: config.secretAccessKey
});
ws = new WebSocket(awsURL)
//open up our WebSocket connection
ws.binaryType = "arraybuffer";
ws.on("open", () => console.log('open'))
ws.on("message", () => console.log('message'))
ws.on("error", () => console.log('err'))
ws.on("close", () => console.log('close'))
})
io.on("speech_to_text", (stream, data) => {
console.log('write-----')
if (ws.readyState === ws.OPEN) {
ws.send(convertAudioToBinaryMessage(stream))
}
})
}
意外行为: 当我打开套接字连接以从前端发送流时,它立即关闭并且不返回任何结果。