简单的实时声音计。

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第三方库


热门话题
类似于C mktime()的Java函数?   java如何处理Cassandra中的竞争条件?   java如何从新对象调用字段   java如何从commons cli“获取”帮助字符串而不是“打印”   用于正则表达式更改的java Selenium IDE扩展或插件   java在没有EAR的客户端中创建EJB远程引用   java Jooq批记录插入   java Android SQLite:约束失败错误代码19   java位图变成彩色背景   java JFrame(全屏)背景色不变   java我如何执行Taurus junit?   apache tomcat服务器上的java 500内部服务器错误   获取页面信息时发生java NullPointerException   springboot中@oneToMany双向映射的java问题   java堆栈返回已删除的项   java Spring boot mvc按值验证枚举