在树莓派上安装麦克风监测音量

来源:互联网 发布:该怎么写淘宝店铺介绍 编辑:程序博客网 时间:2024/05/12 05:31

做这个事情的原因还是音响消音这个项目。Boss音响的主动消音也是使用的麦克风,不同的是他使用mic采集音量后,再用硬件取反,然后几乎同时就能播放出来进行消音。而我使用mic仅仅作为监测声音变化趋势的工具,对具体的波形并不关心。因为我提前知道了要消音的波形,只是不知道要将声音差取多少合适,那么,我使用mic作为监测设备,然后使用遗传算法,最后取得最优值。

那么先来讲怎么在树莓派(Raspberry pi)上安装mic。

sudo apt-get updatesudo apt-get install python-rpi.gpio python3-rpi.gpiosudo apt-get install python-dev python3-devsudo apt-get install mercurialsudo apt-get install python-pip python3-pipsudo apt-get remove python-rpi.gpio python3-rpi.gpiosudo pip install hg+http://hg.code.sf.net/p/raspberry-gpio-python/code#egg=RPi.GPIOsudo pip-3.2 install hg+http://hg.code.sf.net/p/raspberry-gpio-python/code#egg=RPi.GPIO

好吧,照着粘贴就行。那么我们现在有GPIO这个库了。

接着写个python脚本试一下。

from RPi import GPIOGPIO.setmode(GPIO.BCM)GPIO.setup(4, GPIO.OUT)
GPIO.output(4,True)

保存为led.py
然后根据脚本的接口,把led灯的信号接在GPIO4口上。
什么?不知道哪个是GPIO4口,好吧,看图:

然后执行
python led.py
看一下灯是不是亮了,然后再把脚本中的True改为False,再执行一下,看看灯是不是灭了?

下面我们就该接mic了。

还是将mic接到GPIO4口上,然后写脚本如下:
from RPi import GPIOfrom time import sleepGPIO.setmode(GPIO.BCM)GPIO.setup(4, GPIO.IN)while True:print GPIO.input(4)sleep(1)
看一下屏幕是不是输出一些列的0,你可以制造一些噪音,发现0有时候会变成1.
但是我们想要的是具体的数值,不是高低信号,那么怎么办呢?
有一种折中的办法,就是利用现有的数个数字口去模拟,但是这样一是不准确,二是有延时,所以不是很推荐,但是我们还是把代码贴出来供大家参考:
我假设你使用的GPIO4口:
def RC_Analog (Pin):    counter = 0    # Discharge capacitor    GPIO.setup(Pin, GPIO.OUT)    GPIO.output(Pin, GPIO.LOW)    time.sleep(0.1)    GPIO.setup(Pin, GPIO.IN)    # Count loops until voltage across capacitor reads high on GPIO    while(GPIO.input(Pin)==GPIO.LOW):          counter =counter+1    return counter    # Main program loop    while True:    print RC_Analog(4) # Measure timing using GPIO4
另一种方法是,买一个MCP3008的转换板子,但是我看X宝上好像没有卖的,只有Pi转Arduino的转接板,不知道效果怎么样。大家可以试试。



0 0
原创粉丝点击