我正在尝试查找有关如何使用 getUserMedia 流对象通过 Azure Speech SDK 创建PushStream 的示例。请注意,我打算在 Safari 中运行代码,因此无法使用 MediaRecorder。目的是使用 getUserMedia 流来提供 SpeechSDK.SpeechRecognizer (SpeechSDK.AudioConfig.fromStreamInput) 并将流保存为音频文件。SpeechSDK.AudioConfig.fromDefaultMicrophoneInput 不允许这样做。
1 回答
0
一种方法是通过 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)
于 2020-10-13T14:50:13.450 回答