GTTS.say(text) принимает строку
Я пытаюсь создать веб-сайт с помощью Django, который будет принимать некоторый текст в качестве ввода и преобразовывать его в аудио.
Я создал пустой массив, который должен хранить значение входного сигнала и преобразовывать его в аудио. Но когда я запускаю сервер, он выдает ошибку - gTTS.say(text) принимает string.
Мой views.py
#An empty array called textForTts
textForTts = []
class UploadFileForm(forms.Form):
tts = forms.CharField(label = "Convert text to audio here")
def index(request):
if request.method == "POST":
form = UploadFileForm(request.POST)
if form.is_valid():
tts = form.cleaned_data["tts"]
textForTts.append(tts)
obj = say(language='en-us', text= textForTts)
return render(request,'demo/website.html',{
"form" : UploadFileForm(),
'obj':obj
})
my index.html:
{% block body %}
{% load gTTS %}
<form method="post">
{% csrf_token %}
<audio
src = "{{obj}}"
controls
></audio>
{{form}}
<input type = "submit">
</form>
{% endblock %}
Это мой первый опыт работы с Django. Что я должен сделать, чтобы исправить свои ошибки?
Заранее спасибо.
Вы используете Django-Gtts, верно? AFAIK, правильная форма вызова say
внутри шаблона Django такова:
{% load gTTS %}
<audio
src="{% say 'en-us' 'text to say' %}"
controls
></audio>
Я бы предложил рефакторизовать ваше представление следующим образом:
return render(request, "demo/website.html", {
"form": UploadFileForm(),
"lang": "en-us",
"text": "text to say",
})
Это позволит вам вызывать say в шаблоне Django следующим образом:
{% load gTTS %}
<audio
src="{% say lang text %}"
controls
></audio>