2013-05-03 92 views
10

任何有关读取系统声音级别的最简单方法的线索是什么?Python读取输出声音不输入

我打算创造开出短的LED灯带的均衡器和挂钩起来,以一个Arduino和树莓派。我已经看到了很多例子,用输入,麦克风或类似的方法来做,但与整体输出没有多大关系。在这一点上,我无所谓程序特定或系统范围,我很高兴,当我真正获得阅读。任何建议都会受到欢迎。

- 编辑 -

基于How get sound input from microphone in python, and process it on the fly?我改变了PCM_CAPTURE到PCM_PLAYBACK导致蟒蛇说,读是不可能在输出/播放。

现在我试图创建一个回环设备,这个想法是管播放回到在单独捕获,到目前为止,阅读它,然后,但没有运气,我不知道这种方式是如何整齐/干净。我无法想象这是要走的路。

+0

请添加更多关于您迄今尝试过的信息。 – Luceos 2013-05-06 14:46:25

+0

基于http://stackoverflow.com/questions/1936828/how-get-sound-input-from-microphone-in-python-and-process-it-on-the-fly我将PCM_CAPTURE更改为PCM_PLAYBACK,其结果在python说读取是不可能的输出/播放。我现在正在尝试创建一个环回设备,这个想法是将播放回管理到一个单独的捕获,然后阅读它,但目前为止没有运气,我不知道这种方式是多么干净/清洁。我无法想象这是要走的路。 – PvdL 2013-05-06 14:50:25

+0

请尽可能更新您的问题,而不是评论。这样新读者可以更容易地分析问题和答案。 – Luceos 2013-05-06 15:20:24

回答

0

几乎任何种类的声音混合器(软件或硬件)的应该能够声音输出重新路由到输入。对于Windows,有内置的Stereo Mix,对于Linux有几种解决方案(我听说过PulseAudio的好处,但我无法为自己作证 - this tutorial中的一些步骤可能会有所帮助)。

这样,您可以在路由到Python - 您已经阅读那么应该工作一样好读麦克风电平的例子。

+0

从我的理解中,pulseaudio是一个位于alsa顶部的软件层,并不是每个发行版都使用脉冲,但他们必须使用alsa。因为我希望能够通过XBMC在RasberryPi上运行,所以alsa是我想要的方式。 – PvdL 2013-05-04 17:49:09

2

有人实现正是这种使用Python和的PulseAudio,看到this blog posting。作者编写了一个脚本,用于轮询系统范围内的峰值声级,以将其馈送到VU仪表。他还在Bitbucket上提供源码,here

我测试过它在Ubuntu和它的作品对我来说(虽然只有通过命令行,而不是在一个交互式的Python会话)。一些额外的工作涉及到安装一个ctypes PulseAudio包装来与Python接口(在源代码中链接),并且可能在脚本中将SINK_NAME设置为正确的值。

我从博客的PulseAudio是非常适合这个职位收集什么,但也许有更好的方法。

+0

我已经看到了这个,并测试它,但它并没有很好的工作。随着我的水槽名称,我只能得到0。在Ubuntu上使用pulseaudio pref程序(paman)设置组合设备后,我能够读取某些内容。奇怪的是,即使是帕曼,我几乎无法读出除了组合设备之外的任何设备的声级。我会尝试不同的设置,但我还没有时间。 – PvdL 2013-05-14 07:20:06

+0

如果您想要使用PulseAudio,那么pavumeter显示您正在播放的声音的音量似乎是一个先决条件。你确定你的声音是通过Pulse播放的,而不是直接播放到Alsa或什么的? – 2013-05-16 14:30:15

+0

是的,我是,但即使我的系统实际上有些问题(这可能很好),我可以访问多个系统用不同的设置来测试这个 – PvdL 2013-05-16 15:14:23