使用 Python 在 Windows 上检测系统声音

Posted

技术标签:

【中文标题】使用 Python 在 Windows 上检测系统声音【英文标题】:Detecting system sound on Windows using Python 【发布时间】:2014-02-27 01:29:23 【问题描述】:

有没有办法检测系统声音而不是麦克风声音?我希望能够检测到我的系统何时发出声音,而不是麦克风何时接收到实际声音。

我发现这样做的一种方法是使用“软件或硬件中的音频环回(例如,将引线从扬声器“输出”插孔连接到麦克风“输入”插孔)。”

Capturing speaker output in Java

我正在构建一个程序,它会在系统发出声音时播放 mp3 文件,但我不希望它在狗吠时响起。

谢谢!

【问题讨论】:

【参考方案1】:

pyaudio (http://people.csail.mit.edu/hubert/pyaudio/) 怎么样

像这样:

import pyaudio

chunk = 1024

p = pyaudio.PyAudio()

stream = p.open(format=pyaudio.paInt16,
                channels=1,
                rate=44100,
                input=True,
                frames_per_buffer=chunk)

data = stream.read(chunk)

然后您可以计算音频样本的均方根 (RMS) 并从那里开始。

已编辑: 您可以通过执行以下操作来查看可以使用的设备类型。 (http://people.csail.mit.edu/hubert/pyaudio/docs/#pyaudio.PyAudio.get_device_info_by_index)

import pyaudio    
p = pyaudio.PyAudio()

for i in xrange(0,10):
    try:
        p.get_device_info_by_index(i)
    except Exception,e:print e

【讨论】:

以上是关于使用 Python 在 Windows 上检测系统声音的主要内容,如果未能解决你的问题,请参考以下文章

让 PyC​​harm 在 windows linux 子系统上识别 python(windows 上的 bash)

在 Windows 操作系统上使用 Go 和 Python 实现客户端-服务器模型

如何在同一台电脑(windows系统)上同时搭建python2和python3环境

python-sounddevice 不会检测音频接口上的所有输入通道(windows)

Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

使用 python 子进程检查 pip 是不是安装在 Windows 上