news 2026/7/19 9:29:35

【经验】ModelScope SamBERT-HiFiGAN TTS 在 Windows Python 3.12 上的安装踩坑全记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【经验】ModelScope SamBERT-HiFiGAN TTS 在 Windows Python 3.12 上的安装踩坑全记录

ModelScope SamBERT-HiFiGAN TTS 在 Windows Python 3.12 上的安装踩坑全记录

前言

最近想用 ModelScope(魔搭社区)的sambert-hifigan模型做一个中文文本转语音工具,于是在 Windows 上开启了折腾之旅。原以为pip install modelscope就万事大吉,结果踩了一堆坑,记录在此供大家参考避坑。

环境:Windows 10/11, Python 3.12, pip 最新版


1. 背景介绍

ModelScope 提供了多种 TTS 模型,其中damo/speech_sambert-hifigan_tts_zh-cn_16k是一款支持多种发音人(知甜、知言、知哲、知蓓)的中文语音合成模型,底层依赖阿里的KAN-TTS项目。

安装命令很简单:

pipinstallmodelscope

但当你尝试加载模型时,真正的挑战才开始。


2. 踩坑全记录

坑一:kantts缺失

报错信息:

ModuleNotFoundError: No module named 'kantts'

kantts是 KAN-TTS 项目中的核心包,PyPI 上存在一个名称为kantts的假包(大小仅 1.3KB,纯占位),安装它毫无意义。

解决方案:从 GitHub 源码安装真正的 KAN-TTS

# 先卸载假包pip uninstall kantts-y# 下载 KAN-TTS 源码pip download https://github.com/alibaba-damo-academy/KAN-TTS/archive/refs/heads/master.zip

踩坑点:KAN-TTS 的setup.py中写死了python_requires=">=3.7.0, <3.9",Python 3.12 直接安装会报版本不兼容。

解决:解压 zip 后修改setup.py第 29 行:

# 修改前python_requires=">=3.7.0, <3.9",# 修改后python_requires=">=3.7.0",

然后本地安装:

pipinstall.\KAN-TTS-main --no-deps

注意:--no-deps参数很重要,避免自动安装不兼容的依赖版本。


坑二:kantts.models.hifigan目录缺失

报错信息:

ModuleNotFoundError: No module named 'kantts.models.hifigan'

pip installKAN-TTS 时,由于包结构问题,kantts/models/hifigan/子目录没有被包含进去。

解决方案:手动从源码复制

xcopy /E /I /Y KAN-TTS-main\kantts\models\hifigan ^ %PYTHON_PATH%\Lib\site-packages\kantts\models\hifigan

坑三:kantts.preprocess目录缺失

报错信息:

FileNotFoundError: .../kantts/preprocess/...

同理,preprocess目录(包含PhoneSet.xml等 50+ 配置文件)也被遗漏了。

解决方案:

xcopy /E /I /Y KAN-TTS-main\kantts\preprocess ^ %PYTHON_PATH%\Lib\site-packages\kantts\preprocess

教训:对于非标准 pip 包,直接pip install .可能丢文件,务必核对MANIFEST.in或手动检查包完整性。


坑四:SciPykaiser函数 API 变更

报错信息:

ImportError: cannot import name 'kaiser' from 'scipy.signal'

Python 3.12 下安装的 scipy 1.18 中,kaiser窗函数从scipy.signal移到了scipy.signal.windows,而 KAN-TTS 源码仍使用旧 API。

解决方案:修改pqmf.py

找到%PYTHON_PATH%\Lib\site-packages\kantts\models\pqmf.py,修改第 1 行:

# 修改前fromscipy.signalimportkaiser# 修改后fromscipy.signal.windowsimportkaiser

坑五:ttsfrd—— 最大的拦路虎

报错信息:

ModuleNotFoundError: No module named 'ttsfrd'

ttsfrd(TTS Frontend)是阿里 KAN-TTS 的中文文本前端处理 C++ 扩展库,仅支持 Linux,Windows 下没有任何可用的 whl 包或源码编译方案。

同时,SambertHifigan__init__方法中直接调用了ttsfrd.TtsFrontendEngine进行初始化和语言类型设置,不做处理根本无法通过模型加载:

# modelscope/models/audio/tts/sambert_hifi.py 中的初始化逻辑self.tfs=ttsfrd.TtsFrontendEngine()self.tfs.initialize()self.tfs.set_lang_type('pinyinvg')

解决方案:编写 stub 模块

%PYTHON_PATH%\Lib\site-packages\ttsfrd\下创建__init__.py

""" ttsfrd stub for Windows TtsFrontendEngine is a Linux-only C++ extension. This stub allows the ModelScope TTS pipeline to initialize on Windows, but actual Chinese text-to-phoneme conversion will not work. """importlogging _log=logging.getLogger(__name__)_log.warning("ttsfrd stub loaded - Chinese text frontend is NOT available on Windows")classTtsFrontendEngine:"""Stub implementation of Linux-only TtsFrontendEngine."""def__init__(self):self._initialized=Falseself._lang=Nonedefinitialize(self):self._initialized=True_log.info("TtsFrontendEngine.initialize() stub called")returnTruedefset_lang_type(self,lang_type='pinyinvg'):self._lang=lang_type _log.info(f"TtsFrontendEngine.set_lang_type('{lang_type}') stub called")returnTruedeftext_to_mel(self,text):_log.warning("text_to_mel() is not available in Windows stub")returnNonedefcompute_mel_style_embedding(self,text):_log.warning("compute_mel_style_embedding() is not available in Windows stub")returnNone

坑六:依赖链长,版本兼容性差

整个依赖关系链如下:

modelscope → sambert_hifi → kantts → ttsfrd (Linux only) → kantts.models → hifigan (需手动复制) → kantts.preprocess (需手动复制) → scipy → kaiser (API 已变更)

同时还需要安装的第三方依赖:

numpy, addict, datasets, scipy, simplejson, sortedcontainers, matplotlib

建议使用批处理脚本一键安装所有依赖。


3. 最终效果

完成以上全部步骤后,模型可以成功加载:

[ModelScope] 加载模型 damo/speech_sambert-hifigan_tts_zh-cn_16k ... [ModelScope] 合成中: 你好,这是一个语音合成测试。 [ModelScope] 成功!

注意:由于ttsfrd在 Windows 上只是 stub,中文文本到音素的转换并未实际执行,生成的音频可能是静音或仅含文件头。如需在 Windows 上实现真正可用的语音合成,需要引入纯 Python 的中文文本前端(如pypinyin+g2p等)来替代ttsfrd的功能。


4. 总结

#问题解决方式
1PyPI 上kantts是假包从 GitHub 源码安装 KAN-TTS
2KAN-TTS 限制 Python < 3.9修改 setup.py 放宽版本限制
3hifigan 目录 pip 安装遗漏手动从源码复制
4preprocess 目录 pip 安装遗漏手动从源码复制
5scipy.signal.kaiser API 变更修改为 scipy.signal.windows.kaiser
6ttsfrd 仅支持 Linux编写 Windows stub 模块

几条经验:

  1. PyPI 上名称相同的包不一定是你要的—— 先pip show确认包内容再详细排查。
  2. GitHub 源码安装要核对完整性—— 非标准包容易丢子目录,建议检查MANIFEST.in或直接比较目录。
  3. 跨平台 Python 项目要关注 C 扩展——ttsfrd这种 Linux 专属库在 Windows 上无解,只能 stub 或用纯 Python 替代方案。
  4. Python 版本限制可以适当放宽—— 很多仓库只是"没测试过"高版本而非真的不兼容,修改setup.py后大多能跑。

附录:一键安装脚本参考

@echo off echo ============================================ echo ModelScope TTS Windows 安装脚本 echo ============================================ REM 1. 安装基础依赖 pip install numpy addict datasets scipy simplejson sortedcontainers matplotlib REM 2. 安装 modelscope pip install modelscope REM 3. 下载并安装 KAN-TTS REM (需先手动下载、解压,修改 setup.py 中的 python_requires) pip install KAN-TTS-main --no-deps REM 4. 复制遗漏的目录 xcopy /E /I /Y KAN-TTS-main\kantts\models\hifigan ^ %PYTHON_PATH%\Lib\site-packages\kantts\models\hifigan xcopy /E /I /Y KAN-TTS-main\kantts\preprocess ^ %PYTHON_PATH%\Lib\site-packages\kantts\preprocess REM 5. 修复 scipy 兼容性 REM 修改 kantts/models/pqmf.py: from scipy.signal.windows import kaiser REM 6. 创建 ttsfrd stub REM 详见上文代码 echo [完成] 安装结束

声明:本文为个人安装经验分享,环境不同可能遇到不同问题。建议将 ModelScope TTS 部署在 Linux 服务器上以获得最佳体验。


如果这篇文章对你有帮助,欢迎点赞收藏~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 9:28:42

Unity Shader多Pass机制详解:从原理到实战应用

1. 项目概述&#xff1a;为什么需要多个Pass&#xff1f; 在Unity引擎里写Shader&#xff0c;尤其是想实现一些稍微复杂点的视觉效果时&#xff0c;你几乎一定会遇到一个结构&#xff1a;一个 SubShader 里包含了多个 Pass 。对于刚接触Shader编程的朋友来说&#xff0c;这…

作者头像 李华
网站建设 2026/7/19 9:25:16

uni-app与Android原生交互的3种实现方案

1. 混合开发背景与核心需求 在移动应用开发领域&#xff0c;混合开发已经成为平衡开发效率与性能体验的主流方案。uni-app作为基于Vue.js的跨平台框架&#xff0c;允许开发者使用同一套代码构建iOS、Android以及各种小程序应用。但当我们需要访问设备原生功能&#xff08;如蓝牙…

作者头像 李华
网站建设 2026/7/19 9:23:55

使用 Chainlit 调用 TextGen API + 本地 LLM 实现 RAG Chatbot 应用

1. 引言 随着大语言模型&#xff08;LLM&#xff09;的快速发展&#xff0c;检索增强生成&#xff08;RAG&#xff09;已成为构建知识密集型应用的主流架构。然而&#xff0c;在实际部署中&#xff0c;我们常常面临两个核心挑战&#xff1a;如何快速构建一个交互式的演示界面&…

作者头像 李华
网站建设 2026/7/19 9:22:16

2014年Android开发环境搭建全指南

1. 项目背景与目标 2014年8月&#xff0c;Android开发环境正处于从Eclipse ADT向Android Studio过渡的关键时期。当时Android Studio刚刚结束预览版阶段&#xff0c;Google官方开始大力推荐开发者迁移到这个全新的IDE平台。这个时间节点搭建Android开发环境&#xff0c;既需要考…

作者头像 李华