Transmita áudio do pyaudio com o Flask para HTML5

Quero transmitir o áudio do meu microfone (que está sendo gravado via pyaudio) via Flask para qualquer cliente que se conectar.

É daí que o áudio vem:

    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

Aqui está o meu código do frasco:

@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())))

E este é o cliente:

    <audio controls>
        <source src="{{ url_for('audiofeed') }}" type="audio/x-wav;codec=pcm">
        Your browser does not support the audio element.
    </audio>

Às vezes funciona, mas na maioria das vezes estou recebendo "[Errno 32] Tubo quebrado"

Ao descomentar isso com open ("tmp.wav") - parte (o self.save () opcionalmente pega todos os quadros anteriores e os salva em tmp.wav), eu meio que recebo um fluxo, mas tudo o que sai dos alto-falantes é um ruído de "clique".

Estou aberto a sugestões. Como faço para obter a entrada do meu microfone transmitida ao vivo (sem pré-gravação!) Para um navegador da web?

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion