初めに
NVIDIAが公開している日本語音声向けの音声認識モデル nvidia/parakeet-tdt_ctc-0.6b-jaを Windowsで動かす際に以下のエラーが出た多ため、対応方法を記載します
packages\nemo\collections\asr\models\configs\asr_models_config.py", line 27, in <module> from nemo.core.config import modelPT as model_cfg File "C:\Users\.venv\Lib\site-packages\nemo\core\config\modelPT.py", line 22, in <module> from nemo.utils import exp_manager File "C:\Users\.venv\Lib\site-packages\nemo\utils\exp_manager.py", line 160, in <module> class FaultToleranceParams: File "C:\Users\.venv\Lib\site-packages\nemo\utils\exp_manager.py", line 169, in FaultToleranceParams rank_termination_signal: signal.Signals = signal.SIGKILL ^^^^^^^^^^^^^^ AttributeError: module 'signal' has no attribute 'SIGKILL'. Did you mean: 'SIGILL'?
開発環境
- Windows11
- powershell
- python 3.11
原因
このエラーは、PythonのsignalモジュールでSIGKILLシグナルが定義されていないことが原因です。Windows環境では、一部のUnix/Linux固有のシグナルがサポートされておらず、SIGKILLもその一つです。そのため、nemoライブラリがsignal.SIGKILLを使用しようとすると、Windows環境ではAttributeErrorが発生します。
対応方法
.venv\Lib\site-packages\nemo\utils\exp_manager.py
にあるファイルの一部を書き換えます
class FaultToleranceParams内のrank_termination_signalを以下のように変更します。
修正前
rank_termination_signal: signal.Signals = signal.SIGKILL
修正後
import os if os.name == 'nt': rank_termination_signal: int = signal.SIGTERM else: rank_termination_signal: signal.Signals = signal.SIGKILL
備考
parakeetはnumpyが2.0.0以上だと以下のエラーになるため、1.x.xを使う必要があります
File "C:\Users\.venv\Lib\site-packages\numpy\__init__.py", line 411, in __getattr__ raise AttributeError( AttributeError: `np.sctypes` was removed in the NumPy 2.0 release. Access dtypes explicitly instead.. Did you mean: 'dtypes'?