您的位置:首页 > 其它

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

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

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

sudo apt-get update
sudo apt-get install python-rpi.gpio python3-rpi.gpio
sudo apt-get install python-dev python3-dev
sudo apt-get install mercurial
sudo apt-get install python-pip python3-pip
sudo apt-get remove python-rpi.gpio python3-rpi.gpio
sudo pip install hg+http://hg.code.sf.net/p/raspberry-gpio-python/code#egg=RPi.GPIO
sudo pip-3.2 install hg+http://hg.code.sf.net/p/raspberry-gpio-python/code#egg=RPi.GPIO
好吧,照着粘贴就行。那么我们现在有GPIO这个库了。

接着写个python脚本试一下。

from RPi import GPIO

GPIO.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 capacitorGPIO.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 GPIOwhile(GPIO.input(Pin)==GPIO.LOW):counter =counter+1return counter# Main program loopwhile True:print RC_Analog(4) # Measure timing using GPIO4
另一种方法是,买一个MCP3008的转换板子,但是我看X宝上好像没有卖的,只有Pi转Arduino的转接板,不知道效果怎么样。大家可以试试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: