GPT-SoVITS文本转语音报错zipfile.BadZipFile: File is not a zip file

GPT-SoVITS zipfile.BadZipFile这样报错的误导性蛮大,一定要结合查看更多错误信息。否则容易被带偏,解决方法其实很简单,但对环境不熟悉的朋友可即使遗漏细节,导致快成功了却始终没成功。

在进行GPTSoVits文本转语音推理的时候,出现了错误zipfile.BadZipFile: File is not a zip file。经过排查发现,只有在中英文或汉字里有字母时才会报错。

| File "/root/miniconda3/envs/GPTSoVits/lib/python3.9/zipfile.py", line 1335, in _RealGetContents
| raise BadZipFile("File is not a zip file")
| zipfile.BadZipFile: File is not a zip file

如果仅仅看最后几行,容易掉坑。多看一些错误信息能发现,大量调用NLTK的信息提示。


| nltk.data.find('corpora/cmudict.zip')
| File "/root/miniconda3/envs/GPTSoVits/lib/python3.9/site-packages/nltk/data.py", line 538, in find
| return ZipFilePathPointer(p, zipentry)
| File "/root/miniconda3/envs/GPTSoVits/lib/python3.9/site-packages/nltk/data.py", line 391, in init
| zipfile = OpenOnDemandZipFile(os.path.abspath(zipfile))
| File "/root/miniconda3/envs/GPTSoVits/lib/python3.9/site-packages/nltk/data.py", line 1020, in init
| zipfile.ZipFile.init(self, filename)
这个错误的根源找到了,确实是配音文本中包含英文字母时,会触发英文处理模块(g2p_en),进而需要加载 NLTK 的库。


但是这个NLTK 的安装却是麻烦的,正常的网络根本无法安装成功,即使用一些加速方法也不一定能成功。

最终还是用离线安装比较好,离线包有很多人在网上分享。

通过print(nltk.data.path)打印的路径中,任意找一个目录。


(GPTSoVits) root@localhost:~# python
Python 3.9.19 (main, May  6 2024, 19:43:03) 
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import nltk
>>> 
>>> print(nltk.data.path)
>>> print(nltk.data.path)
['/root/nltk_data', '/root/miniconda3/envs/GPTSoVits/nltk_data', '/root/miniconda3/envs/GPTSoVits/share/nltk_data', '/root/miniconda3/envs/GPTSoVits/lib/nltk_data', '/usr/share/nltk_data', '/usr/local/share/nltk_data', '/usr/lib/nltk_data', '/usr/local/lib/nltk_data']

笔者选择在/root/nltk_data下


root@localhost:~/nltk_data# ll
total 16
drwxr-xr-x  4 root root 4096 Nov  7 17:56 ./
drwx------ 10 root root 4096 Nov  7 17:59 ../
drwxr-xr-x  3 root root 4096 Nov  7 17:57 corpora/
drwxr-xr-x  4 root root 4096 Nov  7 18:24 taggers/
root@localhost:~/nltk_data# ll corpora/
total 888
drwxr-xr-x 3 root root   4096 Nov  7 17:57 ./
drwxr-xr-x 4 root root   4096 Nov  7 17:56 ../
drwxr-xr-x 2 root root   4096 Sep 30  2010 cmudict/
-rw-r--r-- 1 root root 896069 Jan  9  2024 cmudict.zip
root@localhost:~/nltk_data# ll taggers/
total 3988
drwxr-xr-x 4 root root    4096 Nov  7 18:24 ./
drwxr-xr-x 4 root root    4096 Nov  7 17:56 ../
drwxr-xr-x 2 root root    4096 Nov  7 17:55 averaged_perceptron_tagger/
drwxr-xr-x 2 root root    4096 Jul  5 23:58 averaged_perceptron_tagger_eng/
-rw-r--r-- 1 root root 1539115 Jul 29 18:34 averaged_perceptron_tagger_eng.zip
-rw-r--r-- 1 root root 2526731 Jul 29 18:34 averaged_perceptron_tagger.zip

特别注意:zip压缩包和文件夹要一起存在,如果删除zip就会出发python重新下载,陷入网络问题中。

而整个nltk_data的数据集压缩包有近700M,可从github下载,笔都搬运了一份到网盘。

全部库在 \nltk_data-gh-pages\nltk_data-gh-pages\packages下。

【github】https://github.com/nltk/nltk_data/tree/gh-pages

【搬运】


链接:https://pan.quark.cn/s/313590f75b57
提取码:2syr



相关推荐

猜你喜欢

解决cloudflare cdn启用https回源协议

解决cloudflare cdn启用https回源协议

这平时使用阿里、百度、腾讯的CDN,都有明显的一个选项设置HTTP或HTTPS回源协议。 但初次了解cloudflare的时候,cloudflare的操作逻辑习惯与方式明显与以前不同。 cloudf...

u盘安装Centos7报starting timeout scripts错误

这个问题出现两次,有必要记录一下了。 就是需要在显示 安装界面 。 install centos 和 test mdeia 的界面上。 按一下tab,修改一个路径 按网上说的,就是WIN10刻录才这样...

解决向vim粘贴代码出现汉字乱码的问题

解决向vim粘贴代码出现汉字乱码的问题

方法分为永久解决方法和临时解决方法 1、临时解决方法 检查:在vim编辑器上 :set enc #得到 encoding=latin1 处理:在vim编辑器上 :set encoding=utf-8...