librosa-madmom:音頻和音樂分析

2021-01-08 纏禪可禪

讀取音頻提取特徵Log-Mel SpectrogramMFCC繪製波形圖和梅爾頻譜圖prerequisitesinstall起始點檢測 onset detection tutorial

librosa

Librosa是一個用於音頻、音樂分析、處理的python工具包,一些常見的時頻處理、特徵提取、繪製聲音圖形等功能應有盡有,功能十分強大

安裝

pip install librosa分析步驟

-專業名詞:- sr:採樣率、hop_length:幀移、overlapping:連續幀之間的重疊部分、n_fft:窗口大小、spectrum:頻譜、spectrogram:頻譜圖或叫做語譜圖、amplitude:振幅、mono:單聲道、stereo:立體聲

讀取音頻

# 加載音頻data,sample_rate = librosa.load('./test.wav')print('data:',data.shape,'\nsample_rate:\n',sample_rate)提取特徵Log-Mel Spectrogram

Log-Mel Spectrogram特徵是目前在語音識別和環境聲音識別中很常用的一個特徵,由於CNN在處理圖像上展現了強大的能力,使得音頻信號的頻譜圖特徵的使用愈加廣泛,甚至比MFCC使用的更多。# 特徵提取:Log-Mel Spectrogram特徵melspec = librosa.feature.melspectrogram(data, sample_rate, n_fft=1024, hop_length=512, n_mels=128)# n_fft指的是窗的大小,這裡為1024;hop_length表示相鄰窗之間的距離,這裡為512,也就是相鄰窗之間有50%的overlap;n_mels為mel bands的數量,這裡設為128print('Mel頻率的維度(頻域):',melspec.shape[0],'\nMel頻率的時間幀長度(時域):',melspec.shape[1],'\nshow data:\n',melspec)# 轉化為對數: Log-Mel Spectrogram特徵是音頻信號的時頻表示特徵。logmelspec = librosa.power_to_db(melspec)print('Mel頻率的維度(頻域):',logmelspec.shape[0],'\nMel頻率的時間幀長度(時域):',logmelspec.shape[1],'\nshow data:\n',logmelspec)MFCC

MFCC特徵是一種在自動語音識別和說話人識別中廣泛使用的特徵# MFCC特徵是一種在自動語音識別和說話人識別中廣泛使用的特徵mfccs = librosa.feature.mfcc(y=data, sr=sample_rate, n_mfcc=40)print('mfccs\n',mfccs.shape,mfccs)繪製波形圖和梅爾頻譜圖

plt.figure()plt.subplot(2, 1, 1)# 繪製波形圖librosa.display.waveplot(data,sample_rate)plt.title('beat waveform')plt.subplot(2, 1, 2)# 繪製頻譜圖librosa.display.specshow(logmelspec, sr=sample_rate, x_axis='time', y_axis='mel')plt.title('Mel spectrogram')plt.tight_layout() #保證圖不重疊plt.show()

madmom是什麼?

madmom是專注於music信息抽取的一個python開發包。madmom githubinstall

prerequisites

python=2.7+ 或python=3.5+

numpy>=1.13.4scipy>=0.16cython>=0.25mido>=1.2.6pytestpyaudiopyfftwinstall

pip install madmom音頻信號處理

讀取音頻數據import numpy as npimport matplotlib.pyplot as pltimport madmomsignal,sample_rate = madmom.audio.signal.load_wave_file('data/sample.wav')print('sample',signal,type(signal),'\n sample rate',sample_rate)# 讀取音頻數位訊號sig = madmom.audio.signal.Signal('data/sample.wav')print('sig',sig,'\n sample_rate',sig.sample_rate)# 將信號重採樣framedsignal = madmom.audio.signal.FramedSignal(sig,frame_size=2048,hop_size=441)print('fs',framedsignal,framedsignal.frame_size,'\n [0]',framedsignal[0],'\n [10]',framedsignal[10] ,'\n fps',framedsignal.fps,'\n num_frames',framedsignal.num_frames,'hop_size',framedsignal.hop_size)fs = madmom.audio.signal.FramedSignal(sig, frame_size=2048, fps=200)print('fs',fs,fs.frame_size,'\n [0]',fs[0],'\n [10]',fs[10] ,'\n fps',fs.fps,'\n num_frames',fs.num_frames,'fs.hop_size',fs.hop_size)短時傅立葉變換STFT聲譜圖:對原始信號進行分幀加窗後,可以得到很多幀,對每一幀做FFT(快速傅立葉變換),傅立葉變換的作用是把時域信號轉為頻域信號,把每一幀FFT後的頻域信號(頻譜圖)在時間上堆疊起來就可以得到聲譜圖。DCT跟FFT的關係就是:FFT是實現DCT的一種快速算法。STFT短時傅立葉變換,實際上是對一系列加窗數據做FFT。採樣率Fs為16KHz,表示一秒鐘內採樣16000個點,這個時候如果音頻長度是10秒,那麼raw waveform中就有160000個值,值的大小通常表示的是振幅。原始信號STFTDCT(離散傅立葉變換聲譜圖# STFTstft = madmom.audio.stft.STFT(fs)print('stft',stft,type(stft),stft[0])# 頻譜圖spec = madmom.audio.spectrogram.Spectrogram(stft)plt.imshow(spec[:, :200].T, aspect='auto', origin='lower')plt.show()起始點檢測 onset detection tutorial

SuperFlux onset detection algorithmfrom scipy.ndimage.filters import maximum_filterspec = madmom.audio.spectrogram.Spectrogram('data/sample.wav')print('spec',spec,type(spec))# calculate the differencediff = np.diff(spec, axis=0)# keep only the positive differencespos_diff = np.maximum(0, diff)# sum everything to get the spectral fluxsf = np.sum(pos_diff, axis=1)plt.figure()plt.imshow(spec[:, :200].T, origin='lower', aspect='auto')plt.show()plt.figure()plt.imshow(pos_diff[:, :200].T, origin='lower', aspect='auto')plt.show()plt.figure()plt.plot(sf)plt.show()

相關焦點

  • 使用FastAI 和即時頻率變換進行音頻分類
    音頻文件轉圖像起初把音頻文件作為圖像分類聽起來有些怪異。圖像是二維數據(其中包含RGBA等4個通道), 而音頻文件通常是一維的 (可能包含2個維度的通道,單聲道和立體聲)。本文只關注單聲道的音頻文件。我們知道,每個音頻文件會有一個採樣率,即音頻的每秒採樣數。
  • 音頻數據增強及python實現
    我們在進行數據增強時,最好只做一些小改動,使得增強數據和源數據存在較小差異即可,切記不能改變原有數據的結構,不然將產生「髒數據」,通過對音頻數據進行數據增強,能有助於我們的模型避免過度擬合併變得更加通用。
  • 利用python進行音頻數據增強
    在這篇文章中,我將向您展示如何使用音頻文件進行數據增強,以便能夠在機器學習數據集中生成更多樣本。數據增強是一種生成合成數據的方法,即通過調整原始樣本來創建新樣本。這樣我們就可獲得大量的數據。它是語音數字的免費音頻數據集。它包含4個人的2000段錄音(每個人每個數字讀50遍)。本文使用到的Python庫為librosa、 IPython.display.audio 和 matplotlib。首先導入庫可視化原始樣本我們將使用librosa讀取.wav文件,並使用matplotlib生成wav文件的頻譜圖。
  • 音頻信號及音頻分析
    音頻信號及音頻分析音頻是多媒體中的一種重要媒體。我們能夠聽見的音頻信號的頻率範圍大約是20Hz-2OkHz,其中語音大約分布在300Hz-4kHz之內,而音樂和其他自然聲響是全範圍分布的。
  • 使用Keras將音樂分類為不同類型
    該機器學習數據集由10種類型組成,每種類型由100個音樂片段組成,每個音樂片段長30秒。  我們將使用Keras,採用tensorflow作為後端。/genres/{g}/{filename}' y, sr = librosa.load(songname, mono=True, duration=30) chroma_stft = librosa.feature.chroma_stft(y=y, sr=sr) rmse = librosa.feature.rmse(y=y) spec_cent = librosa.feature.spectral_centroid
  • 音頻分析原理
    一、音頻信號及音頻分析音頻是多媒體中的一種重要媒體。我們能夠聽見的音頻信號的頻率範圍大約是20Hz-2OkHz,其中語音大約分布在300Hz-4kHz之內,而音樂和其他自然聲響是全範圍分布的。二、音頻分析原理音頻分析的原理主要涉及數位訊號處理的基本理論、音頻分析的基本方法以及音頻參數測量和分析內容,其中數位訊號處理是音頻分析的理論基礎。1.音頻分析技術基礎傅立葉變換和信號的採樣是進行音頻分析時用到的最基本的技術。
  • 切入長音頻,在線音樂走出「圍城」?
    當抖音快手成為新的流量池,唱片方不再追求獨家授權,在線音樂的版權壁壘日漸鬆動,一個版權掠奪的蠻荒時代終將結束。據艾媒諮詢數據,2020年在線音頻用戶規模或將達到5.4億人,播客和娛樂類音頻將成為行業重要的增長動力,長音頻賽道正迎來巨頭玩家。騰訊音樂集團CEO彭迦信曾明確表示,「長音頻將是未來TME持續發力的戰略領域」。話音剛落,各大平臺紛紛發力長音頻。
  • 什麼是有損和無損音頻格式,常見音頻有哪些?
    那麼什麼是有損和無損音頻格式?它們有哪些差異?除了上面聽說的這些還有哪些常見的音頻格式呢?接下來和大家分享一下音頻格式的相關知識,解答大家心中的疑惑。先和大家簡單普及一下音頻格式:音頻格式即音樂格式。音頻格式是指要在計算機內播放或是處理音頻文件,是對聲音文件進行數、模轉換的過程。目前音樂文件播放格式分為有損壓縮和無損壓縮兩種。使用不同的格式的音樂文件,在音質的表現上有差很大的差異。
  • 探索計算機視覺音頻的交叉—基於視覺的音樂相關研究Review
    本文作者分析了這一領域相較於純視覺領域的前景性所在,並且著重於實驗主要 conducted on 樂器和音樂數據的相關研究工作,從視覺引導的聲源分離、視覺引導的立體聲重構、視覺引導的音樂生成相關任務三個領域出發對相關研究成果進行介紹。相關Talk, 現可預約!
  • YouTube嘗試推出音頻廣告 以推送音樂訂閱頻道的發展
    據媒體報導,YouTube正在推出一種新型的基於音頻的廣告單元,以覆蓋使用該平臺作為其音樂和播客播放器的用戶。音頻廣告聽起來可能不適合專門從事視頻的網站,但是YouTube表示用戶正在消耗更多以音頻為中心的內容。
  • 如何用Python創建音樂可視化器
    本文將演示如何使用Python創建音樂可視化器。如何可視化音樂?我們首先需要知道音樂是如何組成的,以及如何將它可視化。音樂是聲音的組合。聲音是我們耳朵檢測到的振動。振動由頻率和振幅(速度和響度)定義。最簡單的可視化方法是畫一排條形圖。
  • 攜酷我暢聽入局長音頻,看騰訊音樂「最優解」
    從整個長音頻行業來看,其核心的盈利模式主要有三種,分別是會員、直播、廣告,而這也與騰訊音樂本身的商業模式極為契合,幾乎不會存在水土不服的情況。通過布局長音頻業務,騰訊音樂找到了業績增長的第三極,這是除音樂業務和娛樂業務外,又一個增長點。長音頻戰略很可能是騰訊音樂新的業績發動機,打通業績第三極增長。
  • 學電腦音樂製作,先從音頻基礎說起
    很多音樂製作學員來我這裡一開始就著急裝工作站、裝音源、裝效果器,趕緊實操。這種積極的精神是很好的,起碼是希望自己早日學成,出作品。但如果很多基礎的知識沒有掌握就實戰做音樂,是很容易事倍功半得,反之如果掌握好基礎,再學習就會事半功倍。音頻在音樂製作中是非常重要的。
  • 使用tensorflow進行音樂類型的分類
    與我的兩位合作者張偉信(Wilson Cheung)和顧長樂(Joy Gu)一起,我們試圖比較不同的音樂樣本分類方法。特別是,我們評估了標準機器學習和深度學習方法的性能。我們發現特徵工程是至關重要的,而領域知識可以真正提高性能。在描述了所使用的數據源之後,我對我們使用的方法及其結果進行了簡要概述。
  • 谷歌併購音頻APP廠商「60分貝」 欲造「音頻內容版YouTube」
    據報導,在過去一年中,上述機構一共和80多個音頻內容製作團隊進行了合作,推出數百個音頻故事等內容。音頻內容或播客市場,其實由蘋果公司所創造(「Podcast」的Pod,指的是蘋果的音樂播放器),不過這一市場的發展一直保持了不慍不火。在智慧型手機時代,音頻市場再次引發了科技巨頭的關注。
  • 騰訊音樂聲音版圖再添「酷我暢聽」 長音頻市場泛娛樂需求崛起
    隨著「耳朵經濟」進入資本競速階段,長音頻成為音樂領域新賽道已成為共識。此次推出「酷我暢聽」,意味著騰訊音樂娛樂集團的聲音版圖中將再增添有力一員。4月23日,騰訊音樂娛樂集團(TME)召開線上長音頻戰略發布會,正式對外發布長音頻戰略,並推出酷我音樂長音頻新品牌「酷我暢聽」。
  • 音頻是什麼
    音頻是什麼音頻一詞已用作一般性描述音頻範圍內和聲音有關的設備及其作用。
  • 揚聲器音頻「失真」的基礎知識和測量與計算
    ,它經常被列在揚聲器,功放和其它音頻聲學設備的技術指標中。本文中我們將幫您理清這個概念以及他們的測量方法和正確用法。  「失真」是音頻組件的一個重要特性,它經常被列在揚聲器,功放和其它音頻聲學設備的技術指標中。