1

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

我创建了一个空数组,它应该存储输入的值并将其转换为音频。但是当我运行服务器时,它给了我一个错误提示 - gTTS.say(text) 需要字符串。

我的观点.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。我应该怎么做才能修复我的错误?

提前致谢。

4

1 回答 1

0

你使用Django-Gtts,对吗?sayAFAIK,在 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",
})

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

{% load gTTS %}

<audio
 src="{% say lang text %}"
 controls
></audio>
于 2021-09-07T18:36:45.010 回答