0

我正在尝试使用 for 循环从音频文件中获取内容来遍历文件的内容,但我得到的是文本的最后一行。我确定问题出在 main.py 的主代码中,我不知道可能出了什么问题。这是一些代码:

from flask import Flask, render_template, request, redirect
from google.cloud import speech
import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'PATH'
app = Flask(__name__)

@app.route("/", methods=["GET", "POST"])
def index():        

    if request.method == "POST":
        if "file" not in request.files:
            return redirect(request.url)

        file = request.files["file"]
        if file.filename == "":
            return redirect(request.url)
          
        if file:
            client = speech.SpeechClient()

            config = speech.RecognitionConfig(
            encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
            sample_rate_hertz=8000,
            language_code="en-US",
            )  
         
            content = request.files['file'].read()
            audio = speech.RecognitionAudio(content=content)
            response = client.recognize(config=config, audio=audio)

            for result in response.results:
                text = result.alternatives[0].transcript
   
    return render_template('index.html', text=text)


if __name__ == "__main__":
    app.run(debug=True)
4

1 回答 1

0

问题出在这一行:

for result in response.results:
    text = result.alternatives[0].transcript

文本始终是最后一个。您可以做的是将文本附加到列表并像这样返回列表

lines = []
for result in response.results:
    text = result.alternatives[0].transcript
    lines.append(text)

并将返回更改为

return render_template('index.html', text=lines)

并且不要忘记在您的 jinja 模板中添加一个 for 循环来处理返回的列表。

于 2021-01-23T23:13:48.050 回答