小众AI

Spark-TTS
Spark-TTS - 不依赖模型生成声学特征的TTS
Spark-TTS 完全基于Qwen2.5 构建,无需使用流匹配等额外生成模型。它无需依赖单独的模型来生成声学特征,而是直接从 [LLM]预测的代码中重建音频。这种方法简化了流程,提高了效率并降低了复杂性。
  代码仓

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 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_download

snapshot_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 install

git 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 方法,包括替代实现和扩展功能,您可以参考:

运行

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),写入需要转换的文本,例如:“你好,这是一个测试语音。”

  • 运行脚本:假设仓库提供了一个 generate.py 脚本(具体文件名以实际仓库为准),在终端输入: 复制复制复制复制复制复制复制

    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. 调整语音风格

  • 如果 Spark-TTS 支持多风格输出(需查看代码或文档确认),可以通过参数调整语速、音调等。例如:

    python generate.py --input input.txt --speed 1.2 --pitch 0.8 --output styled_output.wav
    
  • 参数说明:

    • --speed:语速,1.0 为正常速度,大于 1.0 加快,小于 1.0 减慢。
    • --pitch:音调,值越高音调越高,反之越低。
  • 效果验证:生成后试听,逐步调整参数直到满意。

操作流程实例

假设你想将一段中文文本转为女性语音:

  1. 创建 test.txt,写入:“今天天气很好,我们去公园散步吧。”

  2. 运行命令:

    python generate.py --input test.txt --voice female --output park.wav
    
  3. 检查 park.wav,确认语音是否自然流畅。

  4. 如果不满意,尝试调整参数或训练新模型。


更多...


wdoc
一个功能强大的 RAG(检索增强生成)系统,旨在汇总、搜索和查询各种文件类型的文档。
ai-financial-agent
探索人工智能在投资研究中的应用。
Meetily
一个 AI 驱动的会议助手,可捕获实时会议音频、实时转录并生成摘要,同时确保用户隐私。