Transmita audio de pyaudio con Flask a HTML5
Quiero transmitir el audio de mi micrófono (que se está grabando a través de pyaudio) a través de Flask a cualquier cliente que se conecte.
De aquí proviene el audio:
def getSound(self):
# Current chunk of audio data
data = self.stream.read(self.CHUNK)
self.frames.append(data)
wave = self.save(list(self.frames))
return data
Aquí está mi código de matraz:
@app.route('/audiofeed')
def audiofeed():
def gen(microphone):
while True:
sound = microphone.getSound()
#with open('tmp.wav', 'rb') as myfile:
# yield myfile.read()
yield sound
return Response(stream_with_context(gen(Microphone())))
Y este es el cliente:
<audio controls>
<source src="{{ url_for('audiofeed') }}" type="audio/x-wav;codec=pcm">
Your browser does not support the audio element.
</audio>
A veces funciona, pero la mayoría de las veces me da "[Errno 32] Tubo roto"
Al descomentar eso con open ("tmp.wav") - parte (self.save () opcionalmente toma todos los cuadros anteriores y los guarda en tmp.wav), obtengo una transmisión, pero todo lo que sale de los altavoces es un ruido de "clic".
Estoy abierto a cualquier sugerencia. ¿Cómo obtengo la entrada de mi micrófono en vivo (sin pregrabación) a un navegador web?
¡Gracias!