找了很多网上文字转语音的费用都不低,也尝试了很多个本地部署的,最终现在只有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 conda create -n sparktts python=3.12 -y 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/
我的是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
文件中的torch
和torchaudio
版本太低,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 mkdir pretrained_modelsgit 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
这个下载工具
再进行下载,在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
运行命令行来执行这个语句。
当然,如果你一次成功就看到如下返回值,直接进入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 python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
1 2 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 conda create -n cosyvoice -y python=3.10
1 2 conda activate cosyvoice
1 2 conda install -y -c conda-forge pynini==2.1.5
这条命令的作用是从 conda-forge 频道中获取并安装 pynini 软件包的 2.1.5 版本,并且在整个过程中不需要用户确认(即自动同意所有提示)。这对于需要自动化脚本或CI/CD管道中确保特定版本依赖项非常有用。
接下来要在D:\AI\CosyVoice
打开终端,并执行下面的依赖更新安装。
1 2 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: cd AI\CosyVoicepip 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_downloadsnapshot_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' )
再继续执行这个文件,就会开始下载模型。
会下载在D:\AI\CosyVoice\pretrained_models
这个目录中。
https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
conda的常用命令 1 2 3 4 5 6 7 8 9 10 11 12 conda create -n cosyvoice python=3.10 conda activate cosyvoice conda env list 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 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