gpt4 book ai didi

javascript - 可以从内存中创建一个 AudioBuffer,即一个 Int8Array

转载 作者:行者123 更新时间:2023-11-30 10:34:32 24 4
gpt4 key购买 nike

有没有办法将内存中的原始数据作为样本添加到 Web Audio Api?我想添加一个 Int8Array(或 Int16Array)作为缓冲区,缓冲区只有样本,没有 WAV 或 MP3 格式。我已经尝试了 audioContext.createBuffer 等但没有成功。

像这样:

var buffer = audioContext.createBuffer(1,8192, 22000);
var intArray = new Int8Array(....);
// -- fill intarray
buffer.buffer = intArray;
...
var source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination);

如果那不可能,是否有一种与 contetx.decodeAudio() 兼容的声音格式易于在内存中“模拟”?即只是一个标题或东西。

最佳答案

它既不是很直观,也没有在规范中明确记录,也不是很容易在网上找到:

但是,您可以简单地修改 Float32Array getChannelData(<idx of channel>) 返回在任何缓冲区上。

不要忘记将样本缩放到 [-1, 1] 范围

对于您的示例,您将缩放 intArray 中的值并将其复制到通过调用获得的 floatArray:

floatArray = buffer.getChannelData(0)

关于javascript - 可以从内存中创建一个 AudioBuffer,即一个 Int8Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14841708/

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