语音合成(TTS)
将文本转为自然语音 — 快速单人朗读,或按脚本智能分配多角色音色。
将文本或 URL 内容转化为自然流畅的语音音频。Skill 会根据你的输入自动选择两种路径之一:单一音色一气呵成地朗读,或由多个音色逐行演绎你标注好的脚本。
触发方式
输入 /tts 命令,或使用以下任意短语触发:
| 短语 | 语言 |
|---|---|
read aloud / read this aloud | 英文 |
TTS / text to speech | 英文 |
voice narration | 英文 |
朗读这段 | 中文 |
配音 / 语音合成 | 中文 |
使用前请先安装 ListenHub Skills — 参见快速开始。
快速示例
朗读这篇文章:https://en.wikipedia.org/wiki/PodcastSkill 会获取内容、选择音色,并生成自然的语音音频。
快速模式 vs 脚本模式
Skill 会在向你提问之前先确定模式。两种模式都产出可在线收听或下载的 MP3,区别在于使用几个音色,以及你对每一句的控制力。
| 快速模式 | 脚本模式 | |
|---|---|---|
| CLI 参数 | --mode direct | --mode smart |
| 音色数量 | 单个 | 每个角色一个 |
| 速度 | 快、低延迟(约 1–2 分钟) | 适中(约 2–3 分钟) |
| 适用场景 | 朗读文章、日常文字转语音、单人旁白 | 对话、有声书、多角色脚本内容 |
| 控制粒度 | 把文本作为整块朗读 | 每段由你分配的音色演绎 |
快速模式接收一段文本(或一个 URL),用单一音色一口气读完。它同步运行,很快返回音频链接。
脚本模式接收一份每行标注了说话人的脚本,为每个角色分配不同音色,再把各段拼接成一条音轨。较长的脚本会在后台运行 —— Skill 提交任务后会轮询直到完成。
CLI 的 tts create 命令默认使用 --mode smart。Skill 会根据下面的模式检测规则自动替你选择参数,因此你很少需要手动设置。
模式如何检测
Skill 会在提问之前先读取你的请求,并自动路由到对应模式:
| 输入中的信号 | 模式 |
|---|---|
| "多角色"、"脚本"、"对话"、"script"、"dialogue"、"multi-speaker" | 脚本 |
| 点名或按角色描述了多个人物 | 脚本 |
形如 A: ... / B: ... 的结构化分段 | 脚本 |
| 单段纯文本,没有角色标记 | 快速 |
| "读一下"、"TTS"、"朗读" 加纯文本 | 快速 |
| 含义模糊 | 快速(默认) |
如果路由判断有误,直接说明即可 —— 例如"按多角色脚本来做"—— Skill 会切换模式。
编写脚本(脚本模式)
在脚本模式下,你需要为每一行提供说话人。最简单的格式是每个发言一行,Speaker: 文本:
Alex: 大家好,欢迎收听节目。
Sam: 谢谢邀请!
Alex: 我们进入今天的话题。Skill 会把每个 Speaker: 标记解析为一段,收集出现的不同角色(Alex、Sam),并为每个角色分配音色。这些标记最终会传入底层的 /v1/flow-speech/episodes/tts 请求;如果你直接调用 API,该接口也接受显式的 scripts 数组:
{
"scripts": [
{ "content": "大家好,欢迎收听节目。", "speakerId": "cozy-man-chinese" },
{ "content": "谢谢邀请!", "speakerId": "travel-girl-chinese" }
]
}每段由其分配的音色按顺序朗读。
脚本技巧
- 在自然语句边界处分段 —— 每行一句或一个短段落。
- 交替使用不同说话人以营造对话感。
- 所有说话人保持同一种语言。
- 如果直接调用 API,每个
speakerId必须是 speakers 接口返回的有效 ID。
音色选择与已保存偏好
你不必自己选音色。Skill 按以下顺序处理:
已保存偏好。 如果你已为检测到的语言保存了默认音色,Skill 会静默使用它。
内置默认。 否则回退到该语言的内置默认音色 —— 英文用一个中性旁白音色;中文在多角色脚本中提供主、次两个音色。
显式更换。 只有当你要求更换音色时,Skill 才会展示音色列表供你挑选。
当你选择新音色时(使用默认音色时不会),Skill 会询问是否记住:
- 快速模式 —— "将其保存为
{语言}的默认音色?" - 脚本模式 —— "保存这些音色分配以供后续会话使用?"
已保存偏好存放在工作目录下的 .listenhub/tts/config.json 中,位于按语言键控的 defaultSpeakers 下。快速模式保存单个音色;脚本模式保存本次会话分配的整组音色。选择"否"则音色仅用于本次运行,不改动配置文件。
偏好按工作目录隔离。在另一个项目里运行 Skill,会重新从内置默认音色开始。
参数
| 参数 | 选项 | 默认值 |
|---|---|---|
| 输入 | 文本或 URL | — |
| 模式 | direct(快速)、smart(脚本) | 自动检测 |
| 语言 | en、zh、ja | 从文本自动检测 |
| 音色 | 音色名称或 speakerId | 已保存偏好,否则内置默认 |
语音合成 vs 播客
两个 Skill 都能产出多人语音,但用途不同:
| 场景 | 推荐 Skill |
|---|---|
| 基于话题的自然对话讨论 | 播客 |
| 精确控制每句台词和说话人 | 语音合成(脚本模式) |
| 朗读文章或文本 | 语音合成(快速模式) |
限制
- FlowTTS 文本输入上限:10,000 字符。
- 更长的内容请改用 URL 输入 —— API 会自动获取并处理。
- 纯
text来源至少需要 10 个字符。
积分
生成会消耗积分。费用取决于长度、模式和音色,因此在执行大型任务前请先调用相应的 estimate-credits 接口,而不要假设固定价格。估算接口详见 FlowSpeech API 参考。
输出
生成完成后:
- 收听链接 —— 在 ListenHub 上播放音频。
- 字幕 —— 脚本模式在可用时还会返回字幕 URL。
- 下载 —— 对 AI 说"下载音频",即可将 MP3 以基于主题的文件名保存到当前目录。
API 参考
/v1/flow-speech/episodes、/v1/flow-speech/episodes/tts 以及 /v1/speech 文字转语音接口详见 FlowSpeech API 参考。