Domanda

Voglio registrare programatically suono proveniente dal mio computer portatile in pitone. ho trovato PyAudio e si avvicinò con il seguente programma che compie l'operazione:

import pyaudio, wave, sys

chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = sys.argv[1]

p = pyaudio.PyAudio()
channel_map = (0, 1)

stream_info = pyaudio.PaMacCoreStreamInfo(
    flags = pyaudio.PaMacCoreStreamInfo.paMacCorePlayNice,
    channel_map = channel_map)

stream = p.open(format = FORMAT,
                rate = RATE,
                input = True,
                input_host_api_specific_stream_info = stream_info,
                channels = CHANNELS)

all = []
for i in range(0, RATE / chunk * RECORD_SECONDS):
        data = stream.read(chunk)
        all.append(data)
stream.close()
p.terminate()

data = ''.join(all)
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()

il problema è necessario collegare la presa delle cuffie alla presa microfono. ho provato sostituzione di queste linee:

input = True,
input_host_api_specific_stream_info = stream_info,

con questi:

output = True,
output_host_api_specific_stream_info = stream_info,

ma allora ottengo questo errore:

  

Traceback (chiamata più recente scorso):
   File "./test.py", la linea 25, in
     Dati = stream.read (pezzo)
   File "/Library/Python/2.5/site-packages/pyaudio.py", la linea 562, in modalità di lettura
     paCanNotReadFromAnOutputOnlyStream)
  IOError: [Errno Non ingresso flusso] -9975

c'è un modo per creare un'istanza flusso PyAudio modo che ingressi dalla uscita del computer e non ho per collegare la presa cuffie al microfono? c'è un modo migliore per andare su questo? Preferirei attaccare w / un'applicazione python ed evitare di cacao.

È stato utile?

Soluzione

È possibile installare Soundflower , che consente di creare dispositivi audio aggiuntivi e percorso audio tra loro. In questo modo è possibile definire il sistema di vostra uscita al dispositivo Soundflower e leggere l'audio da usando PyAudio.

Si può anche dare un'occhiata a PyJack , un client audio per Jack .

Altri suggerimenti

Purtroppo, non c'è nessun modo infallibile per farlo, ma Audio Hijack e Wiretap sono i migliori strumenti disponibili per questo.

posso dare una risposta non usando modo programmatico. Panel> Audio> Registrazione >> consentendo mix stereo. Questo ha bisogno di un supporto driver. Ho anche scoperto che questo rende il mio vero eco del suono. Almeno questo risolve il mio problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top