【问题标题】:Microphone input in HTML for FlaskFlask 的 HTML 中的麦克风输入
【发布时间】:2021-04-08 18:16:41
【问题描述】:

我正在使用 Flask 和 speech recognition 开发一个网络应用程序,用于音频输入、处理和在屏幕上显示输出。 This post帮我整理了音频文件的输入,这是我的flask代码:

list_msg = []

@app.route("/process_wav", methods=['GET', 'POST'])
def process_wav():
    if request.method == 'POST':
        audio_file = request.form.get("audio-recording")
        dir = 'audio/'+str(audio_file)
        msg = Mensaje(dir)  # this is a custom class I created for storing and processing the audio
        list_msg.append((dir, msg.sentence, msg.word_counter))
    return render_template("process_wav.html", list_msg=list_msg)

还有我的 HTML 代码:

{% block flask %}
<h1>Prototype</h1>

<section>
<form action="" method="POST" class="form-input">
<div class="form-input">
  <label for="audio-recording">Audio file (.wav)</label>
  <input name="audio-recording" type="file" accept="audio/*" id="audio-recording" >
  <button class="form-submit" type="submit" id="entry">Submit</button>
</div>
</form>
</section>

{% for msg in list_msg %}
<section class="form-output" id="output">
  <h3>{{ msg[0] }}</h3>
  <p>Result: "{{ msg[1] }}"</p>
  <p>Counter: {{ msg[2] }}</p>
</section>
{% endfor %}
{% endblock flask %}

但我发现有必要直接通过麦克风输入音频(并以与 .wav 音频文件相同的方式处理它)。所以我的问题是:如何通过麦克风以 HTML 格式将音频输入网页,以便将其传递给 Flask 和 python 进行处理,然后显示输出?

作为 Flask 和 HTML 的新手,我发现很难找到好的参考资料,尽管我发现 HTML 本身并不提供此功能。欢迎任何建议

【问题讨论】:

  • 这个答案可能会让你走上正轨:stackoverflow.com/a/60850613/5252522。您可以利用 JS 将音频发送到 Flask,这个答案应该有助于捕获该数据。编辑:问题提供了前端音频捕获所需的 JS:stackoverflow.com/q/60032983/5252522
  • @Quentin 你的评论帮助了我很多,我很感激。现在我正在使用 Arunavo Ray 的答案中的代码,但似乎找不到 request.files['audio_data] 因为 request.files 字典是空的,为什么会这样? PS:我没有更改 app.js,我按原样对其进行了测试,发现它按预期工作(将录音返回到浏览器)
  • 你添加了相关的JS前端代码吗?
  • @Quentin 如果您指的是除 app.js 之外的 JS 脚本,那么可以。它被称为 recorder.js,并在 Web URL 中被引用
  • 嗯...也许检查前端以确保正在发送数据

标签: python html flask


【解决方案1】:

使用烧瓶实时流式传输音频的功能。其实我没有得到你acutually想做的事。但是这样你就可以在烧瓶中流式传输音频了。

@app.route("/fetchAudio",methods=["GET"])
def fetch_audio():
    def generate():
       with open("SampleAudio.mp3", "rb") as audio: # your audio file path here
          audio_data = audio.read(1024)
       while audio_data:
            yield audio_data
            audio_data = audio.read(1024)
    return Response(generate(), mimetype="audio/x-wav") # header for audio type

我希望这会有所帮助。 github_link

【讨论】:

  • 基本上我打算让网站的访问者对他们的计算机麦克风(音频输入)说些什么,然后将其传递到 Python 后端,以便我可以使用 SpeechRecognition 模块转录它,最后返回转录文本(以及其他一些基本文本计算)返回显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 2021-09-11
  • 2012-11-16
相关资源
最近更新 更多