我正致力于演讲者识别项目。为了识别不同语音片段的扬声器是否相同,我提取多个功能,如MFCC,速度,色度图,节拍时间,谐波,打击乐,melspectrogram等。现在我还想找到一个声音片段的音高,到找到我正在使用此代码的音调:
import librosa
y,sr = librosa.load('E:/Audio_clip/cant.wav')
S = np.abs(librosa.stft(y))
#print(S)
pitch, mag = librosa.piptrack(y=y, sr=sr, S=S)
但是当我将音高和mag输出打印到我的控制台时,它为我提供了所有剪辑的相同输出,并且输出在0和数组列表中用于音高和mag并且还给出错误:'NoneType'对象不可迭代'
有人可以告诉我哪里出错了,或者我怎样才能找到一个声音片段?
到目前为止我的识别扬声器的计划是,首先我想要创建这些功能的特征矩阵,之后我将使用余弦相似性功能来查找来自同一个扬声器的声音或不。这是识别说话人的好方法吗?
答案 0 :(得分:0)
在开始时预计会出现零,您只是不能正确打印/绘制数组。内部的一些值非零,但它们非常罕见,有关详细信息,请参阅topic on librosa group。
另见Librosa pitch tracking - STFT和How to print the full NumPy array?