[index-tts]ImportError: DLL load failed while importing _kaldifst: 动态链接库(DLL)初始化例程失败。
回答
模型加载失败: DLL load failed while importing _kaldifst: 动态链接库(DLL)初始化例程失败。
Traceback (most recent call last):
File "H:\tts\dist\111_internal\pythonevi.py", line 1366, in run
File "H:\tts\dist\111_internal\pythonevi.py", line 906, in init
File "H:\tts\dist\111_internal\indextts\utils\front.py", line 95, in load
from wetext import Normalizer
File "H:\tts\dist\111_internal\wetext__init.py", line 15, in
要安装 [Visual C++ Redistributable] https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170
安装 [Visual C++ Redistributable] 之后依旧无效
(myenv) H:\tts>python ceshi1.py kaldifst 包路径: H:\tts\myenv\lib\site-packages\kaldifst
包内文件: ['bin', 'iterator.py', 'lattice_to_nbest.py', 'lib', 'table_types.py', 'utils', 'init.py', 'pycache']
尝试导入 _kaldifst: ✗ _kaldifst 导入失败: DLL load failed while importing _kaldifst: 找不到指定的模块。
尝试导入 kaldifst: ✗ kaldifst 导入失败: DLL load failed while importing _kaldifst: 找不到指定的模块。
Python 版本: 3.10.0 (tags/v3.10.0:b494f59, Oct 4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] Python 可执行文件: H:\tts\myenv\Scripts\python.exe 平台: win32 架构: AMD64 处理器: Intel64 Family 6 Model 183 Stepping 1, GenuineIntel
(myenv) H:\tts>python ceshi1.py lib 目录内容: ['kaldifst_fst.dll', 'kaldifst_fst.lib'] bin 目录内容: ['kaldifst_core.dll', 'kaldifst_core.lib', 'kaldifst_fst.dll', 'kaldifst_fst.lib', 'kaldifst_fstscript.dll', 'kaldifst_fstscript.lib'] 找到库文件: H:\tts\myenv\lib\site-packages\kaldifst\bin\kaldifst_core.dll 找到库文件: H:\tts\myenv\lib\site-packages\kaldifst\bin\kaldifst_fst.dll 找到库文件: H:\tts\myenv\lib\site-packages\kaldifst\bin\kaldifst_fstscript.dll 找到库文件: H:\tts\myenv\lib\site-packages\kaldifst\lib\kaldifst_fst.dll
解决这个问题: 虚拟环境: import os import sys
=== 添加 DLL 路径设置代码 ===def setup_kaldifst_dll_paths(): """设置 kaldifst 的 DLL 搜索路径""" try: import site site_packages_list = site.getsitepackages()
site_packages = None
for path in site_packages_list:
if 'site-packages' in path and os.path.exists(path):
site_packages = path
break
if not site_packages:
site_packages = os.path.join(sys.prefix, "Lib", "site-packages")
dll_paths = [
site_packages,
os.path.join(site_packages, "kaldifst", "bin"),
os.path.join(site_packages, "kaldifst", "lib")
]
for path in dll_paths:
if os.path.exists(path):
try:
os.add_dll_directory(path)
except (AttributeError, OSError):
current_path = os.environ.get('PATH', '')
if path not in current_path:
os.environ['PATH'] = path + ';' + current_path
except Exception as e:
print(f"Warning: 设置 kaldifst DLL 路径失败: {e}")
在所有其他导入之前调用
setup_kaldifst_dll_paths()
import hashlib
直接用别人搞好的一键启动安装包即可
用cosyvoice时遇到这个问题 直接python命令行却不会导入wetext有问题 解决办法时把from wetext import Normalizer as ZhNormalizer提前到所有py代码之前 猜测是因为前面导入的dll的版本和wetext的版本冲突了,所以提前导入wetext可以解决