我已经使用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音频驱动程序。?
答案 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给了我一个扭曲的信号。