USB 音频,低位失真

Posted

技术标签:

【中文标题】USB 音频,低位失真【英文标题】:USB Audio, distortion in low bits 【发布时间】:2014-04-15 07:35:26 【问题描述】:

我使用 USB 音频类 1 将 PIC32 实现为 USB 声卡。我正在将锯齿信号从微控制器发送到 PC(Windows 7、64 位),作为 16 位样本:

十进制:

000
800
1600
2400
.. so on

然后我尝试使用 Audacity 和 MME 驱动程序将接收到的音频录制为 .wav 或 .raw。 我使用 MATLAB 打开并检查数据,我看到的数据如下:

000
799
1599
2400
..

失真从 -1 到 +1 位 pr 样本变化。 任何人都知道问题可能出在哪里。 Windows 音频驱动程序。?

【问题讨论】:

【参考方案1】:

由于您在 PC 上接收到音频信号,将其播放并使用 SW 录制,因此音频信号会从数字转换为模拟,然后再转换为数字。这些会引入量化误差和噪声,您会看到两个信号之间的细微差别。

【讨论】:

转换成模拟的了吗?我正在使用 USB 音频,这种转换发生在哪里。?那么如何在不先将其转换为模拟的情况下将其录制为数字声音呢? 为避免 a/d 转换,您不应播放音频。可能需要编写程序直接从USB端口读取音频信号。【参考方案2】:

我解决了我的问题..

问题是由我用来记录数据的应用程序和我使用的方法引起的。我使用了支持旧 Windows MME 音频 API 和 DirectSound API 的 Audacity。这些显然是相对高级的 API,并且是造成失真的原因。 About the Windows Core Audio APIs

我使用了另一个名为 Reaper 的程序,它可以选择使用 ASIO og WASAPI 进行录制。这解决了我的问题。我已经使用 MATLAB 检查了一个 2 小时的 .wav 文件中的每个样本,它完全是位完美的。

我可能是一些量化错误,但它是由 API 引起的。 ASIO 和 WASAPI 给了我完美的声音,MME 和 DirectSound 给了我失真的信号。

【讨论】:

以上是关于USB 音频,低位失真的主要内容,如果未能解决你的问题,请参考以下文章

NAudio 拆分 wav 文件问题。其他所有音频文件声音失真,而其他音频文件清晰

音频功放的失真的原因分析及测量

SDL 音频在 Linux 上随机失真

混合两个音频缓冲区时的点击/失真

重启后第一次在 iOS 6 (iPhone 5) 上 WebKit 音频失真

如何修复 iPhone 应用程序中的多个音频流造成失真?