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
本文《GPT-SoVITS文本转语音报错zipfile.BadZipFile: File is not a zip file》由爱思考吧 isres.com 分享,转载请注明出处。本文网址:https://www.isres.com/jingyan2/GPT-SoVITS.html
本站主要收集测评能够节省时间和提升效率的软件工具并分享使用与学习的过程和感受,任何情况下用户都需遵守所使用软件资源的相关协议。与《GPT-SoVITS文本转语音报错zipfile.BadZipFile: File is not a zip file》有关的本站文章及资源仅供个人学习交流使用,相关资源请下载后24小时内删除,请勿用于其它用途,因此产生的任何问题由您自行承担。