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>
Вернуться на верх