1

我正在使用 XAudio2 将 PCM 格式的波发送到我的声卡,我遇到了一个让我想到这个问题的问题。我用 MATLAB 创建了一个 440 Hz 正弦波的 .csv 文件,起初我以 1 KHz(1 秒)对其进行采样。

然后我的 C++ 程序将加载该文件并将缓冲区发送到声卡。问题是输出失真(削波),听起来根本不像正弦波。然后我想,也许声卡不喜欢 1 kHz 的采样率,所以我加倍了,突然一切都好了。

有没有办法确认这确实是问题所在?

4

1 回答 1

3

1kHz 采样率下的奈奎斯特频率仅为 500Hz。我一点也不惊讶它听起来很糟糕。假设你有一个 1kHz 的采样率并且你播放了一个 500Hz 的声音。您的输出将是方波。- + - + - + 中间没有任何内容,因为您没有足够的样本。当您接近奈奎斯特频率时,复制该波的能力下降。在如此低的频率下可以听到。

无论如何,让您的声卡以如此低的采样率运行是不太可能的。更有可能是软件驱动程序正在为您重新采样,并且谁知道会抛出什么样的工件。

尝试做一些更合理的事情,比如至少 11.025Hz。这是 44.1kHz(“CD”采样率)除以 4,许多声卡直接支持。几乎所有的卡都应该做到 22.05kHz。

于 2011-07-20T14:36:42.783 回答