如何解决将 AudioBuffer 从 JavaScript (Fload32Array) 转换为 C# (ByteArray)
我正在尝试从浏览器的麦克风接收音频流并将其发送到 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 举报,一经查实,本站将立刻删除。