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

Jac*_*man 5 python audio adc raspberry-pi

我将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打开原始音频数据文件

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

mar*_*rko 4

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

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

不规则的采样时钟也会导致明显的伪影 - 您会听到失真的声音。