在树莓派上最常用的录音是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 及 对声音实时监控相关推荐

  1. 树莓派 触摸屏_树莓派加装3.5寸触摸屏方法和触摸屏问题处理

    近期给树莓派4B加装3.5寸屏幕,过程记录如下: 目录 前言 一.给系统安装驱动 1.在线安装 2.离线安装 二.使用预装驱动的镜像 三.调整方向 四.调整分辨率 五.屏幕校准 总结 前言 屏幕连接如 ...

  2. 树莓派python交互界面实例_树莓派综合项目2:智能小车(二)tkinter图形界面控制...

    一.介绍 树莓派综合项目2:智能小车(一)四轮驱动中,实现了代码输入对四个电机的简单控制,本章将使用Python 的图形开发界面的库--Tkinter 模块(Tk 接口),编写本地运行的图形界面,控制 ...

  3. python 调用 tensorflow.dll_解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题...

    最近打算开始研究一下机器学习,今天在windows上装tensorflow花了点功夫,其实前面的步骤不难,只要依次装好python3.5,numpy,tensorflow就行了,有一点要注意的是目前只 ...

  4. python手机版idle-如何在Ubuntu上安装Python IDE IDLE

    打开Ubuntu命令行,终端,通过系统Dash或Ctrl+Alt+T快捷方式. 然后,您需要像sudo一样通过以下命令更新系统的存储库索引: linuxidc@linuxidc:~/www.linux ...

  5. visual studio安装python插件_Visual Studio 2012 Ultimate 上安装 Python 开发插件 PTVS

    Visual Studio 2012 Ultimate 上安装Python 开发插件PTVS 转载于ITNOSE1.我的环境 操作系统:Win7 旗舰版Service Pack 1 VS版本:Micr ...

  6. gpio 树莓派3a+_树莓派4正式发布:35美元起售!真香

    树莓派(Raspberry Pi)基金会,今天(6月24日)正式发布了Raspberry Pi 4 Model B. 树莓派是全球知名的基本计算微型电脑,深受全球开发者.编程者.极客等人士的追捧和喜爱 ...

  7. windows系统中pyyaml_关于python:如何在Windows 10上安装pyYAML

    我试图从Windows 10上的源代码安装pyYAML.我从https://pypi.python.org/pypi/PyYAML下载了PyYAML 3.11. 运行setup.py时出现错误:[Wi ...

  8. gpio 树莓派3a+_树莓派4上市:性能飙升起售价依然是35美元

    旨在通过超实惠方式,鼓励孩子们投身编程事业的奇趣开发套件树莓派,在昨天迎来了Raspberry Pi 4正式开售的消息.新一代树莓派引入64位处理器.802.11ac双频Wi-Fi以及通过HAT的以太 ...

  9. (python)小最的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中

    问题描述 小最的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义 来替换.对于每个英文单词,软件会先在内存中查 ...

最新文章

  1. c语言实现指定路径文件读取_C语言实现文件复制功能(包括文本文件和二进制文件)...
  2. c语言 listview,C语言 SDK编程之通用控件的使用--ListView
  3. ionic2 mac android,Ionic制作Hybrid App系列二:Mac环境下Ionic release版本APK的签名与发布...
  4. java jsr_Java EE 7中包含哪些JSR?
  5. IO字节缓冲流的最简单读写源码
  6. FBString分析与使用
  7. 第五周作业:瀑布模型
  8. SDL2源代码分析7:显示(SDL_RenderPresent())
  9. 阵列信号处理仿真一——延时求和滤波器
  10. 数据分析 --- 如何处理脏数据
  11. 提升工作效率的一些工具
  12. 关于编译ns3的myfirst.cc问题
  13. PS CS5制作1寸照片
  14. html js 邮箱格式,email 格式_JavaScript验证Email邮箱格式的三种方法
  15. Factory method 'springSecurityFilterChain' threw exception
  16. 生物信息学在感染和疫苗研究中的应用
  17. iOS 玩转微信——通讯录
  18. 老计算机u盘无法启动不了怎么办,u盘无法启动怎么办 u盘无法启动解决方法【详解】...
  19. uniapp通过v-for动态绑定ref踩坑记录
  20. APT和Javapoet的精彩联动

热门文章

  1. 一个神奇的分布式计算框架:jini
  2. vscode使用方法
  3. idea 使用mybatis generator生成代码时 报错 The specified target project directory src/main/java/ does not exis
  4. prompt综述论文阅读:Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural La
  5. 沈航-数理统计-17-18B-有答案
  6. Go语言处理Windows系统的图标ICO文件(上)
  7. DNA sequence HDU 1560
  8. Windows记录ping时间戳
  9. 汉堡菜单html加logo,HTML+Sass实现HambergurMenu(汉堡包式菜单)
  10. Android中WebView,打开第三方应用的问题