2013-05-03 33 views
10

Jakąkolwiek wskazówkę na temat najprostszy sposób, aby odczytać poziom głośności systemu?Python odczytać dźwięk wyjściowy nie wprowadzać

Planuję stworzyć korektor złożony z krótkich taśm ledowych i podpiąć je do Arduino lub RaspberryPi. Widziałem wiele przykładów, jak to zrobić za pomocą wejścia, mikrofonu lub podobnego, ale nie za dużo z ogólną wydajnością. W tym momencie nie dbają o program lub system, jestem szczęśliwy, kiedy faktycznie czytam. Wszelkie rady byłyby mile widziane.

- EDIT -

podstawie How get sound input from microphone in python, and process it on the fly? Zmieniłem PCM_CAPTURE do PCM_PLAYBACK co skutkuje Pythona mówiąc odczytu nie jest możliwe na wyjściu/odtwarzania.

Teraz próbuję utworzyć urządzenie z pętlą zwrotną, chodzi o to, aby odesłać odtwarzanie z powrotem do osobnego uchwytu i odczytać je, ale bez powodzenia, a nie wiem, jak czysty/czysty jest w ten sposób. Naprawdę nie mogę sobie wyobrazić, że to jest najlepsza droga.

+0

Podaj więcej informacji o dotychczasowych próbach. – Luceos

+0

na podstawie http://stackoverflow.com/questions/1936828/how-get-sound-input-from-microphone-in-python-and-process-it-on-the-fly Zmieniłem PCM_CAPTURE na PCM_PLAYBACK, co skutkuje w pythonie mówienie nie jest możliwe na wyjściu/odtwarzaniu. Teraz próbuję utworzyć urządzenie loopback, chodzi o to, aby odesłać odtwarzanie z powrotem do osobnego uchwytu i odczytać je, ale bez powodzenia, i nie wiem, jak czysty/czysty jest w ten sposób. Naprawdę nie mogę sobie wyobrazić, że to jest najlepsza droga. – PvdL

+0

Zaktualizuj pytanie, zamiast je komentować, jeśli to możliwe. W ten sposób nowi czytelnicy mogą łatwiej przeanalizować problem i odpowiedź. – Luceos

Odpowiedz

0

Prawie każdy rodzaj miksera dźwięku (oprogramowania lub sprzętu) powinien być w stanie przekierować wyjście dźwięku na wejście. Dla systemu Windows jest wbudowany Stereo Mix, a dla systemu Linux istnieje kilka rozwiązań (słyszałem dobre rzeczy o PulseAudio, ale nie mogę się zeznawać - mogą pomóc niektóre kroki opisane w this tutorial).

W ten sposób możesz przekierować go do Pythona - przykłady odczytanych poziomów mikrofonu, które przeczytałeś, powinny działać równie dobrze.

+0

Z mojego rozumienia pulseaudio jest warstwą oprogramowania na szczycie alsa i nie każda dystrybucja używa impulsu, ale musi z nich korzystać alsa. Ponieważ chciałbym móc uruchomić go na RasberryPi z XBMC, a alsa jest drogą do zrobienia. – PvdL

2

Ktoś osiągnął to za pomocą Pythona i PulseAudio, patrz this blog posting. Autor napisał scenariusz, który sonduje szczytowy poziom dźwięku w całym systemie, aby przekazać go do miernika VU. Udostępnił także źródło na Bitbucket, here.

Testowałem to na Ubuntu i działa on dla mnie (choć tylko z linii poleceń, nie w interaktywnej sesji Pythona). Niektóre dodatkowe prace polegają na zainstalowaniu wrappera ctypes PulseAudio do połączenia z Pythonem (link w źródle) i może ustawienie SINK_NAME na poprawną wartość w skrypcie.

To, co gromadzę na blogu PulseAudio, bardzo dobrze nadaje się do tej pracy, ale być może istnieją lepsze sposoby.

+0

Widziałem to i testowałem, ale nie działało świetnie. Z moim nazwiskiem zlewu otrzymuję tylko 0. Po skonfigurowaniu połączonego urządzenia z programem pulseaudio pref (paman) na Ubuntu byłem w stanie coś przeczytać. Dziwne, że nawet z paman nie byłem w stanie odczytać poziomu dźwięku na prawie każdym urządzeniu z wyjątkiem połączonych urządzeń. Mam zamiar wypróbować to w różnych konfiguracjach, ale nie miałem jeszcze czasu. – PvdL

+0

Jeśli chcesz korzystać z PulseAudio, wydaje ci się, że pavumeter wymaga głośności dźwięku, który grasz. Czy jesteś pewien, że twój dźwięk jest odtwarzany za pomocą Pulse, a nie bezpośrednio w Alsie? –

+0

Tak, jestem, ale nawet jeśli coś jest nie tak z moim systemem (co może równie dobrze być) Mogę uzyskać dostęp do wielu systemów z różnymi konfiguracjami, aby przetestować to – PvdL