javascript - Azure 语音 SDK:来自 javascript 中的 GetUserMedia 的 createPushStream
问题描述
我正在尝试查找有关如何使用 getUserMedia 流对象通过 Azure Speech SDK 创建PushStream 的示例。请注意,我打算在 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)
推荐阅读
- java - 如何使用 RxJava 对来自异步源的数据进行分组
- jenkins - 如何将环境变量作为参数传递给jenkins中的readProperties文件
- r - 使用列中的间隔来填充另一列的值
- git - git pull,不包括特定分支
- floating-action-button - 浮动操作按钮中的颜色矢量资源问题
- ios - UIPickerView EXC_BAD_ACCESS 崩溃
- kubernetes - 无效的 Kubernetes YAML 规范。此处不允许映射值
- python - 合并和更新具有重叠列的多个熊猫数据框
- r - 在 R 中运行 felm(固定效应线性模型)代码时,为什么我只得到 NA?
- spring-boot - 运行多个@SpringBootTest 时不应用@MockBean