How to implement an audio listening stream in Flutter Web?

Viewed 233

I'm making a Flutter Web App which has to access the microphone and streams the audio data as an array of integers for further processing.

I already succeeded doing this in plain JavaScript.

Things I've tried:

  • The flutter_sound library, but I couldn't get it to work. I also can't find any working examples for that library.

  • dart:web_audio seems to be a thing, but apparently you can't even import it yet in normal Flutter Apps.

  • dart:js is what im trying to do right now. I was able to create an AudioContext with var audioContext = JsObject(context['AudioContext']);. However, after that I dont know what syntax can be used to transfer the JavaScript code into Dart. Here is what I'm doing in JavaScript:

function initAudio() {
    try {
        audioCtx = new AudioContext();
        const GotAudioStream = function(stream) {
            const audioSource = audioCtx.createMediaStreamSource(stream);
            const audioProcessor = audioCtx.createScriptProcessor(bufSize, 1, 1);
            audioSource.connect(audioProcessor);
            audioProcessor.connect(audioCtx.destination);
            audioStarted = true;
            audioProcessor.onaudioprocess = function(e) {
                checkAudioBuffer(e.inputBuffer);
            };
        };
        navigator.mediaDevices.getUserMedia({ audio: true, video: false }).then(GotAudioStream);
    }
    catch (err) {
        console.log(err);
    }
}

Does anyone have experience with the dart:js library or another Idea on how to implement a simple (live!) audio stream in Flutter Web?

Regards,

Kaisky

0 Answers
Related