首页 > 解决方案 > Azure 语音 SDK:来自 javascript 中的 GetUserMedia 的 createPushStream

问题描述

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

标签: javascriptsafariaudio-streaminggetusermediaazure-speech

解决方案


一种方法是通过 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


推荐阅读