在音乐分析与处理领域,准确测量音频的节拍速度(BPM)至关重要。librosa 是一个强大的 Python 音频分析库,本文将通过多个函数示例展示如何使用 librosa 测量刘珂矣演唱的《忘尘谷》的节拍速度,并分析不同方法的效果。
函数实现与测量结果
基础测量函数
import librosa
import numpy as np
def bpmscan(audio_path):
y, sr = librosa.load(audio_path, sr=26050)
tempo, _ = librosa.beat.beat_track(y=y, sr=sr)
print(tempo[0])
return round(float(tempo[0]), 1)
该函数使用 librosa.load 加载音频,指定采样率为 26050。使用 librosa.beat.beat_track 检测节拍速度,该函数基于音频的能量和过零率等特征分析节奏模式,得到 BPM 值。测量结果为 101.8 BPM。
优化测量函数
def bpmscan1(audio_path):
# 分析前 30 秒(避开前奏/间奏)
y, sr = librosa.load(audio_path, sr=44100, duration=30)
tempo, _ = librosa.be