【问题标题】:How to create WAV stream in JavaScript with help of RecordRTC?如何借助 RecordRTC 在 JavaScript 中创建 WAV 流?
【发布时间】:2021-03-02 03:30:09
【问题描述】:

我正在尝试创建一个应用程序来转录流式录音。这个想法是使用RecordRTC 捕获用户的麦克风流,并使用 Socket.IO 将其分块发送到 gunicorn 服务器。然后服务器将为Azure Speech to Text创建一个输入流:

我正在尝试使用 RecordRTC 在 Azure Speech to Text 接受的 format 中每 x 秒捕获一次音频:

startRecording.onclick = function() {
    startRecording.disabled = true;
    navigator.getUserMedia({
        audio: true
    }, 
    function(stream) {
            recordAudio = RecordRTC(stream, {
                type: 'audio',

                mimeType: 'audio/wav',
                desiredSampRate: 16000, // accepted sample rate by Azure
                timeSlice: 1000,
                ondataavailable: (blob) => {
                    socketio.emit('stream_audio', blob); // sends blob to server
                    console.log("sent blob")
                },
                recorderType: StereoAudioRecorder,
                numberOfAudioChannels: 1
        });
        recordAudio.startRecording();
        stopRecording.disabled = false;
    }, 
    function(error) {
        console.error(JSON.stringify(error));
    });
};

ondataavailable 返回的 blob 似乎返回了一个字节字符串。但是,对于 Azure Speech to Text,我更喜欢接收波形格式的块。可以使用 getBlob() 检索 WAV 格式的整个录音,但是客户端仅在调用 stopRecording() 后才生成文件。

RecordRTC 有没有办法每 x 秒返回一个波形格式的 blob?如果没有,还有哪些其他选项可以通过 Gunicorn 将音频流式传输到 Azure Speech to Text?

非常感谢所有帮助!

【问题讨论】:

  • 所以您正在寻找一些关于从 blob 接收数据并将其保存为 .wav 文件在您的 socket.io 服务器中的代码?

标签: javascript python audio recordrtc azure-speech


【解决方案1】:

Frank,您打算使用Speech SDK 来使用 Push 或 Pull 输入流转录音频吗?为此,您不需要 WAV 格式的音频块。您将原始 PCM 以 16khz、16 位/样本单声道的默认格式馈送到输入流。见sample code on GitHub

达伦

【讨论】:

  • 你是对的!然而,事实证明上面的代码也可以工作。
猜你喜欢
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 1970-01-01
相关资源
最近更新 更多