python实现树莓派监控_树莓派上安装pyaudio 及 对声音实时监控
在树莓派上最常用的录音是arecord命令,但是功能有限,不能实现检测到声音做出反应。但是pyaudio能。
本文实现的功能是在树莓派上监听声音,当分贝超过阈值,将会做出反应,例子的反应是结束while循环。
原理是录制一小段的声音然后去检测分贝,如果超过阈值就结束循环,否则继续录制,检测,。。。。。。
安装pyaudio
运行一下命令:
$sudo apt-get install python-pyaudio
$ sudo apt-get install git
$ git clone http://people.csail.mit.edu/hubert/git/pyaudio.git
$ sudo apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev
$ sudo apt-get python-dev
此时当前目录会多出来一个pyaudio的文件夹,然后cd进去
$ cd pyaudio
$ sudo python setup.py instal
如果没有报错此时的pyaudio已经安装到你的树莓派上了。
运行
看代码:
# -*- coding: utf-8 -*-
import pyaudio
import wave
import numpy as np
def Monitor():
CHUNK = 512
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "cache.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("开始缓存录音")
frames = []
while (True):
print 'begin '
for i in range(0, 100):
data = stream.read(CHUNK)
frames.append(data)
audio_data = np.fromstring(data, dtype=np.short)
large_sample_count = np.sum( audio_data > 800 )
temp = np.max(audio_data)
if temp > 800 :
print "检测到信号"
print '当前阈值:',temp
break
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
if __name__ == '__main__':
Monitor()
这个采样率不可以是8000或者16000,否则会报采样率的错。
可以看到代码中唯一的for循环,它的长度决定上面提到的一小段声音的长度。
这里设置的阈值是800.
python实现树莓派监控_树莓派上安装pyaudio 及 对声音实时监控相关推荐
- 树莓派 触摸屏_树莓派加装3.5寸触摸屏方法和触摸屏问题处理
近期给树莓派4B加装3.5寸屏幕,过程记录如下: 目录 前言 一.给系统安装驱动 1.在线安装 2.离线安装 二.使用预装驱动的镜像 三.调整方向 四.调整分辨率 五.屏幕校准 总结 前言 屏幕连接如 ...
- 树莓派python交互界面实例_树莓派综合项目2:智能小车(二)tkinter图形界面控制...
一.介绍 树莓派综合项目2:智能小车(一)四轮驱动中,实现了代码输入对四个电机的简单控制,本章将使用Python 的图形开发界面的库--Tkinter 模块(Tk 接口),编写本地运行的图形界面,控制 ...
- python 调用 tensorflow.dll_解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题...
最近打算开始研究一下机器学习,今天在windows上装tensorflow花了点功夫,其实前面的步骤不难,只要依次装好python3.5,numpy,tensorflow就行了,有一点要注意的是目前只 ...
- python手机版idle-如何在Ubuntu上安装Python IDE IDLE
打开Ubuntu命令行,终端,通过系统Dash或Ctrl+Alt+T快捷方式. 然后,您需要像sudo一样通过以下命令更新系统的存储库索引: linuxidc@linuxidc:~/www.linux ...
- visual studio安装python插件_Visual Studio 2012 Ultimate 上安装 Python 开发插件 PTVS
Visual Studio 2012 Ultimate 上安装Python 开发插件PTVS 转载于ITNOSE1.我的环境 操作系统:Win7 旗舰版Service Pack 1 VS版本:Micr ...
- gpio 树莓派3a+_树莓派4正式发布:35美元起售!真香
树莓派(Raspberry Pi)基金会,今天(6月24日)正式发布了Raspberry Pi 4 Model B. 树莓派是全球知名的基本计算微型电脑,深受全球开发者.编程者.极客等人士的追捧和喜爱 ...
- windows系统中pyyaml_关于python:如何在Windows 10上安装pyYAML
我试图从Windows 10上的源代码安装pyYAML.我从https://pypi.python.org/pypi/PyYAML下载了PyYAML 3.11. 运行setup.py时出现错误:[Wi ...
- gpio 树莓派3a+_树莓派4上市:性能飙升起售价依然是35美元
旨在通过超实惠方式,鼓励孩子们投身编程事业的奇趣开发套件树莓派,在昨天迎来了Raspberry Pi 4正式开售的消息.新一代树莓派引入64位处理器.802.11ac双频Wi-Fi以及通过HAT的以太 ...
- (python)小最的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中
问题描述 小最的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义 来替换.对于每个英文单词,软件会先在内存中查 ...
最新文章
- c语言实现指定路径文件读取_C语言实现文件复制功能(包括文本文件和二进制文件)...
- c语言 listview,C语言 SDK编程之通用控件的使用--ListView
- ionic2 mac android,Ionic制作Hybrid App系列二:Mac环境下Ionic release版本APK的签名与发布...
- java jsr_Java EE 7中包含哪些JSR?
- IO字节缓冲流的最简单读写源码
- FBString分析与使用
- 第五周作业:瀑布模型
- SDL2源代码分析7:显示(SDL_RenderPresent())
- 阵列信号处理仿真一——延时求和滤波器
- 数据分析 --- 如何处理脏数据
- 提升工作效率的一些工具
- 关于编译ns3的myfirst.cc问题
- PS CS5制作1寸照片
- html js 邮箱格式,email 格式_JavaScript验证Email邮箱格式的三种方法
- Factory method 'springSecurityFilterChain' threw exception
- 生物信息学在感染和疫苗研究中的应用
- iOS 玩转微信——通讯录
- 老计算机u盘无法启动不了怎么办,u盘无法启动怎么办 u盘无法启动解决方法【详解】...
- uniapp通过v-for动态绑定ref踩坑记录
- APT和Javapoet的精彩联动
热门文章
- 一个神奇的分布式计算框架:jini
- vscode使用方法
- idea 使用mybatis generator生成代码时 报错 The specified target project directory src/main/java/ does not exis
- prompt综述论文阅读:Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural La
- 沈航-数理统计-17-18B-有答案
- Go语言处理Windows系统的图标ICO文件(上)
- DNA sequence HDU 1560
- Windows记录ping时间戳
- 汉堡菜单html加logo,HTML+Sass实现HambergurMenu(汉堡包式菜单)
- Android中WebView,打开第三方应用的问题