Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
210 views
in Technique[技术] by (71.8m points)

Convert AudioBuffer from JavaScript (Fload32Array) to C# (ByteArray)

I am trying to receive audio stream from microphone from browser and send it to MS Cognitive Speech Services.

I use JavaScript like below in order to get audio stream buffer.

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, 512, 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);
});

The method _dotNetAudio.sendAudioBuffer invokes C# method to service stream data.

    [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;
    }

But I have no idea how to convert received microphone data from JavaScript (Fload32Array type / double[]) to byte[]. It is required for provide data for PushAudioInputStream (Microsoft.CognitiveServices.Speech.Audio).

Do you have any ideas?

question from:https://stackoverflow.com/questions/65945994/convert-audiobuffer-from-javascript-fload32array-to-c-sharp-bytearray

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...