Javascript Массив для обработки сигналов - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь записать и отредактировать свой голос в javascript. В частности, я пытаюсь записать его в массив, который выглядит так для моего босса [0,102, 301, ...], где значения являются образцами моего голоса.

Когда я записываю свой голос в javascript, У меня тип Blob. Есть ли способ преобразовать Blob в массив [x, y, z, ...]? Или как обычно завершается обработка сигнала javascript?

Это код из этой средней статьи именно так мы и делаем. Я просто не могу сообщить реальный код компании.

const recordAudio = () =>
    new Promise(async resolve => {
        const stream = await navigator.mediaDevices.getUserMedia({ audio:true});
        const mediaRecorder = new MediaRecorder(stream);
        const audioChunks = [];

        mediaRecorder.addEventListener("dataavailable", event => {
            audioChunks.push(event.data);
        });

        const start = () => mediaRecorder.start();

        const stop = () =>
            new Promise(resolve => {
                mediaRecorder.addEventListener("stop", () => {
                    console.log(audioChunks);
                    console.log(audioChunks)
                    const audioBlob = new Blob (audioChunks);
                    const audioURL = URL.createObjectURL(audioBlob);
                    const audio = new Audio(audioURL);
                    const play = () => audio.play();
                    resolve({ audioBlob, audioURL, play });
                });

                mediaRecorder.stop();
            });

            resolve({ start, stop});
        });

    const sleep = time => new Promise(resolve => setTimeout(resolve, time));

    const handleAction = async () => {
        const recorder = await recordAudio();
        const actionButton = document.getElementById('action');
        actionButton.disabled = true;
        recorder.start();
        await sleep(3000);
        const audio = await recorder.stop();
        audio.play();
        await sleep(3000);
        actionButton.disabled = false;

    }
...