GitHub:https://github.com/sparkaudio/spark-tts
更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI
Spark-TTS 完全基于 Qwen2.5 构建,无需使用流匹配等额外生成模型。它无需依赖单独的模型来生成声学特征,而是直接从 LLM 预测的代码中重建音频。这种方法简化了流程,提高了效率并降低了复杂性。
上传任意10秒语音片段,瞬间复刻声纹特征!无论是跨语种的中英混说,还是模仿特定语调,通通零样本实现。自媒体博主惊呼:"我的百万声库要失业了!"
- 简单高效:Spark-TTS 完全基于 Qwen2.5 构建,无需额外的生成模型,如流程匹配。它不依赖单独的模型来生成声学特征,而是直接从 LLM 预测的代码中重建音频。这种方法简化了流程,提高了效率并降低了复杂性。
- 高质量语音克隆:支持零样本语音克隆,这意味着即使没有针对该语音的特定训练数据,它也可以复制说话者的语音。这是跨语言和代码切换场景的理想选择,允许在语言和语音之间无缝转换,而无需对每种语言和语音进行单独培训。
- 双语支持:支持中英文,能够针对跨语言和换码场景进行零镜头语音克隆,使模型能够以高自然度和准确性合成多种语言的语音。
- 语音生成可控:支持通过调整性别、音调、语速等参数创建虚拟说话人。
安装
克隆和安装
以下是在 Linux 上安装的说明。如果您使用的是 Windows,请参阅 Windows 安装指南。
- 克隆存储库
git clone https://github.com/SparkAudio/Spark-TTS.git
cd Spark-TTS
- 安装 Conda:请参阅 https://docs.conda.io/en/latest/miniconda.html
- 创建 Conda 环境:
conda create -n sparktts -y python=3.12
conda activate sparktts
pip install -r requirements.txt
# If you are in mainland China, you can set the mirror as follows:
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
模型下载
通过 python 下载:
from huggingface_hub import snapshot_downloadsnapshot_download("SparkAudio/Spark-TTS-0.5B", local_dir="pretrained_models/Spark-TTS-0.5B")
通过 git clone 下载:
mkdir -p pretrained_models# Make sure you have git-lfs installed (https://git-lfs.com)
git lfs installgit clone https://huggingface.co/SparkAudio/Spark-TTS-0.5B pretrained_models/Spark-TTS-0.5B
基本用法
您只需使用以下命令运行演示即可:
cd example
bash infer.sh
或者,您也可以在命令行中直接执行以下命令进行推理:
python -m cli.inference \--text "text to synthesis." \--device 0 \--save_dir "path/to/save/audio" \--model_dir pretrained_models/Spark-TTS-0.5B \--prompt_text "transcript of the prompt audio" \--prompt_speech_path "path/to/prompt_audio"
可选方法
有关其他 CLI 和 Web UI 方法,包括替代实现和扩展功能,您可以参考:
- AcTePuKc 的 CLI 和 UI
运行
Nvidia Triton 推理服务
我们现在为使用 Nvidia Triton 和 TensorRT-LLM 部署 Spark-TTS 提供了参考。下表显示了单个 L20 GPU 的基准测试结果,使用 26 个不同的 prompt_audio/target_text 对(总共 169 秒的音频):
型 | 注意 | 并发 | 平均延迟 | RTF |
---|---|---|---|---|
火花-TTS-0.5B | 代码提交 | 1 | 876.24 毫秒 | 0.1362 |
火花-TTS-0.5B | 代码提交 | 2 | 920.97 毫秒 | 0.0737 |
火花-TTS-0.5B | 代码提交 | 4 | 1611.51 毫秒 | 0.0704 |
有关更多信息,请参阅 runtime/triton_trtllm/README.md 中的详细说明。
实战演习
Spark-TTS 的核心功能是将文本转为语音,以下是具体操作流程:
1. 使用预训练模型生成语音
-
准备文本:创建一个简单的文本文件(如 input.txt),写入需要转换的文本,例如:“你好,这是一个测试语音。
-
python generate.py --input input.txt --output output.wav
-
参数说明:
- --input:指定输入文本文件路径。
- --output:指定生成的语音文件保存路径(如 output.wav)。
- 如果脚本支持,可添加 --model 参数选择预训练模型,或 --voice 参数调整声音风格。
-
结果:运行后,你会在指定路径找到生成的 output.wav 文件,用音频播放器打开即可听到效果。
2. 训练自定义模型
-
准备数据集:你需要提供文本和对应的音频数据。数据格式通常是 .txt 文件(文本)和 .wav 文件(音频),建议参考仓库中的 README.md 或示例文件夹。
-
配置参数:编辑配置文件(可能是 config.json 或类似文件),设置训练参数,如学习率、批次大小等。如果没有配置文件,直接在脚本中修改参数
-
python train.py --data_path ./dataset --output_model my_model
-
训练过程:根据数据量和硬件性能,训练可能需要数小时甚至几天。完成后,你会得到一个新的模型文件(如 my_model.pth)
-
python generate.py --input input.txt --model my_model.pth --output custom_output.wav
3. 调整语音风
-
python generate.py --input input.txt --speed 1.2 --pitch 0.8 --output styled_output.wav
-
参数说明:
- --speed:语速,1.0 为正常速度,大于 1.0 加快,小于 1.0 减慢。
- --pitch:音调,值越高音调越高,反之越低。
-
效果验证:生成后试听,逐步调整参数直到满意。
操作流程实例
假设你想将一段中文文本转为女性语音:
-
创建 test.txt,写入:“今天天气很好,我们去公园散步吧。
-
python generate.py --input test.txt --voice female --output park.wav
-
检查 park.wav,确认语音是否自然流畅。
-
如果不满意,尝试调整参数或训练新模型。