[index-tts]ImportError: DLL load failed while importing _kaldifst: 动态链接库(DLL)初始化例程失败。

2025-10-28 201 views
8

回答

0

模型加载失败: 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 from wetext.utils import ( File "H:\tts\dist\111_internal\wetext\utils.py", line 18, in from wetext.constants import FSTS File "H:\tts\dist\111_internal\wetext\constants.py", line 17, in from kaldifst import TextNormalizer as normalizer File "H:\tts\dist\111_internal\kaldifst\init__.py", line 1, in from _kaldifst import ( ImportError: DLL load failed while importing _kaldifst: 动态链接库(DLL)初始化例程失败。

2

安装 [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

4

解决这个问题: 虚拟环境: 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

0

直接用别人搞好的一键启动安装包即可

0

用cosyvoice时遇到这个问题 直接python命令行却不会导入wetext有问题 解决办法时把from wetext import Normalizer as ZhNormalizer提前到所有py代码之前 猜测是因为前面导入的dll的版本和wetext的版本冲突了,所以提前导入wetext可以解决