问题描述
我正在尝试从浏览器的麦克风接收音频流并将其发送到 MS 认知语音服务。
我使用如下所示的 JavaScript 来获取音频流缓冲区。
navigator.mediaDevices.getUserMedia({ audio: true })
.then((mic) => {
var mediaStream = audioContext.createmediastreamsource(mic);
var recorder = null;
if (audioContext.createscriptprocessor) {
recorder = audioContext.createscriptprocessor(44100,512,1);
} else {
recorder = audioContext.createJavaScriptNode(44100,1);
}
recorder.onaudioprocess = function (e) {
_dotNetAudio.sendAudioBuffer(e.inputBuffer.getChannelData(0));
}
mediaStream.connect(recorder);
recorder.connect(audioContext.destination);
sendSuccessMessage(mic.id);
})
.catch((e) => {
sendErrorMessage(e.message);
});
方法_dotNetAudio.sendAudioBuffer调用C#方法来服务流数据。
[JSInvokable]
public Task OnAudioBufferReceived(object audioBuffer)
{
if(audioBuffer == null) return Task.CompletedTask;
if (audioBuffer is JsonElement)
{
double[] doubleArray = ((JsonElement)audioBuffer).EnumerateObject().Select(x => x.Value.GetDouble()).ToArray();
**byte[] bytesArray = doubleArray;**
AudioBufferReceived?.Invoke(this,bytesArray);
}
return Task.CompletedTask;
}
但我不知道如何将接收到的麦克风数据从 JavaScript(Fload32Array 类型/double[])转换为 byte[]。需要为 PushAudioInputStream (Microsoft.CognitiveServices.Speech.Audio) 提供数据。
你有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)