2013-05-03 15 views
10

Qualsiasi indizio su quale sia il modo più semplice per leggere il livello sonoro del sistema?L'audio in uscita in lettura Python non viene immesso

Sto pianificando di creare un equalizzatore formato da strisce corte e collegarle ad Arduino o RaspberryPi. Ho visto molti esempi su come farlo con l'input, il microfono o simili ma non tanto con l'output complessivo. A questo punto non posso preoccuparmi del programma specifico o di tutto il sistema, sono felice quando effettivamente ottengo letture. Qualsiasi consiglio sarebbe benvenuto.

- EDIT -

sulla base di How get sound input from microphone in python, and process it on the fly? ho cambiato il PCM_CAPTURE a PCM_PLAYBACK che si traduce in pitone dire di lettura non è possibile in uscita/riproduzione.

Ora sto provando a creare un dispositivo di loopback, l'idea è di reindirizzare la riproduzione ad un'acquisizione separata e leggerla poi ma senza fortuna fino ad ora e non so quanto sia pulito/pulito in questo modo. Non posso davvero immaginare che questa sia la strada da percorrere.

+0

Si prega di aggiungere ulteriori informazioni su ciò che hai tentato finora. – Luceos

+0

basato su http://stackoverflow.com/questions/1936828/how-get-sound-input-from-microphone-in-python-and-process-it-on-the-fly Ho cambiato il PCM_CAPTURE in PCM_PLAYBACK quali risultati in python non è possibile leggere l'output/playback. Ora sto provando a creare un dispositivo di loopback, l'idea è di reindirizzare la riproduzione ad un'acquisizione separata e leggerla poi, ma senza fortuna fino ad ora e non so quanto sia pulito/pulito in questo modo. Non posso davvero immaginare che questa sia la strada da percorrere. – PvdL

+0

Si prega di aggiornare la domanda invece di commentare ad esso quando possibile. In questo modo i nuovi lettori possono analizzare più facilmente il problema e rispondere. – Luceos

risposta

0

Quasi tutti i tipi di mixer audio (software o hardware) devono essere in grado di reindirizzare l'audio in ingresso. Per Windows c'è il Stereo Mix integrato, e per Linux ci sono diverse soluzioni (ho sentito cose positive su PulseAudio, ma non posso testimoniarmi: alcuni dei passi in this tutorial possono aiutare).

In questo modo è possibile instradarlo su Python - gli esempi di lettura dei livelli di microfono che hai letto dovrebbero quindi funzionare altrettanto bene.

+0

Dalla mia comprensione pulseaudio è un livello software in cima ad alsa e non tutte le distribuzioni utilizzano impulsi ma devono usare alsa. Dal momento che mi piacerebbe essere in grado di eseguirlo su un RasberryPi con XBMC e anche alsa è la strada da percorrere, penso. – PvdL

2

Qualcuno ha ottenuto esattamente questo utilizzando Python e PulseAudio, vedere this blog posting. L'autore ha scritto uno script che esegue il polling del livello del suono di picco a livello di sistema per inviarlo a un VU-meter. Ha anche reso disponibile la fonte su Bitbucket, here.

L'ho provato su Ubuntu e funziona per me (anche se solo dalla riga di comando, non in una sessione Python interattiva). Un altro lavoro in più è l'installazione di un wrapper PulseAudio ctypes per l'interfacciamento con Python (link in source) e magari l'impostazione di SINK_NAME sul valore corretto nello script.

Ciò che raccolgo dal blog PulseAudio è molto adatto per questo lavoro, ma forse ci sono modi migliori.

+0

L'ho visto e testato ma non ha funzionato alla grande. Con il mio nome di sink in atto ottengo solo 0. Dopo aver configurato un dispositivo combinato con il programma di prefettura di pulseaudio (paman) su Ubuntu, ho potuto leggere qualcosa. Strano che questo fosse, anche con Paman non ero in grado di leggere il livello del suono su quasi tutti i dispositivi tranne i dispositivi combinati. Ho intenzione di provare questo su diverse impostazioni, ma non ho ancora avuto il tempo. – PvdL

+0

Se vuoi andare con PulseAudio, sembra un prerequisito che Pavumeter mostri il volume del suono che stai suonando. Sei sicuro che il tuo suono suoni tramite Pulse e non direttamente su Alsa o qualcosa del genere? –

+0

Sì, lo sono ma anche se qualcosa non funziona correttamente con il mio sistema (cosa che potrebbe benissimo essere) posso accedere a più sistemi con impostazioni diverse per testare questo – PvdL