相关疑难解决方法(0)

Flask 将 pyaudio 发送到浏览器

我将服务器麦克风的音频发送到浏览器(大部分像这篇文章,但有一些修改的选项)。

一切都工作正常,直到你转到手机或野生动物园,它根本不起作用。我尝试过使用像howler这样的东西来处理前端,但没有成功(仍然可以在 Chrome 和计算机上使用,但不能在手机 Safari/Chrome/等上使用)。<audio> ... </audio>在 Chrome 中运行良好,但仅在计算机上运行。

function play_audio() {
  var sound = new Howl({
    src: ['audio_feed'],
    format: ['wav'],
    html5: true,
    autoplay: true
  });
  sound.play();
}
Run Code Online (Sandbox Code Playgroud)

如何发送可在任何浏览器中运行的“实时”wav 生成的音频源?

编辑230203:

我已将错误范围缩小到标题(至少我认为是导致错误的原因)。

应该使用什么标头才能使声音在所有浏览器中可用?

就拿这个简单的app.py例子来说:

from flask import Flask, Response, render_template
import pyaudio
import time

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html', headers={'Content-Type': 'text/html'})

def generate_wav_header(sampleRate, bitsPerSample, channels):
    datasize = 2000*10**6
    o = bytes("RIFF",'ascii')
    o += (datasize + 36).to_bytes(4,'little')
    o += bytes("WAVE",'ascii') …
Run Code Online (Sandbox Code Playgroud)

html python flask pyaudio

9
推荐指数
1
解决办法
1045
查看次数

将音频从pyaudio与Flask流传输到HTML5

我想通过Flask将麦克风的音频(通过pyaudio记录)通过流传输到任何连接的客户端。

这是音频的来源:

    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
Run Code Online (Sandbox Code Playgroud)

这是我的烧瓶代码:

@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())))
Run Code Online (Sandbox Code Playgroud)

这是客户:

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

有时确实可以,但是大多数时候我会收到“ [Errno 32]管道坏了

当用open(“ tmp.wav”)-part取消注释时(self.save()可以选择所有先前的帧并将它们保存在tmp.wav中),我有点听不到声音,但是所有声音都来自扬声器是“咔嗒”声。

我愿意接受任何建议。如何将我的麦克风输入实时流式传输(无需预先录制!)到网络浏览器?

谢谢!

python audio html5 flask pyaudio

6
推荐指数
1
解决办法
5899
查看次数

标签 统计

flask ×2

pyaudio ×2

python ×2

audio ×1

html ×1

html5 ×1