Azure语音SDK:JavaScript中GetUserMedia的createPushStream

问题描述

我正在尝试查找有关如何通过Azure Speech SDK将getUserMedia流对象用于createPushStream的示例。请注意,我打算在Safari中运行代码,因此无法使用MediaRecorder。 目的是使用getUserMedia流来馈送SpeechSDK.SpeechRecognizer(SpeechSDK.AudioConfig.fromStreamInput)并将流另存为音频文件。 SpeechSDK.AudioConfig.fromDefaultMicrophoneInput不允许这样做。

解决方法

执行此操作的一种方法是获取通过connection.messageSent回调发送到服务的音频数据。以通常的方式构建识别器(您应该能够使用fromDefaultMicrophoneInput),然后添加以下回调:

    const con: sdk.Connection = sdk.Connection.fromRecognizer(r);

    let wavFragmentCount: number = 0;

    const wavFragments: { [id: number]: ArrayBuffer; } = {};

    con.messageSent = (args: sdk.ConnectionMessageEventArgs): void => {
        if (args.message.path === "audio" && args.message.isBinaryMessage && args.message.binaryMessage !== null) {
            wavFragments[wavFragmentCount++] = args.message.binaryMessage;
        }
    };

一旦识别完成,wavFragments将捕获音频数据,您可以将其写入文件。

(此示例代码摘自ConnectionTest.ts