Grabación en bucle (‘What u hear’) en Python usando PyAudio

Buen día,

Estoy intentando grabar la salida de mi altavoz con Python usando PyAudio. Actualmente, puedo grabar la entrada de mi micrófono y enviarla al “oyente”. Lo que estoy tratando de hacer ahora es crear un bucle de retorno, para que registre la salida de mis altavoces. Pude hacer esto con la ‘Mezcla estéreo’ desde Windows, pero como debe ser multiplataforma, debería haber otra forma de hacerlo.

¿Alguien tiene algún consejo sobre cómo podría lograr esto?

Aquí está mi código actual para grabar un flujo de entrada.

import socket import pyaudio import wave #record CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 RECORD_SECONDS = 40 HOST = '192.168.0.122' # The remote host PORT = 50007 # The same port as used by the server recording = True s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) p = pyaudio.PyAudio() for i in range(0, p.get_device_count()): print(i, p.get_device_info_by_index(i)['name']) device_index = int(input('Device index: ')) stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK, input_device_index=device_index) print("*recording") frames = [] while recording: data = stream.read(CHUNK) frames.append(data) s.sendall(data) print("*done recording") stream.stop_stream() stream.close() p.terminate() s.close() print("*closed") 

Cualquier ayuda sería muy apreciada!

    EDIT: no vi la cosa multiplataforma. Dejando esto como una referencia al dispositivo de loopback para Windows.

    Instale un dispositivo de bucle de retorno virtual como [1] y seleccione el adaptador como su dispositivo de entrada. Eso me funciona muy bien.

    Puedes comprobarlo con pyAudio así:

     >>> print p.get_device_count() 8 >>> print p.get_device_info_by_index(1)["name"] Line 1 (Virtual Audio Cable) 

    Por lo tanto, uso 1 como mi device_index.

    [1] http://virtual-audio-cable.en.softonic.com/