从覆盆子pi上的ADC芯片读取原始音频值

时间:2015-02-01 06:13:01

标签: python audio raspberry-pi adc

我将MCP3008 ADC芯片连接到驻极体麦克风和我的pi。我在python中使用bit-banging读取输入,并且我得到0-1024的整数。

我按照本教程进行了比特攻击:https://learn.adafruit.com/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi/connecting-the-cobbler-to-a-mcp3008

我的问题是如何获取此整数并将其转换为有意义的内容?我可以以某种方式将这些字节写入python中的文件,以获取Audacity可以播放的原始音频数据吗?现在,当我尝试写入值时,它们只显示为整数而不是二进制。我是python的新手,我找到了转换原始数据的链接,但我在首先生成原始数据时遇到了问题:Python open raw audio data file

我甚至不确定这些数值代表什么,他们是PCM数据,我必须做与时间有关的数学计算?

1 个答案:

答案 0 :(得分:4)

您在这里做的是采样时变模拟信号。所以,你获得的价值是PCM - 但有一个巨大的警告(见下文)。如果您将它们写为WAV文件(可能使用this来帮助您),您将能够在Audacity中打开它们。您可以将值转换为无符号8位(通过截断和)或使用移位和减法进行16位签名。

需要注意的是,PCM是带有信号的采样时钟的调制。在您的情况下,时钟信号是您对ADC进行bit-bang的频率。 实际上,很难在软件中安排这种规则 - 尤其是在使用Python等高级语言对设备进行打击时。您需要以信号带宽的两倍(奈奎斯特定律)进行采样 - 实际上,8kHz用于电话语音质量。

不规则的采样时钟也会产生明显的假象 - 你会听到失真。