Saltar al contenido

Python: ¿Transmisión de audio en tiempo real con PyAudio (o algo más)?

Ya no tienes que indagar más por todo internet ya que has llegado al sitio adecuado, poseemos la solución que buscas pero sin complicarte.

Solución:

¡Esto ha funcionado! ¡Gracias por la ayuda!

def generate_sample(self, ob, preview):
    print("* Generating sample...")
    tone_out = array(ob, dtype=int16)

    if preview:
        print("* Previewing audio file...")

        bytestream = tone_out.tobytes()
        pya = pyaudio.PyAudio()
        stream = pya.open(format=pya.get_format_from_width(width=2), channels=1, rate=OUTPUT_SAMPLE_RATE, output=True)
        stream.write(bytestream)
        stream.stop_stream()
        stream.close()

        pya.terminate()
        print("* Preview completed!")
    else:
        write('sound.wav', SAMPLE_RATE, tone_out)
        print("* Wrote audio file!")

Parece tan simple ahora, pero cuando no conoces Python muy bien, parece un infierno.

Esto es realmente simple con python-sounddevice:

import sounddevice as sd
sd.play(myarray, 44100)

Como puede ver en los ejemplos, pyaudio solo lee datos del archivo WAV y los escribe en la transmisión.

No es necesario escribir primero un archivo WAV, solo necesita un flujo de datos en el formato correcto.

Estoy agregando el ejemplo a continuación en caso de que el enlace se apague (tenga en cuenta que no escribí este código):

"""PyAudio Example: Play a WAVE file."""

import pyaudio
import wave
import sys

CHUNK = 1024

if len(sys.argv) < 2:
    print("Plays a wave file.nnUsage: %s filename.wav" % sys.argv[0])
    sys.exit(-1)

wf = wave.open(sys.argv[1], 'rb')

p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True)

data = wf.readframes(CHUNK)

while data != '':
    stream.write(data)
    data = wf.readframes(CHUNK)

stream.stop_stream()
stream.close()

p.terminate()

Aquí puedes ver las reseñas y valoraciones de los lectores

Si guardas alguna vacilación o capacidad de aclararse nuestro noticia te recordamos dejar un exégesis y con deseo lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *