USB音频输入录制3.3x太慢,播放速度超过3.3倍,并且出现乱码

我正在开发一种像麦克风一样的USB音频设备。 它以8000 Hz,16位PCM产生等时(USB-talk for real-time)音频流。 使用Ubuntu 13.10时,录制速度大约是3.3倍。 也就是说,录制10秒会产生3秒的WAV文件,播放速度太快。 (比率的最佳测量值是3.27。)播放比加速更糟,它也是乱码。 例如,计数“一……两……三”听起来像“bzt..bzt..bzzt”。 我尝试了3种不同的音频程序(arecord,ocenaudio,Audacity)和两台不同的电脑。 令人困惑的是,告诉arecord将录制限制为10秒(–duration = 10)实际上需要大约33秒,并导致10秒的WAV文件。 这就好像司机处于时间扭曲状态。

从USB Logitech耳机中的麦克风录音可生成一个好的文件,具有正确的速度和可理解的音频。 我知道这听起来像是一个糟糕的音频输入USB设备,但从它的录制工作在Windows(通过GoldWave)工作正常。 我的直觉说当同步数据仅以8000赫兹进入时,Ubuntu音频驱动程序中存在一个错误 ,这是独一无二的。 大多数麦克风通过USB枚举提供各种速率的样品,例如44100,22050,8000等。由于无关紧要的原因,我限制在8000赫兹。

其他人看到有什么像一个有缺陷的音频USB驱动程序? 任何想法如何获取证据certificateUbuntu驱动程序是罪犯或免除?

原来Linux需要USB音频输入中的统一数据包 。 重要的是每个数据包中有多少个声音样本。

在我的8000 Hz采样应用中,USB“全速”的标准1ms轮询间隔,平均每个数据包8个样本。 由于一个怪癖,我发送了我的样本聚集在一起,32个音频样本在一个数据包,然后0,0,0,32,0,0,0,32,….没有什么错误的带宽明智,有很多的房间。 Windows处理正常,但Linux窒息。

当我均匀地发送样本时:8,8,8,8 ……音频通过罚款。 我猜测Linux中USB音频驱动程序的低级别是错误的假设。 但我的解决方法很明确。