CNChTu / FCPE

MIT License
81 stars 16 forks source link

torchaudio in fairseq got crashed if this lib is imported first #15

Open fumiama opened 2 weeks ago

fumiama commented 2 weeks ago

If import this lib first like

from torchfcpe import spawn_bundled_infer_model

then use

from fairseq import checkpoint_utils # fairseq version 0.12.3, torchaudio version 2.1.2

The torchaudio in fairseq will got crash, here's the log

INFO:faiss.loader:Loading faiss with AVX2 support.
INFO:faiss.loader:Successfully loaded faiss with AVX2 support.
DEBUG:torchaudio._extension.utils:Attempting to load FFmpeg version 6.
DEBUG:torchaudio._extension.utils:Failed to load FFmpeg 6 extension.
Traceback (most recent call last):
  File "...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 128, in _find_ffmpeg_extension
    return _find_versionsed_ffmpeg_extension(ffmpeg_ver)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 115, in _find_versionsed_ffmpeg_extension
    _load_lib(library)
  File "...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 64, in _load_lib
    torch.ops.load_library(path)
  File "C:\...\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\_ops.py", line 852, in load_library
    ctypes.CDLL(path)
  File "C:\...\AppData\Local\Programs\Python\Python311\Lib\ctypes\__init__.py", line 376, in __init__
    self._handle = _dlopen(self._name, mode)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: Could not find module 'C:\...\.venv\Lib\site-packages\torchaudio\lib\libtorchaudio_ffmpeg6.pyd' (or one of its dependencies). Try using the full path with constructor syntax.
DEBUG:torchaudio._extension.utils:Attempting to load FFmpeg version 5.
DEBUG:torchaudio._extension.utils:Failed to load FFmpeg 5 extension.
Traceback (most recent call last):
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 128, in _find_ffmpeg_extension
    return _find_versionsed_ffmpeg_extension(ffmpeg_ver)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 113, in _find_versionsed_ffmpeg_extension
    _try_access_avutil(ffmpeg_ver)
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 89, in _try_access_avutil
    torchaudio.lib._torchaudio.find_avutil(libavutil)
RuntimeError
DEBUG:torchaudio._extension.utils:Attempting to load FFmpeg version 4.
DEBUG:torchaudio._extension.utils:Failed to load FFmpeg 4 extension.
Traceback (most recent call last):
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 128, in _find_ffmpeg_extension
    return _find_versionsed_ffmpeg_extension(ffmpeg_ver)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 113, in _find_versionsed_ffmpeg_extension
    _try_access_avutil(ffmpeg_ver)
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 89, in _try_access_avutil
    torchaudio.lib._torchaudio.find_avutil(libavutil)
RuntimeError
DEBUG:torchaudio._extension:Failed to initialize ffmpeg bindings
Traceback (most recent call last):
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\__init__.py", line 89, in <module>
    _FFMPEG_EXT = _init_ffmpeg()
                  ^^^^^^^^^^^^^^
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 162, in _init_ffmpeg
    ext = _find_ffmpeg_extension(ffmpeg_vers, show_error)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 132, in _find_ffmpeg_extension
    raise ImportError(f"Failed to intialize FFmpeg extension. Tried versions: {ffmpeg_vers}")
ImportError: Failed to intialize FFmpeg extension. Tried versions: ['6', '5', '4']
INFO:faiss.loader:Loading faiss with AVX2 support.
INFO:faiss.loader:Successfully loaded faiss with AVX2 support.
DEBUG:torchaudio._extension.utils:Attempting to load FFmpeg version 6.
DEBUG:torchaudio._extension.utils:Failed to load FFmpeg 6 extension.
Traceback (most recent call last):
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 128, in _find_ffmpeg_extension
    return _find_versionsed_ffmpeg_extension(ffmpeg_ver)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 115, in _find_versionsed_ffmpeg_extension
    _load_lib(library)
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 64, in _load_lib
    torch.ops.load_library(path)
  File "C:\...\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\_ops.py", line 852, in load_library
    ctypes.CDLL(path)
  File "C:\...\AppData\Local\Programs\Python\Python311\Lib\ctypes\__init__.py", line 376, in __init__
    self._handle = _dlopen(self._name, mode)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: Could not find module 'C:\...\.venv\Lib\site-packages\torchaudio\lib\libtorchaudio_ffmpeg6.pyd' (or one of its dependencies). Try using the full path with constructor syntax.
DEBUG:torchaudio._extension.utils:Attempting to load FFmpeg version 5.
DEBUG:torchaudio._extension.utils:Failed to load FFmpeg 5 extension.
Traceback (most recent call last):
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 128, in _find_ffmpeg_extension
    return _find_versionsed_ffmpeg_extension(ffmpeg_ver)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 113, in _find_versionsed_ffmpeg_extension
    _try_access_avutil(ffmpeg_ver)
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 89, in _try_access_avutil
    torchaudio.lib._torchaudio.find_avutil(libavutil)
RuntimeError
DEBUG:torchaudio._extension.utils:Attempting to load FFmpeg version 4.
DEBUG:torchaudio._extension.utils:Failed to load FFmpeg 4 extension.
Traceback (most recent call last):
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 128, in _find_ffmpeg_extension
    return _find_versionsed_ffmpeg_extension(ffmpeg_ver)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 113, in _find_versionsed_ffmpeg_extension
    _try_access_avutil(ffmpeg_ver)
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 89, in _try_access_avutil
    torchaudio.lib._torchaudio.find_avutil(libavutil)
RuntimeError
DEBUG:torchaudio._extension:Failed to initialize ffmpeg bindings
Traceback (most recent call last):
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\__init__.py", line 89, in <module>
    _FFMPEG_EXT = _init_ffmpeg()
                  ^^^^^^^^^^^^^^
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 162, in _init_ffmpeg
    ext = _find_ffmpeg_extension(ffmpeg_vers, show_error)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\...\.venv\Lib\site-packages\torchaudio\_extension\utils.py", line 132, in _find_ffmpeg_extension
    raise ImportError(f"Failed to intialize FFmpeg extension. Tried versions: {ffmpeg_vers}")
ImportError: Failed to intialize FFmpeg extension. Tried versions: ['6', '5', '4']

If avoid to import this lib, the fairseq can be imported successfully.

CNChTu commented 2 weeks ago

我的环境如下: fairseq==0.12.2 torchaudio==2.3.0 torchfcpe=0.0.4 python版本3.10.7 但是我无法复现此错误,在这个环境里可以正常工作

fumiama commented 2 weeks ago

This error can be solved by the commit https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/commit/d9a116f4f7369474dd55547b646045f4ceab250d

You can compare the training behavior at this commit and one commit before it.