MOSS-TTSD本地化部署详细教程

MOSS-TTSD(text to spoken dialogue)是一个开源的中英双语口语对话合成模型,可以将包含两位说话人的对话脚本转换为自然、富有表现力的对话语音。MOSS-TTSD支持双说话人零样本音色克隆与长时间单段语音生成,非常适合播客,访谈,聊天等对话场景。附MOSS-TTSD的github地址

一、为什么需要这份教程?

官方文档的部署教程很简单:

conda create -n moss_ttsd python=3.10 -y && conda activate moss_ttsd
pip install -r requirements.txt
pip install flash-attn

然后没了,但我相信你要安装这三行命令去跑这个模型,99%的人都跑不通的。因为这里面有几个非常难装的依赖,我就是卡在这上面了大半个下午,最终才解决全部问题,顺利的跑通了这个项目。
本教程比较傻瓜式,即便你没有任何基础,跟着教程走也能顺利的跑通。

二、环境准备

1. 操作系统

  • Linux 用户:Ubuntu 20.04 / 22.04(推荐)
  • Windows 用户:启用 WSL2(Windows Subsystem for Linux)

强烈建议使用win的子系统来跑这个项目,虽然官方支持Win系统直装,但有几个依赖不支持win,不过社区有非官方解决方案。我是先用win直接跑的,遇到了几个费大劲才解决的问题,后转WSL跑通的。后面我也会贴出win系统上直接跑所遇到的问题,仅供大家排除问题。

举个例子:
官方教程的第一句指令:

conda create -n moss_ttsd python=3.10 -y && conda activate moss_ttsd

如果你用Win系统的powershell来运行,此时就会遇到第一个问题:

运行conda create -n moss_ttsd python=3.10 -y && conda activate moss_ttsd 报错 所在位置 行:1 字符: 42
+ conda create -n moss_ttsd python=3.10 -y && conda activate moss_ttsd
+                                          ~~
标记“&&”不是此版本中的有效语句分隔符。
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : InvalidEndOfLine

在 PowerShell 中,&& 并不是默认支持的命令连接符(直到 PowerShell 7 才开始原生支持 && 和 ||)。如果你使用的是 Windows PowerShell 5.1(这是 Windows 默认附带的版本),那么它不识别 &&,因此会报错:

“标记‘&&’不是此版本中的 valid 语句分隔符”

解决方法也很简单,要么分开执行两个命令,要么换CMD来跑。

2. 环境配置

安装 WSL2(Ubuntu 22.04):

wsl --install -d Ubuntu-22.04

系统会自动:

  • 启用 WSL 功能
  • 安装 Ubuntu 22.04
  • 设置默认用户(按提示输入用户名和密码)

安装完成后最好是重启下系统,确保WSL和NVIDIA驱动协同工作。

重启后用管理员启动PowerShell,直接输入:

wsl

会自动进入Ubuntu系统下的cmd,然后执行以下命令:

# 更新包列表
sudo apt update && sudo apt upgrade -y

# 安装基础编译工具(必须!)
sudo apt install -y build-essential wget git vim libgl1 libglib2.0-0

安装Miniconda

win系统下载Miniconda就行,不用安装完整版的Anaconda,安装时务必勾选Add Anaconda to my PATH environment variable,省的再手动配置环境变量了。
Ubuntu子系统不用那么麻烦,直接调用以下命令就行:

# 下载 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 静默安装(不交互)
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3

# 初始化 conda(让 bash 能识别 conda 命令)
$HOME/miniconda3/bin/conda init bash

# 重新加载 shell 配置
source ~/.bashrc

最后验证:

conda --version
# 应输出:conda 24.x.x

再次运行命令:

conda create -n moss_ttsd python=3.10 -y && conda activate moss_ttsd

还是会报错:

conda create -n moss_ttsd python=3.10 -y

CondaToSNonInteractiveError: Terms of Service have not been accepted for the following channels. Please accept or remove them before proceeding:
    - https://repo.anaconda.com/pkgs/main
    - https://repo.anaconda.com/pkgs/r
    - https://repo.anaconda.com/pkgs/msys2

To accept these channels' Terms of Service, run the following commands:
    conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
    conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
    conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/msys2

For information on safely removing channels from your conda configuration,
please see the official documentation:

    https://www.anaconda.com/docs/tools/working-with-conda/channels

这是因为Conda 的新政策要求用户显式接受 Anaconda 官方频道(channels)的服务条款(Terms of Service),这是从 2024 年底开始强制执行的安全合规措施。
解决方法就是一键全部接受:

conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main --channel https://repo.anaconda.com/pkgs/r --channel https://repo.anaconda.com/pkgs/msys2

接下来重新执行

conda create -n moss_ttsd python=3.10 -y && conda activate moss_ttsd

会顺利创建moss_ttsd的虚拟环境。
最后激活虚拟环境:

conda activate moss_ttsd
# 升级 pip
pip install --upgrade pip

3.安装依赖requirements.txt

这个阶段出问题的可能性最大,官方教程需要安装requirements.txt中的全部依赖,先按照教程走:

git clone https://github.com/OpenMOSS/MOSS-TTSD.git
# 进入项目目录
cd MOSS-TTSD
# 安装其他依赖
pip install -r requirements.txt

如果你是用win系统直接跑,那么在这里会遇到一个问题:

ERROR: Cannot install -r requirements.txt (line 17) because these package versions have conflicting dependencies.

The conflict is caused by:
    liger-kernel 0.6.4 depends on triton>=2.3.1
    liger-kernel 0.6.3 depends on triton>=2.3.1
    liger-kernel 0.6.2 depends on triton>=2.3.1
    liger-kernel 0.6.1 depends on triton>=2.3.1
    liger-kernel 0.6.0 depends on triton>=2.3.1
    liger-kernel 0.5.10 depends on triton>=2.3.1
    liger-kernel 0.5.9 depends on triton>=2.3.1
    liger-kernel 0.5.8 depends on triton>=2.3.1
    liger-kernel 0.5.7 depends on triton>=2.3.1
    liger-kernel 0.5.6 depends on triton>=2.3.1
    liger-kernel 0.5.5 depends on triton>=2.3.1
    liger-kernel 0.5.4 depends on triton>=2.3.1
    liger-kernel 0.5.3 depends on triton>=2.3.1
    liger-kernel 0.5.2 depends on triton>=2.3.1
    liger-kernel 0.5.1 depends on triton>=2.3.1
    liger-kernel 0.5.0 depends on triton>=2.3.1
    liger-kernel 0.4.2 depends on triton>=2.3.1
    liger-kernel 0.4.1 depends on triton>=2.3.1
    liger-kernel 0.4.0 depends on triton>=2.3.1
    liger-kernel 0.3.1 depends on triton>=2.3.0
    liger-kernel 0.3.0 depends on triton>=2.3.0
    liger-kernel 0.2.1 depends on triton>=2.3.0
    liger-kernel 0.2.0 depends on triton>=2.3.0
    liger-kernel 0.1.1 depends on triton>=2.3.0
    liger-kernel 0.1.0 depends on triton>=2.3.0
    liger-kernel 0.0.1 depends on triton>=2.3.0
    liger-kernel 0.0.0 depends on triton>=2.3.0

Additionally, some packages in these conflicts have no matching distributions available for your environment:
    triton

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip to attempt to solve the dependency conflict

依赖中有一个 liger-kernel,但这个库依赖triton,但这个库官方不支持Win系统,所以想直接安装这个库没戏,好在有社区版本:

# 先按照triton-windows
pip install triton-windows


# 再跑一遍官方教程
pip install -r requirements.txt

4.安装依赖flash-attn

按照官方教程执行最后一项:

pip install flash-attn

这个指令会报很多错误,都是相关依赖没有安装的原因。

首先第一个问题大概率是这个:

ModuleNotFoundError: No module named 'torch'

因为是新建的wsl子系统,没有torch相关依赖很正常。

flash-attn 是一个 基于 CUDA 的高性能注意力机制库,它:

  • 必须在 PyTorch 已安装 的环境中才能编译
  • 构建过程会调用 import torch 来检测 CUDA 版本、架构等
  • 如果 torch 不存在,就会报你现在看到的错误

安装torch并不难,版本很多,只要能对应上N卡的CUDA版本就行,但torch的版本关系着后续flash-attn的安装。

首先检测下CUDA支持的版本:

nvidia-smi

这个指令会输出一堆信息,主要看CUDA支持版本号就行,CUDA支持的版本号与N卡驱动版本有关,比如:

 nvidia-smi
Thu Jan  8 16:55:57 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 581.29                 Driver Version: 581.29         CUDA Version: 13.0     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                  Driver-Model | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 3080      WDDM  |   00000000:01:00.0  On |                  N/A |
|  0%   56C    P5             36W /  345W |    1516MiB /  10240MiB |      2%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A            6096    C+G   ...Chrome\Application\chrome.exe      N/A      |
|    0   N/A  N/A            8328    C+G   ...em32\ApplicationFrameHost.exe      N/A      |
|    0   N/A  N/A            8584    C+G   ...lpaper_engine\wallpaper64.exe      N/A      |
|    0   N/A  N/A           10812    C+G   C:\Windows\explorer.exe               N/A      |
|    0   N/A  N/A           11596    C+G   ..._cw5n1h2txyewy\SearchHost.exe      N/A      |
|    0   N/A  N/A           11604    C+G   ...y\StartMenuExperienceHost.exe      N/A      |
|    0   N/A  N/A           13244    C+G   ...ge-WebView\msedgewebview2.exe      N/A      |
|    0   N/A  N/A           17608    C+G   ...5n1h2txyewy\TextInputHost.exe      N/A      |
|    0   N/A  N/A           19324    C+G   ...__kzh8wxbdkxb8p\DCv2\DCv2.exe      N/A      |
|    0   N/A  N/A           19524    C+G   ...yb3d8bbwe\WindowsTerminal.exe      N/A      |
|    0   N/A  N/A           20268    C+G   ...yb3d8bbwe\Notepad\Notepad.exe      N/A      |
|    0   N/A  N/A           20788    C+G   ...Chrome\Application\chrome.exe      N/A      |
|    0   N/A  N/A           21716    C+G   ...acted\runtime\WeChatAppEx.exe      N/A      |
|    0   N/A  N/A           21824    C+G   D:\App\Feishu\app\Feishu.exe          N/A      |
|    0   N/A  N/A           22328    C+G   ...ntrolPanel\SystemSettings.exe      N/A      |
|    0   N/A  N/A           24636    C+G   ...indows\System32\ShellHost.exe      N/A      |
|    0   N/A  N/A           24956    C+G   ...11.28973.206\QQPCExternal.exe      N/A      |
|    0   N/A  N/A           25560    C+G   ...acted\runtime\WeChatAppEx.exe      N/A      |
|    0   N/A  N/A           30344    C+G   ...11.28973.206\QQPCExternal.exe      N/A      |
|    0   N/A  N/A           33100    C+G   ...yb3d8bbwe\Microsoft.Notes.exe      N/A      |
|    0   N/A  N/A           33632    C+G   ...xyewy\ShellExperienceHost.exe      N/A      |
+-----------------------------------------------------------------------------------------+

可以看到我的显卡驱动版本最高支持CUDA是13.0,我之前安装的CUDA版本是12.1,也就是这个版本让我浪费了很多时间。
我问通义安装哪个版本最合适,通义建议安装12.1版本,理由是性能好,兼容性强,社区支持最广,但通义也喜欢胡说八道,cu121版本对应的flash-attn已经很旧了,基本找不到合适的预编译版本。
如果你依然不信邪,偏要安装12.1版本的CUDA,那么下一步安装torch的版本应该就在2.4-2.5.1版本之间,直接调用:

# 安装 PyTorch + torchvision + torchaudio(CUDA 12.1 版本)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

安装完验证:

python -c "import torch; print(torch.__version__); print('CUDA available:', torch.cuda.is_available())"

输出应该是:

2.5.1+cu121
CUDA available: True

接下来安装flash-attn

pip install flash-attn --no-build-isolation -i https://pypi.tuna.tsinghua.edu.cn/simple

如果你是win系统直接跑,那到这一步就不用再费劲了,肯定过不了编译的。直接调用pip来安装flash-attn是下载的2.8.3版本,但2.8.3版本没有针对2.5.1+cu121版本支持的预编译wheel,到这就不要在问AI了,AI会胡编乱造,给你一堆没用的信息,或者一堆错误的wheel地址下载不下来。

重点来了,重点来了,重点来了

直接去flash-attn的github地址去找已经预编译好的wheel版本,然后你就会发现,没有2.5.1+cu121对应的wheel,从最新的2.8.3一直往下找,找到最后也没有这个组合能支持的版本,所以最后的版本就是升级你的CUDA版本,然后再升级torch版本,与github上现有的版本针对性的升级。
比如我找的wheel是:lash_attn-2.8.3+cu128torch2.9.0cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
那么就要把CU升级到12.8,torch升级到2.9.0。

执行命令:

#先卸载已有的版本
pip uninstall -y torch torchvision torchaudio
#安装128对应的相关版本
pip install torch==2.9.1 torchvision==0.24.1 torchaudio==2.9.0 --index-url https://download.pytorch.org/whl/cu128

经过一段时间下载安装后,最后验证:

python -c "import torch; print(torch.__version__)"
# 应该输出为:2.9.1+cu128

细心的朋友会发现为什么安装的torch是2.9.1而不是2.9.0,不信邪的朋友自己改下版本试试就行了,铁报错的,因为针对cu128,torch对应的版本是2.9.1,你去安装2.9.0肯定出错。好在torch是像下兼容的,不碍事。

接下来也到最后一步,下载预编译的flash-attn,强烈建议别用命令行下载,用迅雷或者什么下载工具都行,下载完直接复制到MOSS-TTSD根目录,然后执行安装:

pip install flash_attn-2.8.3+cu128torch2.9.0cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

至此,官方的3个命令全部执行完毕,MOSS-TTSD的本地化部署已经走完了80%,剩下的20%就是来运行这个后台服务,实现本地推理能力。

5.本地推理

根据官方文档,还需要下载一个XY-Tokenizer 权重

mkdir -p XY_Tokenizer/weights
huggingface-cli download fnlp/MOSS_TTSD_tokenizer MOSS_TTSD_tokenizer --local-dir ./XY_Tokenizer/weights/

强烈建议直接去huggingface用工具下载,否则太慢了,这个网站得科学上网,或者用国内代理:https://hf-mirror.com
这一步你无论用不用国内代理,我都建议你先把代理配置上,因为后面运行py程序会从huggingface中下载一堆配置和关键模型。

# 设置镜像
export HF_ENDPOINT=https://hf-mirror.com

下载完后放到XY_Tokenizer/weights目录。

下一步可以执行web页面先看看效果了:

(moss_ttsd) zdu1204@duning-desktop:~/MOSS-TTSD$ python gradio_demo.py
Loaded 2 role examples and 1 single examples from ['examples/examples.jsonl', 'examples/examples_single_reference.jsonl']
/home/zdu1204/MOSS-TTSD/gradio_demo.py:336: UserWarning: The parameters have been moved from the Blocks constructor to the launch() method in Gradio 6.0: theme. Please pass these parameters to launch() instead.
  with gr.Blocks(
* Running on local URL:  http://127.0.0.1:7860
* To create a public link, set `share=True` in `launch()`.

浏览器直接打开http://127.0.0.1:7860,然后你就会看到

借用下面的例子可以尝试生成音频,首次使用点击生成音频会直接从huggingface上拉代码,包括下载模型,此时上面配置的镜像就起作用了,模型大概4G左右,慢慢下载吧。
经过漫长的等待,模型下载完了,py会继续执行,不过后面会报错:

Error loading audio data: TorchCodec is required for load_with_torchcodec.
Please install torchcodec to use this function.

需要安装音频后端:torchcodec,这个地方需要注意,只需要安装CPU-only版本的torchcodec即可,因为MOSS-TTSD不需要视频解码,不要安装GPU版本torchcodec,不然又要有一堆问题需要解决。

# 安装 CPU-only 版本(无 NPP / CUDA 依赖)
pip install torchcodec --index-url https://download.pytorch.org/whl/cpu
# 确保 FFmpeg 已安装(torchcodec 需要它来解码音频)
conda install -c conda-forge "ffmpeg<8"

不过这里有一个疑问,因为我用的CPU版本的torchcodec,没有用GPU版本的torchcodec,后面进行音频合成会不会有什么影响呢?比如用不了N卡加速导致合成速度慢呢?

总结

合成的音频效果还是挺不错的,不过只支持对话音频生成,像一个纯Txt文本单人音频生成是不行的,不过效果也已经很棒了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容