2013-05-03 93 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