【发布时间】: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 中被引用
-
嗯...也许检查前端以确保正在发送数据