不会写JSONL?GLM-TTS批量任务模板送给你
1. 引言:让语音合成更高效
你是不是也遇到过这样的情况:需要为一段课程内容生成几十条语音,或者要给电商商品描述配上统一风格的配音?如果每次都手动输入文本、上传音频、点击合成,那可太费时间了。
好消息是,GLM-TTS这款由智谱开源、科哥二次开发的AI文本转语音模型,支持批量推理功能,能帮你一口气搞定上百个语音任务。它不仅支持普通话和英文,还能克隆方言、控制情感表达,甚至精细到音素级别调整发音。
但很多用户卡在了一个看似简单的问题上——不会写 JSONL 格式的任务文件。
别担心,这篇文章就是为你准备的。我会手把手教你如何正确编写批量任务所需的 JSONL 文件,并提供可以直接使用的模板,让你轻松上手 GLM-TTS 批量语音合成。
2. 什么是 JSONL?为什么用它做批量任务
2.1 JSONL 是什么
JSONL(JSON Lines)是一种特殊的 JSON 格式,它的特点是每一行都是一个独立的 JSON 对象,而不是把所有数据包在一个大数组里。
举个例子:
{"name": "张三", "age": 28} {"name": "李四", "age": 32} {"name": "王五", "age": 25}每行是一个完整的对象,彼此之间没有逗号分隔,也不需要用方括号包裹。这种格式非常适合处理大量结构化数据,尤其是用于机器学习或自动化任务时。
2.2 为什么 GLM-TTS 用 JSONL
GLM-TTS 的批量推理模块采用 JSONL 格式来读取任务列表,主要原因有三个:
- 逐行解析效率高:不需要一次性加载整个文件到内存,适合处理大文件。
- 容错性强:某一行出错不会影响其他行的任务执行。
- 易于生成:可以用脚本自动生成成百上千行任务,方便集成进工作流。
3. 批量任务字段详解
在使用 GLM-TTS 的批量推理功能前,你需要准备一个符合要求的 JSONL 文件。以下是每个字段的具体说明。
3.1 必填字段
| 字段名 | 含义 | 示例 |
|---|---|---|
prompt_audio | 参考音频的路径(必须存在) | "examples/prompt/audio1.wav" |
input_text | 要合成的文本内容 | "欢迎来到智能语音时代" |
⚠️ 注意:
prompt_audio是必填项,系统将根据这段音频克隆音色。路径必须是镜像环境中真实存在的文件路径。
3.2 可选字段
| 字段名 | 含义 | 示例 | 作用 |
|---|---|---|---|
prompt_text | 参考音频对应的原文 | "你好,我是小科" | 提高音色还原度 |
output_name | 输出文件名(不含扩展名) | "intro_001" | 自定义命名,避免默认时间戳 |
3.3 完整示例
{"prompt_text": "你好,我是客服小美", "prompt_audio": "voices/xiaomei.wav", "input_text": "感谢您的来电,我们将尽快为您处理。", "output_name": "customer_service_01"} {"prompt_text": "大家好,我是主播老李", "prompt_audio": "voices/lao_li.wav", "input_text": "今天给大家推荐一款超值好物!", "output_name": "live_broadcast_01"} {"prompt_audio": "voices/fangyan.wav", "input_text": "这个东西巴适得板!", "output_name": "dialect_promo"}✅ 小贴士:如果你没有
prompt_text,可以省略该字段,只保留prompt_audio和input_text即可。
4. 实战操作:从零创建你的第一个批量任务
4.1 准备工作
- 登录 CSDN 星图平台并启动GLM-TTS 智谱开源的AI文本转语音模型镜像。
- 等待环境就绪后,通过浏览器访问 WebUI(通常是
http://localhost:7860)。 - 在服务器中创建以下目录结构:
@inputs/ └── prompts/ ├── xiaomei.wav ├── lao_li.wav └── fangyan.wav @tasks/ └── batch_task.jsonl你可以通过 SFTP 或 Web 终端上传自己的参考音频。
4.2 编写 JSONL 任务文件
打开/@tasks/batch_task.jsonl,输入以下内容:
{"prompt_text": "你好,我是客服小美", "prompt_audio": "@inputs/prompts/xiaomei.wav", "input_text": "订单已发货,请注意查收。", "output_name": "notice_001"} {"prompt_text": "你好,我是客服小美", "prompt_audio": "@inputs/prompts/xiaomei.wav", "input_text": "您的快递正在派送中。", "output_name": "notice_002"} {"prompt_text": "大家好,我是主播老李", "prompt_audio": "@inputs/prompts/lao_li.wav", "input_text": "这款产品销量突破十万台!", "output_name": "promo_001"} {"prompt_audio": "@inputs/prompts/fangyan.wav", "input_text": "不摆了,真的太安逸了!", "output_name": "sichuan_dialect"}🔍 说明:
- 使用
@inputs/prompts/路径确保音频可被正确读取。- 同一个音色可以复用多次,只需重复写入相同
prompt_audio路径。
4.3 开始批量合成
- 切换到 WebUI 的「批量推理」标签页。
- 点击「上传 JSONL 文件」按钮,选择你刚创建的
batch_task.jsonl。 - 设置参数:
- 采样率:24000(速度快)
- 随机种子:42(保证结果可复现)
- 输出目录:
@outputs/batch
- 点击「🚀 开始批量合成」。
等待几分钟后,系统会自动完成所有任务,并打包生成 ZIP 文件供下载。
5. 常见问题与避坑指南
5.1 文件格式错误导致失败
❌ 错误写法一:用了标准 JSON 数组
[ {"prompt_audio": "...", "input_text": "..."}, {"prompt_audio": "...", "input_text": "..."} ]✅ 正确做法:每行独立,不加中括号和逗号
{"prompt_audio": "...", "input_text": "..."} {"prompt_audio": "...", "input_text": "..."}5.2 路径问题导致找不到音频
常见错误提示:File not found: examples/audio.wav
原因可能是:
- 路径拼写错误
- 文件未上传到位
- 使用了相对路径如
./audio.wav,但当前工作目录不是预期位置
✅ 解决方案:
- 使用绝对路径或带
@inputs/的明确路径 - 在终端用
ls @inputs/prompts/检查文件是否存在
5.3 中文乱码或特殊字符问题
如果文本中含有引号、换行符等特殊字符,记得进行转义:
{"prompt_audio": "voice.wav", "input_text": "他说:\"这简直太棒了!\""}或者使用 Python 脚本生成,避免手动编辑出错。
6. 高效技巧:用 Python 自动生成 JSONL
当你需要处理上百条任务时,手动写 JSONL 显然不现实。下面是一个简单的 Python 脚本,帮助你从 CSV 表格自动生成 JSONL 文件。
假设你有一个tasks.csv文件:
speaker,text,output_name xiaomei,欢迎光临我们的店铺,welcome xiaomei,本次消费共计99元,payment lao_li,点击下方链接立即购买,buy_now运行以下脚本:
import csv import json audio_map = { 'xiaomei': '@inputs/prompts/xiaomei.wav', 'lao_li': '@inputs/prompts/lao_li.wav' } with open('tasks.csv', encoding='utf-8') as f_in, open('@tasks/auto_task.jsonl', 'w', encoding='utf-8') as f_out: reader = csv.DictReader(f_in) for row in reader: task = { "prompt_audio": audio_map[row['speaker']], "input_text": row['text'], "output_name": row['output_name'] } f_out.write(json.dumps(task, ensure_ascii=False) + '\n')运行后就会生成标准格式的auto_task.jsonl,直接上传即可使用。
7. 总结:掌握批量任务,提升语音生产效率
通过本文,你应该已经掌握了以下几个关键点:
- JSONL 是什么:一种按行存储 JSON 对象的轻量级数据格式,适合批量任务。
- GLM-TTS 批量任务字段规则:
prompt_audio和input_text是核心,prompt_text和output_name是加分项。 - 实际操作流程:准备音频 → 编写 JSONL → 上传 → 合成 → 下载结果。
- 避坑要点:不要用数组格式、注意路径正确性、处理好特殊字符。
- 进阶方法:用脚本自动化生成任务文件,大幅提升效率。
现在你再也不用担心“不会写 JSONL”这个问题了。只要按照模板填写,哪怕完全不懂编程,也能轻松完成大批量语音合成任务。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。