我正在玩XAudio2将PCM格式波发送到我的声卡,我遇到了一个让我想到这个问题的问题。我创建了一个带有正弦波的MATLAB的.csv文件,频率为440 Hz,最初我以1 KHz(1秒)对其进行采样。
然后,我的C ++程序将加载该文件并将缓冲区发送到声卡。问题是输出失真(剪裁),听起来根本不像正弦波。然后我想,也许声卡不喜欢1 kHz的采样率,所以我加倍了,突然一切都很好。
有没有办法确认这确实是问题?
答案 0 :(得分:3)
1kHz采样率的奈奎斯特频率仅为500Hz。听到这一切听起来很可怕,我并不感到惊讶。假设您的采样率为1kHz,并且您播放了500Hz的声音。你的输出是方波。 - + - + - +之间没有任何内容,因为你没有足够的样本。当您接近奈奎斯特频率时,复制该波的能力下降。它可以在如此低的频率下听到。
在任何情况下,都不太可能让声卡以如此低的采样率运行。软件驱动程序更有可能为您重新采样,谁知道哪些工件被抛出。
尝试做一些更合理的事情,比如至少11.025Hz。这是44.1kHz(“CD”采样率)除以4,许多声卡直接支持。几乎所有卡都应该做到22.05kHz。