ez-tts 是一个本地文本转语音(TTS)工具,基于 Kyutai 的 Pocket TTS 实现。它在首次下载模型后完全离线运行,在 CPU 上约可达 10 倍实时速度,无需 GPU。
用途
该工具用于将文本转换为语音,适合需要本地、离线语音合成的场景。支持多语言输出,并可通过预设音色或克隆音色生成语音。
主要能力
- 多语言支持:英语、法语、德语、葡萄牙语、意大利语、西班牙语(pocket-tts 2.x)。
- 预设音色:英语提供 alba、marius、javert、jean、fantine、cosette、eponine、azelma、anna、vera、charles、paul、george、mary、jane、michael、eve、bill_boerst、peter_yearsley、stuart_bell、caro_davy 等;其他语言提供 giovanni(意大利语)、lola(西班牙语)、juergen(德语)、rafael(葡萄牙语)、estelle(法语)。
- 声音克隆:可从清晰的语音样本(WAV/OGG/MP3/FLAC)克隆任意声音。
- 输出格式:默认输出 WAV,可通过 --ogg 转换为 OGG(需要 ffmpeg)。
- 自定义音色:可将克隆音色放入技能的 voices/ 目录,并通过名称使用(例如 voices/myvoice.ogg 存在时使用 --voice myvoice)。
使用方式
通过命令行脚本调用,基本用法如下:
基础英语(输出到 /tmp/tts_output.wav)
uv run scripts/tts.py "Hello, this is a test"
指定预设音色
uv run scripts/tts.py "Hello world" --voice marius
其他语言(每种语言有默认音色)
uv run scripts/tts.py "Hola mundo" --language spanish uv run scripts/tts.py "Bonjour le monde" --language french uv run scripts/tts.py "Ciao mondo" --language italian --voice giovanni
自定义输出文件
uv run scripts/tts.py "Hello world" --out ~/my_audio.wav
输出为 OGG(用于语音消息,需要 ffmpeg)
uv run scripts/tts.py "Hello world" --ogg
从本地样本克隆声音(需要 HF_TOKEN 及对 kyutai/pocket-tts 的 HF 访问权限)
uv run scripts/tts.py "Hello world" --voice /path/to/sample.ogg
语言与默认音色
- english(默认):同 english_2026-04,默认音色 alba
- english_2026-01 / english_2026-04:英语模型变体,默认音色 alba
- spanish / spanish_24l:_24l 表示更高质量、更慢,默认音色 lola
- german / german_24l:默认音色 juergen
- italian / italian_24l:默认音色 giovanni
- portuguese / portuguese_24l:默认音色 rafael
- french_24l:法语仅提供 24 层模型(french 别名可用),默认音色 estelle
选项
- --voice/-v:音色名称或用于克隆的音频路径(默认取决于 --language)
- --language/-l:模型语言(默认:english)
- --out/-o:输出文件路径(默认:/tmp/tts_output.wav)
- --ogg:将输出转换为 OGG(需要 ffmpeg)
- --quiet/-q:抑制进度消息
环境变量
- HF_TOKEN:用于模型下载 / 声音克隆的 Hugging Face 令牌
声音克隆要求
- 在 https://huggingface.co/kyutai/pocket-tts 接受条款
- 设置 HF_TOKEN 环境变量
- 音频样本应为清晰语音(WAV/OGG/MP3/FLAC)
- 预设目录音色无需克隆权重;文件路径克隆需要完整模型
适用场景
适合需要本地、离线、CPU 可运行的文本转语音任务,例如生成语音消息、多语言语音内容、使用预设或克隆音色进行语音合成。
限制
- 首次使用需要下载模型,之后可离线运行。
- 声音克隆需要 Hugging Face 令牌及对 kyutai/pocket-tts 的访问权限。
- OGG 输出需要 ffmpeg。
- 法语仅提供 24 层模型。
- 其他未在资料中提及的功能、收费、价格、平台或效果暂未提供。