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

使用ElevenLabs generate函数遇Text must be a string错误的解决咨询

解决ElevenLabs generate函数"Text must be a string when stream is False"错误

针对你遇到的问题——即使确认翻译后的文本是字符串类型仍触发报错,可尝试以下解决方案:

1. 过滤空文本或全空白文本

Whisper转录的部分segment可能是空字符串或仅包含空白字符,这类文本传入ElevenLabs API会触发错误。在生成音频前添加判断逻辑:

for segment in segments:
    segment_text = segment.text
    segment_text_translated = translator.translate_text(segment_text, target_lang="FR").text
    # 跳过空文本或仅含空白的文本
    if not segment_text_translated.strip():
        print(f"Skipping empty segment {segment.id}")
        continue
    # 后续生成音频代码
    audio = generate(
        text=segment_text_translated,
        voice="Rachel",
        model="eleven_multilingual_v2"
    )
    save(audio, f"segment_{segment.id}.mp3")

2. 强制转换为标准字符串并清理文本

虽然type()显示为字符串,但DeepL返回的可能是自定义字符串子类,或包含不可见特殊字符。通过str()强制转换并清理文本:

segment_text_translated = str(translator.translate_text(segment_text, target_lang="FR").text).strip()

3. 显式指定stream=False参数

尽管默认值为False,但显式传入该参数可避免函数内部参数解析异常:

audio = generate(
    text=segment_text_translated,
    voice="Rachel",
    model="eleven_multilingual_v2",
    stream=False
)

4. 升级ElevenLabs SDK到兼容版本

你当前使用的elevenlabs==0.2.14版本较旧,存在参数处理类的bug。建议升级到0.3.x系列(兼容现有代码结构):

pip install --upgrade elevenlabs==0.3.0

若升级到最新v1.x版本,需注意API调用方式有较大变化,需调整代码(比如使用elevenlabs.client.ElevenLabs类初始化客户端)。

5. 检查单条文本长度

ElevenLabs API对单条文本长度有限制(免费版通常为5000字符),若segment文本过长,可拆分后再生成音频。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 21:56:09