gpt4 book ai didi

html - 通过 webAudio API 播放 pcm 数据

转载 作者:太空狗 更新时间:2023-10-29 14:18:22 26 4
gpt4 key购买 nike

您好,我正在研究 WebAudio API。我读了HTML5 Web Audio API, porting from javax.sound and getting distortion链接但没有像 java API 那样获得良好的质量。我正在从服务器获取带符号字节的 PCM 数据。然后我必须将其更改为 16 位格式。为了改变我正在使用( firstbyte<<8 | secondbyte )但我无法获得良好的音质。转换或任何其他获得优质音质的方法是否有任何问题?

最佳答案

Web Audio API 使用从 -1 到 1 的 32 位带符号 float ,所以这就是我要(希望)向您展示如何操作的内容,而不是您在问题中提到的 16 位 float 。

假设您的样本数组称为 samples 并存储为从 -128 到 127 的 2 的补码,我认为这应该可行:

var floats = new Float32Array(samples.length);
samples.forEach(function( sample, i ) {
floats[i] = sample < 0 ? sample / 0x80 : sample / 0x7F;
});

然后你可以这样做:

var ac = new webkitAudioContext()
, ab = ac.createBuffer(1, floats.length, ac.sampleRate)
, bs = ac.createBufferSource();
ab.getChannelData(0).set(floats);
bs.buffer = ab;
bs.connect(ac.destination);
bs.start(0);

关于html - 通过 webAudio API 播放 pcm 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8710846/

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