我正在尝试创建一个 Node.js WebSocket 服务器,该服务器从 Twilio 接收 Base64 编码字符串形式的音频数据。然后使用 write() 方法将解码后的音频数据写入扬声器。 Twilio 表示它以 Base64 的“audio/x-mulaw”形式发送数据。
但是,当我运行代码时,扬声器输出一阵阵静态声音,而不是预期的音频。我不确定是什么导致了这个问题。半身静电确实与我对着麦克风讲话相符,但根本无法识别。
这是我的代码:
import { WebSocketServer } from 'ws';
import Speaker from 'speaker';
import alawmulaw from 'alawmulaw';
// Create a new Speaker instance with the specified format
const speaker = new Speaker();
const wss = new WebSocketServer({ port: 5000 });
wss.on('connection', function connection(ws) {
ws.on('message', function message(data) {
let obj = JSON.parse(data);
if (obj.event === "media") {
let buff = Buffer.from(obj.media.payload, 'base64');
let PCM = Buffer.from(alawmulaw.mulaw.decode(buff));
speaker.write(PCM);
}
});
});
我相对确信这是编码问题,但我尝试了各种配置,但到目前为止没有任何效果。如果有人能分享一些关于如何解决这个问题的想法,我将不胜感激。 谢谢!
我相信你需要告诉输入缓冲区是 8khz 采样率,因为它缺少标头,所以无法判断并假设 16khz