gpt4 book ai didi

javascript - 在 JavaScript 中对音频进行下采样

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

我想在 JavaScript 中对音频缓冲区进行下采样。我正在使用 OfflineAudioContext,但输出音频质量明显比原始音频(44100Hz)差。在 JavaScript 中是否有比这更高质量的音频重采样的解决方案:

var sampleRate = 44100;
var outSampleRate = 16000;
var durationInSamples = audioBuffer441k.length;
var o = new OfflineAudioContext(1, durationInSamples*outSampleRate/sampleRate, outSampleRate);
var b = o.createBuffer(1, durationInSamples, sampleRate);

var buf = b.getChannelData(0);
for (var i = 0; i < durationInSamples; i++) {
buf[i] = audioBuffer441k[i];
}

var source = o.createBufferSource();
source.buffer = b;
source.connect(o.destination);
source.start(0);
o.startRendering();
o.oncomplete = function(audiobuffer16k) {
console.log("done resampling!!");
console.log(audiobuffer16k.renderedBuffer);
//do something with resampled audio
}

最佳答案

直接插值算法不足以实现合格/无损转换。线性插值几乎毁掉了波形。这就像贬低一个物体。您需要一个支持正弦/余弦曲线的重采样器 非线性插值,但现在很难找到一个 js 解决方案,除非有人实现强大的解决方案并分享。

尝试以您想要的频率捕获数据。重新采样总是会降低质量(尤其是在纯 JavaScript 代码中)

看看 XAudioJS 中基于线性权重的插值重采样: https://stackoverflow.com/a/30032095/5896342

关于javascript - 在 JavaScript 中对音频进行下采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47126396/

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