我有 data-uri 格式的音频数据,然后我将此 data-uri 转换为缓冲区,现在我需要新采样率的缓冲区数据,当前音频数据为 44.1khz,我需要 16khz 的数据,如果我记录了使用 RecordRTC API 录制音频,如果我以低采样率录制音频,那么我会得到失真的音频语音,所以我不知道如何重新采样我的音频缓冲区,
如果你们对此有任何想法,请帮助我。
提前致谢 :)
您可以使用 OfflineAudioContext 进行重采样,但您需要首先将 data-uri 转换为 ArrayBuffer。该解决方案适用于浏览器,而不是服务器,因为最好在网络上发送较低质量的音频(较低的采样率),而不是发送大量数据并在服务器上重新采样。
// `source` is an AudioBuffer instance of the source audio
// at the original sample rate.
var TARGET_SAMPLE_RATE = 16000;
var offlineCtx = new OfflineAudioContext(source.numberOfChannels,
source.duration * TARGET_SAMPLE_RATE,
TARGET_SAMPLE_RATE);
// Play it from the beginning.
var offlineSource = offlineCtx.createBufferSource();
offlineSource.buffer = source;
offlineSource.connect(offlineCtx.destination);
offlineSource.start();
offlineCtx.startRendering().then((resampled) => {
// `resampled` contains an AudioBuffer resampled at 16000Hz.
// use resampled.getChannelData(x) to get an Float32Array for channel x.
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)