USB音频,低位失真

时间:2014-04-15 07:35:27

标签: matlab audio usb audio-recording distortion

我已经使用USB Audio Class 1将PIC32实现为USB声卡。我将微控制器的锯齿信号发送到PC(Windows 7,64位),为16位样品:

十进制:

000
800
1600
2400
.. so on

然后我尝试使用Audacity录制接收的音频,使用MME -driver,作为.wav或.raw。 我使用MATLAB打开并检查数据,在那里我看到如下数据:

000
799
1599
2400
..

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我解决了我的问题..

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

相反,我使用另一个名为Reaper的程序,它有一个使用ASIO og WASAPI记录的选项。这解决了我的问题。我已经使用MATLAB检查了2小时.wav文件中的每个样本,并且它完全是完美的。

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