You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django集成gTTS做文本转音频时报gTTS.say(text) takes string错误如何解决

错误原因

你遇到的报错核心是gTTS.say()方法的text参数仅接收字符串类型输入,但你传入了列表类型的全局变量textForTts。同时全局存储文本的方案存在逻辑问题:Django运行时全局变量会被所有用户共享,多用户访问时会出现输入串扰,且GET请求下没有任何文本输入时也会调用音频生成逻辑,属于无效调用。

修复步骤
  1. 移除全局的textForTts列表,不需要存储历史输入的场景下直接使用表单提交的字符串即可,如需拼接多次输入再转换,可将列表拼接为字符串后传入。
  2. 调整视图逻辑,仅在POST请求且表单验证通过后再调用音频生成方法,避免无效调用。
  3. 模板中增加非空判断,没有生成音频时不渲染audio标签,避免页面加载时报控件异常。

修复后的views.py代码

from django import forms
from django.shortcuts import render
# 请确保你已经正确导入gTTS的say方法

class UploadFileForm(forms.Form):
    tts = forms.CharField(label = "Convert text to audio here")

def index(request):
    obj = None
    if request.method == "POST":
        form = UploadFileForm(request.POST)
        if form.is_valid():
            tts_text = form.cleaned_data["tts"]
            # 直接传入字符串类型的用户输入
            obj = say(language='en-us', text=tts_text)
    return render(request,'demo/website.html',{
        "form" : UploadFileForm(),
        'obj':obj
    })

如果需要拼接多次输入的文本再生成音频,可以修改视图逻辑如下:

def index(request):
    obj = None
    # 用session存储当前用户的历史输入,避免全局变量串扰
    if 'text_history' not in request.session:
        request.session['text_history'] = []
    if request.method == "POST":
        form = UploadFileForm(request.POST)
        if form.is_valid():
            tts_text = form.cleaned_data["tts"]
            request.session['text_history'].append(tts_text)
            request.session.modified = True
            # 拼接所有历史输入为字符串
            full_text = ' '.join(request.session['text_history'])
            obj = say(language='en-us', text=full_text)
    return render(request,'demo/website.html',{
        "form" : UploadFileForm(),
        'obj':obj
    })

修复后的index.html代码

{% block body %}
{% load gTTS %}
<form method="post">
    {% csrf_token %}
    {% if obj %}
    <audio
    src = "{{obj}}"
    controls
    ></audio>
    {% endif %}
    {{form}}
    <input type = "submit">
</form>     
{% endblock %}

内容的提问来源于stack exchange,提问作者Shreyashi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:15:01