Spark-TTS 文字转语音克隆

找了很多网上文字转语音的费用都不低,也尝试了很多个本地部署的,最终现在只有Spark TTS成功了,分享一下部署方法。

本渣的电脑配置
CPU: AMD Zen2 3750 4核8线程
GPU:英伟达 1650 4G (没有英伟达显卡可以用CPU来跑)
内存:32G DDR4 2666
硬盘:致态 2T

安装Conda

下载地址:https://repo.anaconda.com/miniconda/
下载最新版的Miniconda3-latest-Windows-x86_64.exe并安装,都是下一步默认安装就好。
图片
安装完有这个Anaconda Prompt程序在菜单中可以找到,证明成功了,后面在conda的命令都是在这个命令界面运行。
图片
在Anaconda Promp的命令工具运行如下命令

1
2
3
4
5
6
# 确认是否安装好,看看有没有版本号返回
conda --version
# 使用python来创建一个sparktts环境
conda create -n sparktts python=3.12 -y
# 激活sparktts环境
conda activate sparktts

图片

CUDA安装(不做这一步就是用CPU来跑)

通过nvidia-smi命令来确认自己的CUDA版本。如我的是12.8。
图片
然后在https://developer.nvidia.com/cuda-toolkit-archive找到你对应的版本。
图片
对照自己的系统版本来下载安装好。
图片

执行后续命令前,记得先去下载最新的Python来安装一下,不然无法运行pip命令的。
下载地址是:https://www.python.org/
图片
图片

本以为我的电脑本来在安装Ollama的时候就安装好CUDA了,可以这一步省略了。发现是理解错了。
这里是根据你CUDA版本安装好对应的PyTorch的CUDA版本。

1
2
3
4
5
pip install torch torchvision torchaudio --index-url https://pytorch.org/get-started/previous-versions/

# OR Manually install a specific CUDA version (if needed)
# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # Older GPUs

我的是12.8。所以安装的命令是:

1
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

这个命令可以在官网找到https://pytorch.org/
图片
如果你没有英伟达的显卡,可以选择用CPU的语句pip3 install torch torchvision torchaudio

下载源码ZIP包并安装

下载地址:https://github.com/SparkAudio/Spark-TTS
图片
建议用迅雷来下载,不然很可能会失败:https://github.com/SparkAudio/Spark-TTS/archive/refs/heads/main.zip
把ZIP包解压出来D:\AI\Spark-TTS-main,并且在这个目录里面运行终端来跑这个命令。

1
pip install -r requirements.txt

命令 pip install -r requirements.txt 是在使用 Python 的包管理工具 pip 来安装依赖文件中列出的所有第三方库。

详细解释:

  • pip: 是 Python 的默认包管理器,用于安装和管理 Python 库(packages)。
  • -r requirements.txt: 表示从名为 requirements.txt 的文件中读取要安装的库列表。
    图片

报错01 版本太低

如果你遇到我一样的错误,是因为requirements.txt文件中的torchtorchaudio版本太低,pip的包管理命令不支持自动更新了。改为2.6.0即可。
图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 ⚡Brian ❯❯ pip install -r requirements.txt
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting einops==0.8.1 (from -r requirements.txt (line 1))
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/87/62/9773de14fe6c45c23649e98b83231fffd7b9892b6cf863251dc2afa73643/einops-0.8.1-py3-none-any.whl (64 kB)
Collecting einx==0.3.0 (from -r requirements.txt (line 2))
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/90/04/4a730d74fd908daad86d6b313f235cdf8e0cf1c255b392b7174ff63ea81a/einx-0.3.0-py3-none-any.whl (102 kB)
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/97/e7/7d55a86719d0de7a6a597949f3febefb1009435b79ba510ff32f05a8c1d7/numpy-2.2.3-cp313-cp313-win_amd64.whl (12.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.6/12.6 MB 5.0 MB/s eta 0:00:00
Collecting omegaconf==2.3.0 (from -r requirements.txt (line 4))
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl (79 kB)
Collecting packaging==24.2 (from -r requirements.txt (line 5))
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl (65 kB)
Collecting safetensors==0.5.2 (from -r requirements.txt (line 6))
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/86/ca/aa489392ec6fb59223ffce825461e1f811a3affd417121a2088be7a5758b/safetensors-0.5.2-cp38-abi3-win_amd64.whl (303 kB)
Collecting soundfile==0.12.1 (from -r requirements.txt (line 7))
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/50/ff/26a4ee48d0b66625a4e4028a055b9f25bc9d7c7b2d17d21a45137621a50d/soundfile-0.12.1-py2.py3-none-win_amd64.whl (1.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 3.4 MB/s eta 0:00:00
Collecting soxr==0.5.0.post1 (from -r requirements.txt (line 8))
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/bc/10/440f1ba3d4955e0dc740bbe4ce8968c254a3d644d013eb75eea729becdb8/soxr-0.5.0.post1-cp312-abi3-win_amd64.whl (164 kB)
ERROR: Ignored the following versions that require a different python version: 1.21.2 Requires-Python >=3.7,<3.11; 1.21.3 Requires-Python >=3.7,<3.11; 1.21.4 Requires-Python >=3.7,<3.11; 1.21.5 Requires-Python >=3.7,<3.11; 1.21.6 Requires-Python >=3.7,<3.11; 1.26.0 Requires-Python <3.13,>=3.9; 1.26.1 Requires-Python <3.13,>=3.9
ERROR: Could not find a version that satisfies the requirement torch==2.5.1 (from versions: 2.6.0, 2.7.0, 2.7.1)

[notice] A new release of pip is available: 24.3.1 -> 25.1.1
[notice] To update, run: python.exe -m pip install --upgrade pip
ERROR: No matching distribution found for torch==2.5.1

图片
报错也让我运行这样的命令,所以也执行了一下。
感觉是是要运行python.exe -m pip install --upgrade pip来升级到25.1.1

重新执行pip install -r requirements.txt的成功界面是这样的,更新了一堆东西。
图片

下载模型

1
2
3
4
# 在Spark-TTS的解压ZIP包的目录中创建文件夹pretrained_models
mkdir pretrained_models
# 下载模型(需要魔法,不然就看下面的报错怎样解决)
git clone https://huggingface.co/SparkAudio/Spark-TTS-0.5B pretrained_models/Spark-TTS-0.5B

图片

报错02 无法下载模型

总所周知,我们有墙,huggingface上的东西是下载不到的。
可以切换到modelscope.cn去下载。
地址是:https://modelscope.cn/models/SparkAudio/Spark-TTS-0.5B/files
图片
先要安装一下modelscope这个下载工具

1
pip install modelscope

图片
再进行下载,在D:\AI\Spark-TTS-main\pretrained_models目录中打开一个新终端,运行以下语句。

1
modelscope download --model SparkAudio/Spark-TTS-0.5B

图片
下载完后文件放在了C:\Users\Brian\.cache\modelscope\hub\models\SparkAudio文件名叫Spark-TTS-0___5B
把文件夹制到D:\AI\Spark-TTS-main\pretrained_models并重命名为Spark-TTS-0.5B
图片

启动Spark TTS

启动的语句是在目录D:\AI\Spark-TTS-main运行命令行来执行这个语句。

1
python webui.py

图片
当然,如果你一次成功就看到如下返回值,直接进入http://127.0.0.1:7860/?就能开始使用了。
图片
如果你遇到本渣一样的错误,就继续往下看。

报错03 安装更新Gradio

错误信息返回值

几百行的错误日志,我用AI帮我分析。
图片
最后我就用这一条语句,安装了Gradio来解决的。
图片

1
pip install --upgrade gradio

重新启动

重新执行python webui.py就成功了。需要用浏览器打开http://127.0.0.1:7860/就能去到WebUI界面了。
图片
跑完的声音会保存在这个目录D:\AI\Spark-TTS-main\example\results
图片
测试,可以跑得动。但是速度就非常感人。14秒的语音,用了250秒才跑完。感觉是GPU没有跑满导致的,可能是CUDA没有调动起来。但是GPU也跑到35%的占用,真是奇怪。
图片

错误04 无法用CUDA跑运算

发现安装的PyTorch是CPU版本,需要重新安装。

1
2
# 这个语句用来检查PyTorch版本,如果返回值是False就是CPU版本。
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

图片

1
2
# 安装新的PyTorch GPU版本
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

安装了PyTorch GPU版本后,显存占用是上来了,但是GPU占用反而降低到13%了,不错CPU运占用就没有去到100%。
图片
显存的占用要去到8.3G,可能需要12G显存显卡的才能跑得快。
图片

CosyVoice2(未能成功部署)

又找到一个开源的TTS CosyVoice2。下面的是测试地址,可以试用。目测也是可以本地部署的,挖一个坑,有空部署试试。
https://www.modelscope.cn/studios/iic/CosyVoice2-0.5B/?st=18HqiL89ramYJTOXUurYK1Q
图片

下载CosyVoice

下载地址:https://github.com/FunAudioLLM/CosyVoice
同样道理,建议用迅雷下载,并解压出来。如我的目录是:D:\AI\CosyVoice
图片

创建CosyVoice的conda环境

默认都安装了Anaconda了,这是用来跑Python的独立环境用的。用Anaconda Prompt (miniconda3)命令行工具来执行下面的语句。

1
2
# 创建叫cosyvoice的环境
conda create -n cosyvoice -y python=3.10

图片

1
2
# 激活这个环境
conda activate cosyvoice

图片

1
2
# 安装pynini
conda install -y -c conda-forge pynini==2.1.5

这条命令的作用是从 conda-forge 频道中获取并安装 pynini 软件包的 2.1.5 版本,并且在整个过程中不需要用户确认(即自动同意所有提示)。这对于需要自动化脚本或CI/CD管道中确保特定版本依赖项非常有用。
图片
图片

接下来要在D:\AI\CosyVoice打开终端,并执行下面的依赖更新安装。

1
2
# 这个语句就是根据D:\AI\CosyVoice的requirements.txt来更新安装依赖
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com

图片
遇到这个错误,就是requirements.txt的版本太久了,换成建议比较新的就行。如下图:
图片
修改好requirements.txt,再执行一次语句pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com继续跑一次依赖更新安装。
Python的版本太高了,不支持,只能止步于此了?因为SparkTTS用的就是3.13,降级不知道会不会有影响。
图片
抱着试一试的想法,用Anaconda Prompt (miniconda3)命令行工具来执行试试。前提先执行conda activate cosyvoice来激活环境。

1
2
3
4
5
# 需要切换到D:\AI\CosyVoice
D:
cd AI\CosyVoice
# 再执行依赖更新安装
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com

图片
这次感觉是成功了。应该是缺了conda activate cosyvoice来激活环境后再执行命令。
图片

下载模型

D:\AI\CosyVoice目录下新建一个down.py的文件,把下面的代码放进去。

1
2
3
4
5
6
7
from modelscope import snapshot_download
snapshot_download('iic/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
snapshot_download('iic/CosyVoice-300M', local_dir='pretrained_models/CosyVoice-300M')
snapshot_download('iic/CosyVoice-300M-25Hz', local_dir='pretrained_models/CosyVoice-300M-25Hz')
snapshot_download('iic/CosyVoice-300M-SFT', local_dir='pretrained_models/CosyVoice-300M-SFT')
snapshot_download('iic/CosyVoice-300M-Instruct', local_dir='iic/CosyVoice-300M-Instruct')
snapshot_download('iic/CosyVoice-ttsfrd', local_dir='pretrained_models/CosyVoice-ttsfrd')

图片
再继续执行这个文件,就会开始下载模型。

1
python down.py

图片
会下载在D:\AI\CosyVoice\pretrained_models这个目录中。
图片

安装 Microsoft Visual C++ Build Tools​​

https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/

conda的常用命令

1
2
3
4
5
6
7
8
9
10
11
12
# 创建一个conda环境,名字叫cosyvoice,PyThon版本是3.10
conda create -n cosyvoice python=3.10
# conda的环境默认放在了C:\Users\Brian\miniconda3\envs\中

# 激活这个环境,在激活环境后才能做相关的操作。
conda activate cosyvoice

# 列出已经有的环境
conda env list

# 删除一个conda环境
conda env remove -n cosyvoice
1
2
3
4
5
6
7
8
(cosyvoice)  DESKTOP-FH09R9R    D:\AI\CosyVoice   561ms   9:45 AM   
⚡Brian ❯❯ conda env list
# conda environments:
#
base C:\Users\Brian\miniconda3
cosyvoice * C:\Users\Brian\miniconda3\envs\cosyvoice # 这个就是正在激活的环境
lmd C:\Users\Brian\miniconda3\envs\lmd
sparktts C:\Users\Brian\miniconda3\envs\sparktts