问题发现:
今天要用一下 python librosa 模块,检测一段音乐的基频。
安装一路顺畅。
然后在IDLE 下新建py文件,输入如下代码:
import librosa
import ffmpeg
import numpy
filename = "C.mp3"
y, sr = librosa.load(filename)
f0, voiced_flag, voiced_probs = librosa.pyin(y,
fmin=librosa.note_to_hz('C2'),
fmax=librosa.note_to_hz('C7'))
print (f0)
run module 时报错:
AttributeError: module 'librosa' has no attribute 'load'
可是直接在shell中一行行运行又是成功的,奇怪了。
问题原因:
查询了一些资料,大部分说是librosa安装问题,可是我在shell中单行运行成功怎么解释呢?
最后发现一个回答贴,建议修改一下py文件名称。
回头检查一下我的py文件:librosa.py ,因为这是一个librosa的应用文件嘛。:)
把文件名改为 tone.py
run module 就成功了。
原因分析
import 语句本就是用来导入module的,我自己的py文件与librosa module同名,可能导致了某种错误吧。
总之自己命名的py文件最好不要与import module的module重名。