我正在开发一个像麦克风一样的USB音频设备。它产生同步(USB-谈话实时)音频流在8000赫兹,16位PCM.Ubuntu13.10的录制速度太慢,约为3.3x。也就是说,记录10秒会产生一个3秒的WAV文件,回放太快了.(对这一比率的最佳测量为3.27。)回放比加速更糟糕,它也被混淆了。例如,计数"one.....two.....three“听起来像"bzt..bzt..bzzt”。我尝试了3种不同的音频程序(arecord,ocen音频,Audacity)和两台不同的计算机。令人困惑的是,告诉记录限制为10秒(-持续时间= 10 )实际上需要大约33秒,结果是10秒的WAV文件。就好像司机正处于时间偏差之中。
从麦克风在USB耳机录音产生一个良好的文件,以正确的速度和可理解的音频。我知道这听起来像一个糟糕的音频输入USB设备,但从它的录音工作良好的视窗(通过GoldWave)。我的直觉说,Ubuntu音频驱动程序中有一个bug,当等时数据以8000 Hz的频率输入时,这是唯一的。大多数麦克风提供通过USB枚举,以不同的速度为您采样,例如44100,22050,8000等,由于额外的原因,我被限制在8000赫兹。
还有其他人会看到任何像塞车音频USB驱动的东西吗?有什么想法,如何获得证据定罪或免除Ubuntu司机?
发布于 2013-11-20 02:57:24
事实证明,Linux需要USB音频输入中的统一数据包。重要的是每个包中有多少个声音样本。
在我的应用程序中,以8000赫兹采样,标准的1ms轮询间隔USB“全速”,平均每包8个样本。由于一个奇怪的原因,我把我的样本打包在一个包里,然后是0,0,0,32,0,0,0,32,.就带宽而言,没有什么不对的,有足够的空间。Windows处理得很好,但是Linux会阻塞。
当我均匀发送样本时: 8,8,8,8,.声音传得很好。我猜Linux中USB音频驱动程序中的一些低级别的东西正在做出错误的假设。但我的解决办法很清楚。
https://askubuntu.com/questions/377526
复制相似问题