在树莓派上安装麦克风监测音量
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的转接板,不知道效果怎么样。大家可以试试。
相关文章推荐
- iOS中的CoreData的使用(详解)
- 为了相同的前缀-跳楼梯
- LeetCode之Longest Palindromic Substring
- 学习笔记 BIT(树状数组)
- centos nagios监控的搭建
- Jquery 插入节点总结
- hihocoder 1251 Today Is a Rainy Day 2015北京区域赛C
- 5.6.3.6 XMMatrixPerspectiveFovLH
- 为了相同的前缀-测谎仪
- hdu1237 简单计算器
- 算法导论 9.1-1 求第二小元素
- 区分数组指针和指针数组
- screen space directional occlusion(SSDO) in Unity5
- Android开发之去掉title的三种方法
- 为了相同的前缀-心理阴影
- 构造特定五元组的HTTP报文,和trace route
- vi 技巧和诀窍:令人刮目相看的 10 个超酷命令
- 深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器
- 为了相同的前缀-鸭梨山大
- jQuery-serialize()输出序列化form表单值的方法