Я новичок в кодировании. Я хотел бы создать простое веб-приложение, использующее Google Cloud Text to Speech API.
- веб-сайт с текстовым полем
- , введите предложение в текстовое поле и щелкните с помощью кнопки «отправить»
- вы можете загрузить mp3-файл, созданный Google Cloud Text, в Speech API
Я учитель английского языка Engli sh, поэтому я бы хотел Я хотел бы, чтобы мои студенты использовали этот веб-сайт для улучшения своего произношения на английском языке sh.
Во-первых, я хотел бы показать вам свой код. Я использую Flask в стандартной среде Google App Engine Python3 .7.
Это структура каталогов.
.
├── app.yaml
├── credentials.json
├── main.py
├── requirements.txt
└── templates
└── hello_form.html
Это main.py.
from flask import Flask
from flask import render_template
from flask import request
from flask import send_file
app = Flask(__name__)
@app.route("/", methods=['POST', 'GET'])
def index():
if request.method == "POST":
text = request.form['text']
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="credentials.json"
from google.cloud import texttospeech
client = texttospeech.TextToSpeechClient()
input_text = texttospeech.types.SynthesisInput(text=text)
voice = texttospeech.types.VoiceSelectionParams(
language_code='en-US',
name='en-US-Standard-C',
ssml_gender=texttospeech.enums.SsmlVoiceGender.FEMALE)
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")
else:
return render_template("hello_form.html")
if __name__ == "__main__":
app.run()
Это hello_form. html
<html>
<head>
<title>Sample Web Form</title>
</head>
<body>
<h1>Fill Out This Form</h1>
<form action="/" method="POST">
text: <input type="text" name="text">
<br/>
<input type="submit">
</form>
</body>
</html>
Это needs.txt.
Flask==1.1.1
future==0.18.2
google-cloud-texttospeech==0.5.0
grpcio==1.26.0
gunicorn
Это app.yaml.
runtime: python37
entrypoint: gunicorn -b :$PORT main:app
Когда я развернуло это приложение на Google App Engine, оно работало довольно хорошо. Тем не менее, я не мог скачать mp3 файл напрямую. Я покажу вам, что я имею в виду.
Шаг 1: Если я введу URL-адрес моего приложения в браузере (Google Chrome на Windows10), я вижу эту простую форму. Шаг 2: Я ввожу текст и пу sh «отправить».
Шаг 3: Сервер отправляет mp3-файл клиенту, но загрузка не начинается.
Шаг 4: щелкните правой кнопкой мыши в браузере и выберите команду «Сохранить как».
Шаг 5: Менеджер загрузок начинает работать и дает имя mp3-файлу.
Шаг 6: Загрузите mp3-файл в локальную папку загрузки.
Мне не нужны шаги 3 и 4. Когда я пу sh "отправляю", я хочу, чтобы браузер автоматически запускал менеджер загрузок.
Не могли бы вы дать мне какую-либо информацию или предложение?
Заранее спасибо.
С уважением, Казу
Благодаря Кэмерон Робертс я преодолел свои трудности.
Передача as_attachment = True в send_file решила проблему.
Однако теперь я столкнулся с другой проблемой. Это решение отлично работало, когда я обращался к своему веб-приложению из P C (Google Chrome). Но когда я получил доступ к своему веб-приложению из iPhone (Google Chrome), загрузка не началась. Для меня это большая проблема, потому что на iPhone я не могу щелкнуть правой кнопкой мыши и выполнить операцию «Сохранить как».
Это скриншот.
Не могли бы вы дать мне какую-либо информацию или предложение?
Заранее спасибо.
С уважением, Казу