gpt4 book ai didi

JavaScript 将音频字节数组转换为 wav 文件或有效的 AudioBuffer

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

我可以从 URL 访问一个字节数组文件(float32,big endian),我试图将它转换成 WaveSurfer 可处理的东西,这需要一个有效的 ArrayBuffer、AudioBuffer 或一个指向 wav 文件的 URL .

我得到的最接近的方法是使用 fetch 获取文件,并尝试将其转换为 ArrayBuffer,但是 WaveSurfer 无法识别它,它表示无法解码数据。

这是我的 JavaScript 代码:

let blob = await fetch(url);
let buffer = await blob.arrayBuffer();
this.wavesurfer.loadArrayBuffer(buffer);

我知道我要解码的文件是有效的音频文件,因为我可以使用以下 python 脚本将它转换为 wav 文件:

import numpy as np
from scipy.io.wavfile import write

def main():
a = np.fromfile(filePath, '>f4')
write(outputPath, 16000, a)

对我能做什么有什么建议吗?

最佳答案

天哪,我终于弄明白了。我的解决方案最终使用了 this包。

从我需要以大端 Float32 格式读取的二进制文件开始:

import createBuffer from "audio-buffer-from"

var res = await fetch(response.url);
var buffer = await res.arrayBuffer();
var dataview = new DataView(buffer);
var mFloatArray = new Float32Array(buffer.byteLength / 4);

for (let i = 0; i < mFloatArray.length; i++) {
mFloatArray[i] = dataview.getFloat32(i*4);
}

audioBuffer = createBuffer(mFloatArray, { sampleRate: 16000 });
this.wavesurfer.loadDecodedBuffer(audioBuffer);

这已成功加载到 wavesurfer 中!

关于JavaScript 将音频字节数组转换为 wav 文件或有效的 AudioBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63066481/

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