我正在尝试从麦克风录制音频数据,并通过 websocket 将其作为带符号的 16 位 PCM 数据以 16000HZ 发送(在浏览器中使用 javascript)。
我可以录制音频,重新采样并发送到扬声器:
const audioStream = await navigator.mediaDevices.getUserMedia({
audio: true,
video: false
});
const audioContext = new AudioContext({ 16000 });
const audioStreamSource = audioContext.createMediaStreamSource(audioStream);
audioStreamSource.connect(audioContext.destination);
这可行,但是否也可以定期获取原始音频数据并通过 websocket 发送?
AudioWorkletProcessor
访问原始 PCM 数据。
AudioWorkletProcessor
在音频线程上运行,这意味着您需要先将音频数据发送到主线程或 Web Worker,然后才能通过 WebSocket 连接发送它,因为无法在音频上设置 WebSocket 连接线程。