librosa 庫官網
LibROSA 是一個用於音樂和音訊分析的python包。它提供了建立音樂資訊檢索系統所需的構建塊。
這篇部落格就不展開說明了,為了方便日後隨用隨查,這裡只是記錄下 librosa 庫的情況,細節還是看官方文件。
$ pip install librosa
庫函式結構
原始檔 |
功能介紹 |
---|
librosa.beat |
用於估計節拍和檢測節拍事件 |
librosa.core |
核心功能包括從磁碟載入音訊、計算各種譜圖表示以及各種常用的音樂分析工具。為了方便起見,這個子模組中的所有功能都可以直接從頂層 librosa.* 名稱空間訪問。 |
librosa.decompose |
利用 scikit-learn 中實現的矩陣分解方法實現諧波衝擊源分離(HPSS) 和通用譜圖分解功能。 |
librosa.display |
使用 matplotlib 的視覺化。 |
librosa.effects |
時域音訊處理,如音高移動和時間拉伸。這個子模組還為分解子模組提供時域包裝器。 |
librosa.feature |
特徵提取和操作。這包括低層次特徵提取,如彩色公音、偽常量q(對數頻率)變換、Mel 光譜圖、MFCC 和調優估計。此外,還提供了特性操作方法,如 delta 特性、記憶體嵌入和事件同步特性對齊。 |
librosa.filters |
過濾庫生成(chroma、偽CQT、CQT等)。這些主要是librosa的其他部分使用的內部函式。 |
librosa.onset |
起跳檢測和起跳強度計算。 |
librosa.output |
文字和波形檔案輸出。 |
librosa.segment |
用於結構分割的函式,如遞迴矩陣構造、時滯表示和順序約束聚類。 |
librosa.sequence |
用於順序建模的函式。各種形式的維特比解碼,以及用於構造轉換矩陣的輔助函式。 |
librosa.util |
輔助實用程式(規範化、填充、居中等)。 |
Audio processing(音訊處理)
函式 |
功能 |
---|
load() |
從檔案載入音訊資料,貌似沒有格式限制,而且可以透過引數設定是否保留雙聲道,取樣率,重取樣型別。 |
to_mono() |
把音訊資料降至單聲道。 |
resample() |
重取樣,也可以稱之為降取樣。 |
get_duration() |
計算音訊時間序列、特徵矩陣或檔名的持續時間(以秒為單位)。從檔案路徑讀取時間長度更快一些。 |
autocorrelate() |
計算自相關。 |
zero_crossings() |
找到過零點的位置。 |
clicks() |
在訊號指定的位置放置click訊號。可以透過引數設定click訊號的頻率等屬性。 |
tone() |
生成一個 tone 訊號,即一個簡單的正弦波。 |
chirp() |
生成一個 chirp 訊號。 |
Spectral representations(譜表示)
函式 |
功能 |
---|
stft() |
短時傅立葉變換。預設引數:sr=22050, n_fft=2048, hob_length=512 |
istft() |
短時傅立葉逆變換。 |
ifgram() |
計算得到的瞬時頻率(作為取樣率的比例)作為復譜相位的時間導數。 |
cqt() |
常數Q變換。 |
icqt() |
常數Q逆變換。 |
hybrid_cqt() |
計算音訊訊號的混合常量- q變換。 |
pseudo_cqt() |
計算音訊訊號的偽常量- q變換。 |
iirt() |
使用IIR濾波器的時頻表示。 |
fmt() |
快速梅林變換(FMT) |
interp_harmonics() |
計算諧波處的能量。 |
salience() |
諧波突出功能。 |
phase_vocoder() |
階段聲碼器。給定一個 STFT 矩陣 D,將速度提高一個因子。 |
magphase() |
計算複數圖譜的幅度值和相位值。 |
Magnitude scaling(幅度標度)
函式 |
功能 |
---|
amplitude_to_db() |
將振幅譜圖轉換為 db _scale 譜圖。| |
db_to_amplitude() |
將 db 譜圖轉為普通振幅譜圖。| |
power_to_db() |
功率譜轉換。| |
db_to_power() |
功率譜轉換。| |
perceptual_weighting() |
功率譜圖的感知加權。| |
A_weighting() |
計算一組頻率的 a 加權。| |
pcen() |
該函式透過自動增益控制對時頻表示 S 進行歸一化,然後進行非線性壓縮。| |
Time and frequency conversion(時間和頻率轉換)
函式 |
功能 |
---|
frames_to_sample() |
將幀索引轉換為音訊樣本索引。 |
frames_to_time() |
將幀數轉換為時間(秒)。 |
samples_to_frames() |
將樣本索引轉換為 STFT 幀。 |
samples_to_time() |
將 STFT 幀轉換為樣本索引。 |
time_to_frames() |
將時間戳轉換為 STFT 幀。 |
time_to_samples() |
將時間戳(以秒為單位)轉換為樣本索引。 |
hz_to_note() |
將一個或多個頻率(以Hz為單位)轉換為最近的音符名稱。 |
hz_to_midi() |
獲取給定頻率的 MIDI 音符編號。 |
midi_to_hz() |
獲取 將一個或多個 MIDI 數轉換為音符串。MIDI 音符的頻率(Hz) |
midi_to_note() |
將一個或多個 MIDI 數轉換為音符串。 |
note_to_hz() |
將一個或多個音符名稱轉換為頻率(Hz) |
note_to_midi() |
將一個或多個拼寫音符轉換為 MIDI 數字。 |
hz_to_mel() |
將Hz轉換為 Mels。 |
hz_to_octs() |
將頻率(Hz)轉換為(分數)倍頻程數。 |
mel_to_hz() |
將 mel 頻率轉換為頻率 |
octs_to_hz() |
將八度數轉換為頻率。 |
fft_frequencies() |
np.fft.fftfreq 的替代實現。 |
cqt_frequencies() |
計算 Constant-Q 箱的中心頻率。 |
mel_frequencies() |
計算調整到梅爾音階的聲學頻率陣列。 |
tempo_frequencies() |
計算對應於起始自相關或臨時圖矩陣的頻率(以每分鐘節拍數為單位)。 |
samples_like() |
返回一組樣本索引以匹配特徵矩陣中的時間軸。 |
times_like() |
返回一組時間值以匹配特徵矩陣中的時間軸。 |
Pitch and tuning(音調和調諧)
函式 |
功能 |
---|
estimate_tuning() |
估計音訊序列的音調或者頻譜輸入。 |
pitch_tuning() |
給定一個集合,估計其調諧偏移(一個 bin 的分數)相對於A440 = 440.0Hz。 |
piptrack() |
閾值拋物線插值 STFT 上的節距跟蹤。 |
Deprecated(moved)(不推薦(移動))
函式 |
功能 |
---|
dtw() |
動態時間扭曲。 |
fill_off_diagonal() |
將一個矩陣的所有細胞設定為給定的值,如果它們位於約束區域之外。 |
Display(顯示)
透過 librosa.display.*
訪問函式。
函式 |
功能 |
---|
specshow() |
Display a spectrogram/chromagram/cqt/etc. |
waveplot() |
繪製波形的振幅包絡。 |
camp() |
從給定的資料中獲取預設的顏色對映。 |
TimeFormatter() |
時間軸的刻度格式化程式。 |
NoteFormatter() |
Notes 的刻度格式。 |
LogHzFormatter() |
用於對數頻率的製表程式。 |
ChromaFormatter() |
色度軸的格式化程式。 |
TonnetzFormatter() |
tonnetz 軸的格式化程式。 |
Feature extraction(特徵提取)
透過 librosa.feature.*
訪問函式。
Spectral features(光譜特徵)
函式 |
功能 |
---|
chroma_stft() |
從 stft 的結果計算色譜圖。 |
chroma_cqt |
常數 Q 色譜圖。 |
chroma_cens() |
色譜能量歸一化。 |
melspectrogram() |
計算梅爾頻譜。 |
mfcc() |
梅爾倒頻譜系數。 |
rms() |
譜的均方根。 |
spectral_centroid() |
譜中心 |
spectral_bandwidth() |
譜頻寬。 |
spectral_contrast() |
譜對比度。 |
spectral_flatness() |
頻譜平坦度。 |
spectral_rolloff() |
滾降頻率。 |
poly_feature() |
求一個 n 階多項式與譜圖列的擬合係數。 |
tonnetz() |
計算色調質心特徵(tonnetz)。 |
zero_crossing_rate() |
過零率。 |
Rhythm features(節奏特徵)
函式 |
功能 |
---|
tempogram() |
計算模板圖:起始強度包絡線的區域性自相關。 |
Feature manipulation(特徵操作)
函式 |
功能 |
---|
delta() |
計算增量特性:對輸入資料沿選定軸的導數進行區域性估計。計算了三角函式的薩維茨基-戈萊濾波。 |
stack_memory() |
短期歷史嵌入:將資料向量或矩陣與自身的延遲副本垂直連線。 |
Spectrogram decomposition(譜圖分解)
透過 librosa.decompose.*
訪問。
函式 |
功能 |
---|
decompose() |
分解一個特徵矩陣。 |
hpss() |
Median-filtering harmonic percussive source separation (HPSS). |
nn_filter() |
Filtering by nearest-neighbors. |
Output(輸出)
透過 librosa.ouput.*
來訪問。
函式 |
功能 |
---|
annotation() |
儲存 3 列格式的註釋。 |
time_csv() |
按 CSV 格式儲存時間步驟。這可以用來儲存打擊跟蹤器或分割演算法的輸出。 |
write_wav() |
儲存為 wav 檔案格式。 |
Utilities(實用功能)
透過 librosa.util.*
來訪問。
Array operations(陣列操作)
函式 |
功能 |
---|
frame() |
將時間序列分割成重疊的幀。 |
pad_center() |
將陣列居中。 |
fix_length() |
將陣列資料的長度固定為精確的大小。 |
fix_frames |
固定一個幀的最大值和最小值。 |
index_to_slice() |
從索引陣列生成切片陣列。 |
softmask() |
魯棒地計算軟掩碼操作。 |
sync() |
邊界之間多維陣列的同步聚合。 |
axis_sort() |
對陣列的行或列進行排序。 |
normalize() |
沿著選定的軸對陣列進行標準化。 |
roll_sparse() |
係數矩陣滾動。 |
sparsify_rows() |
返回一個近似於輸入 x 的行稀疏矩陣。 |
buf_to_float() |
將整數緩衝區轉換為浮點值。 |
tiny() |
計算與輸入資料型別對應的極小值。就是比如輸入資料是int8型別,則返回 int8 型別可以表示的最小的數。 |
Matching(匹配)
函式 |
功能 |
---|
match_intervals() |
將一組時間間隔與另一組時間間隔匹配。 |
match_events() |
將一組事件與另一組事件匹配。 |
Miscellaneous
函式 |
功能 |
---|
localmax() |
在陣列 x 中找到區域性最大值。 |
peak_pick() |
使用靈活的啟發式演算法選擇訊號中的峰值。 |
Input Validation(輸入驗證)
函式 |
功能 |
---|
valid_audio() |
驗證變數是否包含有效的單聲道音訊資料。 |
valid_int() |
確保輸入值是整型的。 |
valid_intervals() |
確保陣列是時間間隔的有效表示。 |
File operations(檔案操作)
函式 |
功能 |
---|
example_audio_file() |
獲取包含音訊示例檔案的路徑。 |
find_files() |
獲取目錄或目錄子樹中已排序的(音訊)檔案列表。 |
本作品採用《CC 協議》,轉載必須註明作者和本文連結