gpt4 book ai didi

javascript - 为什么我的 JS 音频流代码在 x86 和 x86_64 系统上听起来不同?

转载 作者:行者123 更新时间:2023-11-27 22:38:48 24 4
gpt4 key购买 nike

我的应用程序将 PCM 二进制数据从服务器流式传输到 Web Audio API。

为了标准化音频,我使用 DataView 将传入数据转换为 Int16,将每个样本除以 32768,然后将它们转换回 Float32 进行播放:

var data = new DataView(arrayBuffer);

var tempArray = new Int16Array(data.byteLength / Int16Array.BYTES_PER_ELEMENT);

var len = tempArray.length;
for (var jj = 0; jj < len; ++jj) {
tempArray[jj] = data.getInt16(jj * Int16Array.BYTES_PER_ELEMENT, true);
}


var bufferToPlay = new Float32Array(tempArray.length);
var channelCounter = 0;
for (var i = 0; i < tempArray.length;) {
var normalizedAudio = tempArray[i] / 32768;
i = i + 1;
bufferToPlay[channelCounter] = normalizedAudio;
channelCounter++;
}

奇怪的是:

当我在 64 位 Win 机器上运行此程序时,音频是完美的。但是当我使用旧的 32 位 Win XP 机器时,音频充满了听起来像重采样/位转换的伪影。

我读了很多关于字节序的文章,但是两台机器都是 Pentium,所以都应该是小字节序,对吗?那么这怎么可能呢?

最佳答案

检查每台计算机上的 WebAudio 上下文的 sampleRate。它们是一样的吗?另外,如果字节顺序错误,听起来就不像重采样/位转换。如果听起来像是重新采样,那么两台机器的采样率很可能不同。

关于javascript - 为什么我的 JS 音频流代码在 x86 和 x86_64 系统上听起来不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38916220/

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