1 问题描述
在annoconda下运行项目时,出现了如下错误:
Traceback (most recent call last):
File "/opt/Wav2Lip-HD/inference.py", line 3, in <module>
import scipy, cv2, os, sys, argparse, audio
File "/opt/Wav2Lip-HD/audio.py", line 1, in <module>
import librosa
File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/__init__.py", line 13, in <module>
from . import core
File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/core/__init__.py", line 114, in <module>
from .time_frequency import * # pylint: disable=wildcard-import
File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/core/time_frequency.py", line 10, in <module>
from ..util.exceptions import ParameterError
File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/util/__init__.py", line 73, in <module>
from . import decorators
File "/root/anaconda3/envs/wav2lip/lib/python3.9/site-packages/librosa/util/decorators.py", line 9, in <module>
from numba.decorators import jit as optional_jit
ModuleNotFoundError: No module named 'numba.decorators'
2 问题分析
从报错中可以看出,在librosa中使用了numba,执行过程中找不到“numba.decorators”模块,
主要是因为librosa和numba的版本不匹配引起的。
可通过pip list查看已经安装的librosa和numba的版本
numba 在 0.50版本之后删除了 decorators 模块
(1)numba是什么
numba是一个用于编译Python数组和数值计算函数的编译器,这个编译器能够大幅提高直接使用Python编写的函数的运算速度。numba使用LLVM编译器架构将纯Python代码生成优化过的机器码,通过一些添加简单的注解,将面向数组和使用大量数学的python代码优化到与c,c++和Fortran类似的性能,而无需改变Python的解释器。
Numba的主要特性:
- 动态代码生成 (在用户偏爱的导入期和运行期)
- 为CPU(默认)和GPU硬件生成原生的代码
- 集成Python的科学软件栈(Numpy)
(2)librosa是什么?
librosa是一个非常强大的Python语音信号处理第三方库。它提供了一系列功能强大的算法,可以实现音频信号的解析、合成、滤波、频谱分析、音频特征提取、音乐信息检索、语音识别等操作。常用于音频处理、语音识别、音乐信息检索等领域。
librosa的名称是“Python音频信号处理库”的缩写,它包含了Core IO and DSP(核心输入输出功能和数字信号处理)、Time and frequency conversion(时间和频率转换)、Pitch and tuning(音高和调音)、Deprecated(已弃用)等模块。其中,一些常用的专业名词包括采样率(sr)、帧移(hop_length)、连续帧之间的重叠部分(overlapping)等。
3 问题解决
pip install numba==0.56.4
pip install librosa==0.9.1
再次运行程序,错误已经解决