我有一个相当不同的问题。所以我在 Linux Gentoo 机器上使用 Matlab。我有一些 Asus Xonar STX 声卡,我正在尝试使用PlayRec非阻塞音频 IO 包将它们用作灵敏的音频分析器。
现在我知道 Matlab 会说如果你尝试使用录音机功能,并在 linux 中指定 24 位,它会告诉你 24 位仅在 Windows 中支持。然而,ALSA 文献并不暗示这是操作系统或 ALSA 本身的限制,事实上,Alsa 似乎允许您指定 24 位 PCM 设备。PlayRec 使用 PortAudio,然后在 Linux 系统上使用 Alsa。
现在这一切都很好,而且 Playrec 似乎没有指定位深度的方法,只有采样率。我已经进行了很多测试,知道我的声卡的传递函数是什么(浮点返回值与输入电压转换比),我知道我的峰值电压是 3V,我的噪声在 100uV 左右。这给了我 20*log10(3/100e-6) = 91dB。这更接近我期望从 16 位而不是 24 位看到的。
我真正的问题是:是否有某种方法可以验证我实际上在捕获的信号中获得了 24 位?
如果我不是,ALSA 或 Matlab 是否存在一些固有限制,这限制我只能从声音捕获设备获取 16 位数据,即使使用 3rd 方程序收集该数据也是如此。