简单的实时声音计。

soundmeter的Python项目详细描述


https://img.shields.io/pypi/v/soundmeter.png

声波计是一种实时获取声功率的命令行工具。它基本上将音频录制功能转变为带有音频输入设备(如麦克风)的机器的声音计。它现在显示root-mean-square (RMS) of sound fragments,这是一个音频信号功率的度量。实际值也取决于声音输入的系统设置。

https://asciinema.org/a/RdNCvGdsdvxdu8O9nLqkhhgaT.png

功能

  • 支持事件触发的命令行仪表
  • 用于后端模块编程的监视API

依赖关系

系统包

在debian/ubuntu上:

$ sudo apt-get install portaudio19-dev python-dev alsa-utils

在Fedora/RHEL上:

$ sudo yum install portaudio-devel python-devel alsa-utils

在OS X上:

$ brew install portaudio

PYPI包

  • argparse
  • pyaudio
  • 皮杜布
  • python后台程序

安装

您可以使用以下命令安装带有pip的软件包,以允许外部托管的软件包:

$ pip install soundmeter --allow-all-external --allow-unverified pyaudio

或者,您可以下载源发行版并使用以下命令进行安装:

$ python setup.py install

用法

最简单的用法是从命令行运行“soundmeter”,无需任何选项:

$ soundmeter

收集10秒的rms值,以便了解当前环境中的音量:

$ soundmeter --collect --seconds 10
Collecting RMS values...
   154  Timeout
Collected result:
    min:        152
    max:        211
    avg:        156

您可以设置声波计的触发和动作。

如果rms连续3次大于211,则停止声音计:

$ soundmeter --trigger +211 3 --action stop

如果rms大于211,则执行trigger.sh

$ soundmeter --trigger +211 --action exec --exec trigger.sh

如果rms连续3次小于152,则执行trigger.sh并停止声波计:

$ soundmeter --trigger -152 3 --action exec-stop --exec trigger.sh

在后台运行带有触发器和操作的声音计:

$ soundmeter --trigger +211 3 --action exec --exec trigger.sh --daemonize

运行声音计2分钟并登录到meter.log

$ soundmeter --seconds 120 --log meter.log

命令行选项

“soundmeter”命令接受以下选项:

-p PROFILE, --profile PROFILE
config profile (section name)
-c, --collectcollect RMS values to determine thresholds
-s SECS, --seconds SECS
time in seconds to run the meter (default forever)
-a ACTION_TYPE, --action ACTION_TYPE
triggered action (^{tt4}$, ^{tt5}$ and ^{tt6}$)
-t THRESHOLD, --trigger THRESHOLD
trigger condition (threshold RMS and an optional number of consecutive triggering times, which defaults 1)
-e FILE, --execute FILE
shell script to execute upon trigger (defaults to ^{tt7}$), can be configured to pass the “last triggering” RMS value as argument by setting ^{tt8}$ to ^{tt9}$ in ~/.soundmeter/config
-d, --daemonize
run the meter in the background
--log LOGFILElog the meter (defaults to ^{tt10}$)
-v, --verboseverbose mode
--segment SECONDS
audio segment length recorded in seconds (defaults to 0.5); when specified, it overrides ^{tt11}$ in ~/.soundmeter/config

配置

一些“dependency required”参数可以在~/.soundmeter/config中配置。默认配置为:

[soundmeter]
frames_per_buffer = 2048
format = 8
channels = 2
rate = 44100
audio_segment_length = 0.5
rms_as_trigger_arg = False

在配置文件中可以有多个部分,并指定要与--profile命令行选项一起使用的部分。默认配置文件名是soundmeter。例如:

[soundmeter]
frames_per_buffer = 2048
format = 8
channels = 2

[test]
frames_per_buffer = 1024
format = 8
channels = 1

使用test配置文件:

$ soundmeter --profile test ...

还有一个input_device_index参数,它指定要使用的输入设备的索引。如果未指定,则使用默认输入设备。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java编写CSV,文本加引号,数值不加引号   只有在程序用java完成执行后才能看到swing输出   java如何避免用实现多个接口的类打破Liskov替换原则?   java进度条未更改   java网络摄像头api:最大化720p捕获   java如何在方法调用中传递数据和使用用户输入   java Equi使用mapreduce在一个公共字段上连接两个不同的文件   java如何在jvm参数中设置系统ip?   sql公共表表达式(以values语句开头)在java中给出错误   java在Hibernate中生成subselect为什么?   java自动从许多文件的pdf中提取文本   带有两个滚动文件附加器的java log4j2没有压缩其中一个   3.3到3.4之间的java Mule消息不兼容问题   java访问特定于平台的应用程序数据区   java如何通过网络从计算机2连接到位于计算机1上的mysql服务器?   java应用程序引擎默认页面为servlet   Java按正则表达式拆分字符串   当我在JOptionPane的nssm帮助下将jar作为服务运行时。showOptionDialog()未显示   xslt使用JavaXSL转换的结果作为后续转换的样式表