环境背景:本文基于 WSL2 (Debian 11) 环境,硬件配置为 RTX 3060 Laptop。适用于需要本地化部署 TTS(从文本到语音)大模型的开发者。
前置准备:CUDA 环境配置
在 WSL2 中,显卡驱动由 Windows 宿主机共享,我们只需在 Linux 子系统中安装开发套件。
1. Windows 端驱动
请确保 Windows 已安装最新 NVIDIA 驱动。WSL2 会自动映射 GPU 硬件,严禁在 WSL2 内部尝试安装显卡驱动。
使用nvidia-smi在右上角确认适用的CUDA版本,并将下面的版本适当进行替换。
执行以下命令安装 CUDA 13.1(适用于 Debian/Ubuntu 系):
1 2 3 4
| wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update sudo apt-get -y install cuda-toolkit-13-1
|
验证安装:
输入nvcc -V,若显示版本信息,则 CUDA 环境配置成功。
CosyVoice本地安装
克隆git库
1 2 3 4
| git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
cd CosyVoice git submodule update --init --recursive
|
由于依赖管理的需要,接下来需要用到Conda,安装参考这里
1 2 3 4 5 6 7
| conda create -n cosyvoice -y python=3.10 conda activate cosyvoice pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
sudo apt-get install sox libsox-dev
|
下载模型
在克隆好git库之后就需要下载要用到的模型了。经过测试,发现Fun-CosyVoice3-0.5B存在疑似分词问题,会把部分prompt内容输出到输出音频内,建议使用CosyVoice2-0.5B等旧版本模型。其中CosyVoice-300M-SFT模型具有预训练音色,可以直接调用并生成音频,其他模型(CosyVoice2-0.5B)需要准备模板音频(时长大于3s,小于30s)进行Zero-shot text-to-speech generation。
将以下内容黏贴进install-model.py中
1 2 3 4 5 6 7
| from modelscope import snapshot_download snapshot_download('FunAudioLLM/Fun-CosyVoice3-0.5B-2512', local_dir='pretrained_models/Fun-CosyVoice3-0.5B') 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-SFT', local_dir='pretrained_models/CosyVoice-300M-SFT') snapshot_download('iic/CosyVoice-300M-Instruct', local_dir='pretrained_models/CosyVoice-300M-Instruct') snapshot_download('iic/CosyVoice-ttsfrd', local_dir='pretrained_models/CosyVoice-ttsfrd')
|
这是官方推荐安装的Fun-CosyVoice3-0.5B CosyVoice2-0.5B CosyVoice-300M CosyVoice-300M-SFT CosyVoice-300M-Instruct预训练模型以及CosyVoice-ttsfrd资源。
启动webui
1 2
| python3 webui.py --port 50000 --model_dir path/to/model python3 webui.py --port 50000 --model_dir pretrained_models/CosyVoice2-0.5B
|
在WSL使用mirror网络模式且启用localhost转发的情况下,可以在浏览器通过访问127.0.0.1:50000来访问webui。
对于CosyVoice2-0.5B模型,由于不存在预训练音色,需要准备一段模板音频(大于3s小于30s)以及音频对应的文本(例如我准备的是普通话水平测试的示范音频及对应的文本),推理模式选择3s急速复刻,流式推理选择否,将prompt音频以及文本丢进去,输入合成文本,点击生成。稍作等待即可生成对应音频。
对于CosyVoice-300M-SFT模型,可以使用预训练音色模式,选择喜欢的音色并输入合成文本,点击生成音频进行生成。
GLM-TTS本地安装
克隆git库
1 2 3 4 5
| git clone https://github.com/zai-org/GLM-TTS.git cd GLM-TTS conda create -n glm-tts -y python=3.11 conda activate glm-tts pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
|
如果安装依赖过程报错,显示冲突的话,将requirements.txt改成如下内容
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212
| accelerate==1.12.0 aiofiles==24.1.0 aiohappyeyeballs==2.6.1 aiohttp==3.13.1 aiosignal==1.4.0 aliyun-python-sdk-core==2.16.0 aliyun-python-sdk-kms==2.16.5 annotated-doc==0.0.4 annotated-types==0.7.0 antlr4-python3-runtime==4.9.3 anyascii==0.3.3 anyio==4.11.0 async-timeout==5.0.1 audioread==3.1.0 brotli==1.2.0 certifi==2025.11.12 cffi==2.0.0 charset-normalizer==3.4.4 click==8.3.1 cmudict==1.1.2 coloredlogs==15.0.1 contourpy==1.3.2 contractions==0.1.73 crcmod==1.7 cryptography==46.0.3 cycler==0.12.1 debugpy==1.8.18 decorator==5.2.1 deepspeed==0.18.3 distro==1.9.0 editdistance==0.8.1 einops==0.8.1 einx==0.3.0 emoji==2.15.0 evaluation==0.0.2 exceptiongroup==1.3.0 fastapi==0.124.2 ffmpy==1.0.0 filelock==3.20.0 flatbuffers==25.9.23 fonttools==4.61.0 frozendict==2.4.7 frozenlist==1.8.0 fschat==0.2.36 fsspec==2025.12.0 funasr==1.2.7 gitdb==4.0.12 GitPython==3.1.45 glog==0.3.1 gradio==6.1.0 gradio_client==2.0.1 groovy==0.1.2 h11==0.16.0 hf-xet==1.1.10 hjson==3.1.0 httpcore==1.0.9 httptools==0.7.1 httpx==0.28.1 huggingface-hub==0.35.3 humanfriendly==10.0 hydra-core==1.3.2 HyperPyYAML==1.2.2 idna==3.11 importlib_metadata==8.7.0 importlib_resources==6.5.2 inflect==7.5.0 iniconfig==2.3.0 jaconv==0.4.1 jamo==0.4.1 jieba==0.42.1 Jinja2==3.1.6 jiter==0.11.1 jiwer==4.0.0 jmespath==0.10.0 joblib==1.5.2 kaldiio==2.18.1 kiwisolver==1.4.9 latex2mathml==3.78.1 lazy_loader==0.4 librosa==0.11.0 llvmlite==0.46.0 loguru==0.7.3 markdown-it-py==4.0.0 markdown2==2.5.4 MarkupSafe==2.1.5 matplotlib==3.10.8 mdurl==0.1.2 modelscope==1.33.0 more-itertools==10.8.0 mpmath==1.3.0 msgpack==1.1.2 multidict==6.7.0 multiprocess==0.70.16 networkx==3.4.2 nh3==0.3.1 ninja==1.13.0 numba==0.63.1 numpy==1.26.4 nvidia-cublas-cu12==12.8.4.1 nvidia-cuda-cupti-cu12==12.8.90 nvidia-cuda-nvrtc-cu12==12.8.93 nvidia-cuda-runtime-cu12==12.8.90 nvidia-cudnn-cu12==9.10.2.21 nvidia-cufft-cu12==11.3.3.83 nvidia-cufile-cu12==1.13.1.3 nvidia-curand-cu12==10.3.9.90 nvidia-cusolver-cu12==11.7.3.90 nvidia-cusparse-cu12==12.5.8.93 nvidia-cusparselt-cu12==0.7.1 nvidia-nccl-cu12==2.27.5 nvidia-nvjitlink-cu12==12.8.93 nvidia-nvshmem-cu12==3.3.20 nvidia-nvtx-cu12==12.8.90 omegaconf==2.3.0 onnxruntime-gpu==1.19.2 openai==2.6.0 openai-whisper==20250625 orjson==3.11.5 oss2==2.19.1 packaging==25.0 pandas==2.3.3 peft==0.18.0 pillow==12.0.0 platformdirs==4.5.1 pluggy==1.6.0 pooch==1.8.2 prompt_toolkit==3.0.52 pronouncing==0.2.0 propcache==0.4.1 protobuf==6.33.2 psutil==7.1.3 py-cpuinfo==9.0.0 pyahocorasick==2.2.0 pyarrow==21.0.0 pycparser==2.23 pycryptodome==3.23.0 pydantic==2.12.4 pydantic_core==2.41.5 pydub==0.25.1 Pygments==2.19.2 pynini==2.1.6 pynndescent==0.5.13 pyparsing==3.2.5 pypinyin==0.55.0 pytest==8.4.2 python-dateutil==2.9.0.post0 python-dotenv==1.1.1 python-gflags==3.1.2 python-multipart==0.0.20 pytorch-wpe==0.0.1 pytz==2025.2 PyYAML==6.0.3 RapidFuzz==3.14.3 regex==2025.11.3 requests==2.32.5 rich==14.2.0 ruamel.yaml==0.18.16 ruamel.yaml.clib==0.2.15 safehttpx==0.1.7 safetensors==0.7.0 scikit-learn==1.7.2 scipy==1.15.3 semantic-version==2.10.0 sentencepiece==0.2.1 sentry-sdk==2.47.0 shellingham==1.5.4 shortuuid==1.0.13 six==1.17.0 smmap==5.0.2 sniffio==1.3.1 soundfile==0.13.1 soxr==1.0.0 starlette==0.48.0 svgwrite==1.4.3 sympy==1.14.0 tensorboardX==2.6.4 textsearch==0.0.24 threadpoolctl==3.6.0 tiktoken==0.12.0 tokenizers==0.22.1 tomli==2.3.0 tomlkit==0.13.3 torch==2.9.1 torch-complex==0.4.4 torchaudio==2.9.1 torchcodec==0.9.1 torchvision==0.24.1 tqdm==4.67.1 train==0.0.5 transformers==4.57.3 triton==3.5.1 typeguard==4.4.4 typer==0.20.0 typing-inspection==0.4.2 typing_extensions==4.15.0 tzdata==2025.2 umap-learn==0.5.9.post2 urllib3==2.6.1 uvicorn==0.38.0 uvloop==0.22.1 wandb==0.23.1 watchfiles==1.1.1 wavedrom==2.0.3.post3 wcwidth==0.2.14 websockets==15.0.1 WeTextProcessing==1.0.4.1 x-transformers==2.11.23 xxhash==3.6.0 yarl==1.22.0 zhconv==1.4.3 zhon==2.1.1 zipp==3.23.0
|
安装模型
1 2 3 4
| mkdir -p ckpt
pip install -U modelscope modelscope download --model ZhipuAI/GLM-TTS --local_dir ckpt
|
启动webui
1
| python -m tools.gradio_app
|
成功之后会提示网页地址,应该是0.0.0.0:8048
使用方法类似CosyVoice2,不过只有Zero-shot text-to-speech generation模式,没有预训练音色。
由于GLM-TTS参数量较大(1.5B),生成速度较CosyVoice慢很多,不过主观感受较CosyVoice好一些。可以自行尝试选择。