问题描述
我正在尝试查找有关如何通过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)