gTTS.say(text) 接受字符串

gTTS.say(text) takes string

我正在尝试使用 Django 创建一个网站,它将一些文本作为输入并将其转换为音频。

我创建了一个空数组,用于存储输入值并将其转换为音频。但是当我 运行 服务器时,它给我一个错误提示 - gTTS.say(text) takes 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
    })

我的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,对吧?据我所知,在 Django 模板中调用 say 的正确形式是:

{% 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",
})

这将允许您在 Django 模板中调用 say,如下所示:

{% load gTTS %}

<audio
 src="{% say lang text %}"
 controls
></audio>