gpt4 book ai didi

javascript - 将Blob转换为WAV文件

转载 作者:行者123 更新时间:2023-12-03 01:26:47 26 4
gpt4 key购买 nike

您好,我是整个JS + Audio的新手。
我有一个React-mic,它可以录制来自内置麦克风的音频,并在停止后将其转换为blob。

为了进行测试,我只想下载内置的wav文件并收听。

wav文件每次只有15kb。所以它是空的。
自动文件命名虽然可以。

关于如何将音频Blob转换为WAV的任何提示?

谢谢!

function onStop(recordedBlob) {
console.log('recordedBlob is: ', recordedBlob);
const fileName = chatId + '-' + Date.now() + '-' + author;

const audioFile = new File([recordedBlob], `${fileName}.wav`, {
type: 'audio/wav',
lastModified: Date.now()
});

const a = document.createElement('a');
a.download = `${fileName}.wav`;
a.href = window.URL.createObjectURL(audioFile);
a.click();

setNewAudioFile(audioFile);
uploadAudio(audioFile);
console.log(audioFile);
}

最佳答案

我通过以下代码完成了此操作:

    const reader = new window.FileReader();
reader.readAsDataURL(audioBlob);
reader.onloadend = () => {
let base64 = reader.result + '';
base64 = base64.split(',')[1];
const ab = new ArrayBuffer(base64.length);
const buff = new Buffer.from(base64, 'base64');
const view = new Uint8Array(ab);
for (let i = 0; i < buff.length; ++i) {
view[i] = buff[i];
}
const context = new AudioContext();
context.decodeAudioData(ab, (buffer) => {
const wavFile = toWav(buffer);
const blob = new window.Blob([ new DataView(wavFile) ], {
type: 'audio/wav'
});
const anchor = document.createElement('a');
document.body.appendChild(anchor);
anchor.style = 'display: none';
const url = window.URL.createObjectURL(blob);
anchor.href = url;
anchor.download = 'audio.wav';
anchor.click();
window.URL.revokeObjectURL(url);
}

关于javascript - 将Blob转换为WAV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com