首页 > 解决方案 > 如何使用 Librosa 获得音频的音高?(不是二维数组,但与可丽饼类似)

问题描述

目前,我正在寻找用于音频音高检测(f0 频率)的 python 包。我找到了一个名为librosa的库,并尝试使用piptrack函数来跟踪音高。但是,结果是二维数组(如下所示)而不是一维数组。

图书馆结果

问题是,我想得到一个描述音频音高的简单折线图(就像其他包,如crepeaubioparselmouth)。

那么如何使用 librosa 获得类似的结果呢?

这是代码:

import librosa
import librosa.display
import os
import matplotlib.pyplot as plt
import numpy as np

audio_path = 'test.wav'
y, sr = librosa.load(audio_path, sr=None)
pitches, magnitudes = librosa.piptrack(y=y, sr=sr)
plt.figure()
plt.plot(np.tile(np.arange(pitches.shape[1]), [100, 1]).T, 
pitches[:100, :].T, '.')
plt.xlabel('samples', fontsize=18)
plt.ylabel('pitch (Hz)', fontsize=18)
plt.savefig("pitch_array_by_fps.png")

标签: pythonaudiofrequencypitch

解决方案


推荐阅读