首页 > Python资料 博客日记
chattts本地化python部署及采坑记录(2024年亲测可用)
2024-11-04 11:00:05Python资料围观37次
ChatTTS 是一个文本转语音的开源项目,短短2周左右的时间,在 GitHub 上已经斩获了 24.4k 的 Star!
开源地址:https://github.com/2noise/ChatTTS
ChatTTS模型:https://huggingface.co/2Noise/ChatTTS
ChatTTS在线网页Demo:https://huggingface.co/spaces/lenML/ChatTTS-Forge
为了进行使用,本人也是参考了许多的文章,包括但不限于:
ChatTTS 开源文本转语音模型本地部署、API使用和搭建WebUI界面(建议收藏)-CSDN博客
PyTorch中torch、torchvision、torchaudio、torchtext版本对应关系_torch2.0.1对应的torchvision-CSDN博客
不知道是不是因为版本不一致的原因,这些文章都说了引用模型是load_models,但是我下载的版本这样引用会报错说不存在load_models这个方法。经过研读ChatTTS下的core.py,这个方法已经变成了load方法。接下来就把安装和可能踩坑的步骤都讲一遍。
一、代码及模型下载
1.直接使用git clone下载代码和依赖
git clone https://github.com/2noise/ChatTTS
git clone https://huggingface.co/2Noise/ChatTTS
我是把代码和模型分别放在两个路径,并不影响使用。
2.安装依赖
在ChatTTS项目的根目录下执行以下命令
pip install -r requirements.txt
直接安装依赖可能会有一些冲突,需要自己修改一下。这里特别参考了
PyTorch中torch、torchvision、torchaudio、torchtext版本对应关系_torch2.0.1对应的torchvision-CSDN博客
因为我下载的torch 版本是2.2.2,根据这篇文章我调整了torchvision和torchaudio的配置,修改前后变化如下:
torchvision 0.19.0——>0.17.2
torchaudio 2.4.0——>2.2.2
具体执行的代码为
pip uninstall torchvision
pip install torchvision==0.17.2
pip uninstall torchaudio
pip install torchaudio==2.2.2
二、测试代码编写
在ChatTTS下编写代码,我是直接在根目录下新增了一个test.py。
直接上一下核心代码
import torch
import torchaudio
import ChatTTS
model_dir = '替换成自己的模型地址'
chat = ChatTTS.Chat()
chat.load(source='local', custom_path=model_dir,compile=False)
texts = '测试文字'
wavs = chat.infer(texts)
torchaudio.save("保存文件路径", torch.from_numpy(wavs), 24000)
就是这段代码,我研究了很久!
首先是教程说到的引用模型,很多教程都写了chat.load_models,这时候可以去看看ChatTTS下的ChatTTS下的代码,这里就是核心代码,在core.py的第124行的源码如下
def load(
self,
source: Literal["huggingface", "local", "custom"] = "local",
force_redownload=False,
compile: bool = True,
custom_path: Optional[torch.serialization.FILE_LIKE] = None,
device: Optional[torch.device] = None,
coef: Optional[torch.Tensor] = None,
use_flash_attn=False,
) -> bool:
# 具体执行代码
可以看到加载模型的方法已经变成了load
source的选项有3个,因为想引用本地的模型所以写了local
compile的默认值为True,因为是在win平台,pytorch的dynamo图模式,不支持compile,所以将compile参数设置为False
这里的本地文件路径应该用custom_path来指定。
如果正常的话运行这段代码就会在项目下生成一段转换后的音频。我还遇到了许多报错!
三、报错总结
报错1:check models in custom path %s failed
程序提示找不到模型,很疑惑明明路径写对了,于是去看了是dl.py中的check_all_assets方法报错,具体就是它去你的模型下找不到它规定的模型,在dl.py的第46行有以下代码
def check_all_assets(base_dir: Path, sha256_map: Dict[str, str], update=False) -> bool:
logger.get_logger().info("checking assets...")
current_dir = base_dir / "asset"
names = [
"Decoder.pt",
"DVAE_full.pt",
"GPT.pt",
"spk_stat.pt",
"tokenizer.pt",
"Vocos.pt",
]
我发现这里的DVAE_full.pt我本地的是DVAE.pt,我直接把DVAE.pt给复制改名了为DVAE_full.pt。
报错:Error(s) in loading state_dict() for Model
经过百度是加载模型参数出错了,所以去掉了它的加载,在core.py搜索以下代码load_state_dict,或者直接根据报错双击报错代码定位,在后面加上strict=False,去掉严格校验。
报错:os.rename报错:[WinError 2] 系统找不到指定的文件
这个我忘了怎么解决的了!
报错:torchaudio 加载wav报错 Couldn‘t find appropriate backend to handle uri *** and format None
代码执行到保存文件的时候报错了,经过百度是缺了个音频库依赖,于是下载完重启项目就可以了
pip install pysoundfile
报错:ValueError: Expected 2D array, got 1D array instead
代码执行到保存文件的时候报错了,这个错误说的是是把1维数组传了给2维数组,我发现是save的时候torch.from_numpy(wavs[0]),假如这里取了第一个元素,这就是1维度数组,所以把[0]去掉就可以了。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj