[英]/app/.heroku/python/lib/python3.7/site-packages/Crypto/PublicKey/RSA.py - Invalid syntax error
[英]dispatch_request (/env/lib/python3.7/site-packages/flask/app.py:1935) [Flask on Google App Engine]
我是日本的英语老师。 因为 COVID-19,我的学校已经停课一个月,而且还会再停一个月。 所以我做了一个 web 应用程序,我的学生可以用它来提高他们在家中的英语发音。
web 应用程序非常简单。
带有文本框的 web 站点
您在文本框中输入一个句子,然后单击“提交”按钮
您可以下载由 Google Cloud Text to Speech API 制作的 mp3 文件
这是我的应用程序的源代码。 https://github.com/k2kszk/speech-synthesizer我在 Google App Engine 标准环境 Python3.7 上使用 Flask。
我的学生开始使用 web 应用程序,然后我在 Google Cloud Platform 的控制台中发现了错误消息。 Google Cloud Platform 的控制台“错误报告”页面。 这是消息。
File "/srv/main.py", line 20, in index: voiceid = next(voice for voice in request.form.getlist('voiceId[]') if accent in voice)
at dispatch_request (/env/lib/python3.7/site-packages/flask/app.py:1935)
at full_dispatch_request (/env/lib/python3.7/site-packages/flask/app.py:1949)
at reraise (/env/lib/python3.7/site-packages/flask/_compat.py:39)
at handle_user_exception (/env/lib/python3.7/site-packages/flask/app.py:1820)
at full_dispatch_request (/env/lib/python3.7/site-packages/flask/app.py:1951)
at wsgi_app (/env/lib/python3.7/site-packages/flask/app.py:2446)
我搜索了互联网,但我什至找不到问题所在。 我该如何解决这个错误? 你能给我一些建议或信息吗?
先感谢您。
真诚的,卡祖
++++++++++++++++
这是我的 main.py。
#./advance/main.py
from flask import Flask
from flask import render_template
from flask import request
from flask import send_file
import os
from google.cloud import texttospeech
app = Flask(__name__)
@app.route("/", methods=['POST', 'GET'])
def index():
if request.method == "POST":
if request.form['Radio'] == 'normal':
ssml = '<speak><prosody rate="slow">' + request.form['text'] + '</prosody></speak>'
else:
ssml = '<speak>' + request.form['text'] + '</speak>'
accent = request.form['accent']
voiceid = next(voice for voice in request.form.getlist('voiceId[]') if accent in voice)
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="credentials.json"
client = texttospeech.TextToSpeechClient()
input_text = texttospeech.types.SynthesisInput(ssml=ssml)
voice = texttospeech.types.VoiceSelectionParams(
language_code=accent,
name=voiceid)
audio_config = texttospeech.types.AudioConfig(
audio_encoding=texttospeech.enums.AudioEncoding.MP3)
response = client.synthesize_speech(input_text, voice, audio_config)
# The response's audio_content is binary.
with open('/tmp/output.mp3', 'wb') as out:
out.write(response.audio_content)
return send_file("/tmp/output.mp3",as_attachment=True)
else:
return render_template("index.html")
if __name__ == "__main__":
app.run()
在这种情况下,问题出在voiceid
线上。
voiceid = next(voice for voice in request.form.getlist('voiceId[]') if accent in voice)
这是引发StopIteration
因为它的选择标准不满足。 您可以将其更改为
voiceid = voiceid = next((voice for voice in request.form.getlist('voiceId[]') if accent in voice), None)
然后,在这种情况下, voiceid
将设置为None
(或您提供的其他值)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.