计算机算法音乐专业,音乐信号分析算法的乐理简说(非音乐专业的乐理)
前言
這篇文章不是講樂理知識的,那是音樂制作人,編曲人員所需要鉆研的學問,不過你要有興趣也可以看看專業的樂理知識。
這里僅僅是說在音樂信號分析的項目中,我們需要知道的一些參數的意義。
在諸多信號處理,或圖像處理算法的博客中,我沒有找到有人能把一個算法說清楚的,比如給出一堆復雜公式,但沒有說明參數代表的意義,這一點是非常浪費閱讀者的時間的。或者說公式里的參數字母表示經常更換,在不同的場景中,更換很多種字母,以及公式的變形。這是對學習者非常不利的。包括編程語言實現一些算法的博客,比如寫一個算法的 python 實現,代碼寫了一堆但最后波形展示的時候,連一句 plt.show() 都沒寫上去,導致追問的新手要花大量的時間繼續尋找答案,有基礎的人當然能看出來代碼沒寫全。不過現在的很多算法都有庫,但是有些庫經常更新,導致很多文檔中提到的一些函數已經失效,這時候如果你知道基本原理,就可以從底層實現,自己定義一些 function 來解決問題,如果你沒有這個自我從底層實現算法的能力,那估計你要在茫茫的網絡深海中撈針試圖找到答案了。不過遺憾的是,好像市面上沒有一些從 0 實現的算法文檔說明,每個人都在調用。感性的說個數字,我覺得應該有 95% 以上的博主寫算法文章都說不清楚情況,導致我們一切問題都會在 stackoverflow 上尋找一些零碎的答案。
寫算法就要說清楚公式的參數,否則只是浪費大家時間,寫得清楚公式參數的意義才配稱得上是算法工程師。
音樂形式簡述
根據音樂數據的不同形式,可以將音樂的表示分為以下三類:
聲音文件類型
聲音通過錄音設備采樣后的一種文件類型,以二進制采樣數據的形式直接記錄了那些真實的音樂或者語音音頻文件,是世界上目前應用最普遍的音頻表示形式。這種聲音文件類型的存儲方式有很多中,常用的有壓縮格式和非壓縮格式兩種。壓縮格式包括 mp3、rm 等,而非壓縮的格式包含了 pcm、wav 等。但這種文件類型的缺點是需要比較大的存儲空間。
符號文件類型
MIDI(Musical Instrument Digital Interface)文件格式類型是最常見的結構化符號的音樂表示,記錄了豐富的音樂信息:音樂演奏的方式、音符以及音調等語義信息。MIDI 文件實際是一種能夠描述音樂樂譜的音樂節奏指令序列。此外還有 GUIDO(一位音樂理論家的名字)、SMDL(Standard Music Description Language)、NIFF(Notation Interchange File Format)等類型。
模塊文件類型
實際包含了 MIDI 和數字音頻兩種文件類型的特性。它除包含有樂器演奏指令和聲音的數字采樣信號外,對音頻硬件的依賴性并不大。根據編碼方式的不同,模塊文件的格式有 MOD、XM、MTM、KAR、IT。
音級輪廓特征提取
根據音樂作品內容的差異性,可以通過不同層次對音樂進行研究。一般來講,音樂可分為 Low-Level、Mid-Level、High-Level 三個層次。根據音樂理論以及音樂的表現形式,這三個層次的音樂特征可以分別描述為基本特征、部分特征和整體特征。
音樂的基本特征通常包括音高、音色、音強等,它們代表了音頻信號的一些固有特征。按照相關的音樂理論將一種或者幾種基本特征詳解后就組成了部分特征,包括節奏、音程、和弦等。同基本特征相比,部分特征具有一定的語義特性,是統計模型和機器學習中常用的方法。
音樂的和弦特征是音樂信號處理中廣泛使用的一種信號特征,并且和弦識別在計算機自動伴奏,歌曲翻唱識別以及音頻匹配等領域具有重要作用。特征提取和和弦識別分類是音樂和弦自動識別研究中兩個最重要的截斷。和弦識別系統可以看另一篇文章
節拍跟蹤
音樂的節奏作為音樂的靈魂,在表達音樂美中始終保持著重要的地位。沒有節奏就失去了表達音樂思維的能力。
“拍”是節奏的一個方面,同時也是計量音樂演奏快慢的一種度量單位。
一般用節奏來表示音樂每分鐘的拍數,單位為 BPM,表示每分鐘的節拍個數。節奏較快的音樂,節拍值大;節拍較慢的音樂,節拍值小。一般情況下,音樂的速度集中在每分鐘 20 到 300 節拍數之間。用某一個節拍出現的時間點來表示節拍點位置。將相鄰兩個節拍點之間的間隔稱為節拍間隔。它們時間的關系表達式:
\displaystyle
B_v=\frac{60}{B_r}\\{}\\
B_v=節拍值\\{}\\
B_r=節拍間隔
節拍跟蹤用于獲取音樂信號中的節拍信息,確定每個節拍在信號中的大致時間位置。它是自動伴奏及轉錄、計算機輔助音頻編輯以及音樂相似性等應用的基礎,同步節拍特征也是歸一化不同音樂版本之間速率變化的一種很好的途徑。
此外,由樂理知識可知,音樂中和弦的改變往往發生在節拍處,因此進行和弦識別時先對相應的音頻進行節拍的跟蹤檢測,之后再進行音頻分割,優點就是可以有效避免將同一個和弦分割在不同的音頻段或者是同一音頻段中包含有多個和弦的情況。在音樂信號處理中增加節拍跟蹤的方法可以很好的提高和弦的識別率。
比如動態節拍跟蹤算法,包括起始點能量包絡、自相關最佳速率估計和節拍檢測三部分組成。
音樂信號預處理:主要是對信號進行去燥。將完成預處理的音樂全部轉化成 mp3 格式,采樣率為 11025Hz,單聲道標準音樂文件。
將音頻信號進行 FFT,通過一個權重矩陣將傅里葉頻譜變成 40 維 Mel 頻譜。計算每一維頻譜沿時間軸的一階拆分(只有起始點信息),然后將整個頻譜內的值相加,濾除直流后得到起始能量包絡。
對整個信號的能量進行起始自相關運算,然后加高斯窗,在其對數域上取單一主峰值,將自相關中最大的滯后值作為最佳的速率估計。
最后將起始能量包落和全局速率輸入節拍檢測模塊,通過同臺規劃算法獲取節拍的時間位置信息,完成節拍跟蹤。
PCP 特征介紹
人類聽覺系統對聲音的感知過程類似于頻域中對信號頻譜的分析過程。對于音頻文件信息而言,標準的模式識別方法通常依賴于廣泛的特征。一般這些特征都描述了聲音的音色或者文本結構的一些特性,或者都是一些語音識別應用中對人類聽覺系統光譜特征相應建模的音頻特征。當處理音樂信號時,可以使用表示音樂信號的一些特征描述,其中最顯著的一個特征就是音樂在旋律和諧波方面八度的等效一致性。
Shepard 提出了使用二維空間來表示音高的感知結構,他認為使用二維的螺旋形來表示人類對音高的聽覺系統感知比使用一維的線來表示要準確,并由此提出用音高(Pitch)和音級(Chroma)兩項來分別代表垂直和弧度維:
在這樣的表示中,隨著音符音高的增加,比如說從 C1 到 C2,它的位置沿著螺旋線向上移動,在重新到達原始音高級 C 之前,它繞所有的音高級(音級依次為 C -> C# -> D,, -> G#)完成一次旋轉。音高描述了音樂的聲調隨頻率的增加而增加,而音級則表示在某個倍頻程里的循環。因此相差整數倍頻的音屬于同一個音級。根據 Shepard 的結果,信號的感知音高能夠轉換成音級(chroma)值和音調,表示為:
p=2^{h+c}
這樣的分解是位移的,它滿足c\in [0,1],\ h\in Z。c的線性變化,通過將間隔 0 到 1 分成 12 等份,可以獲得等音階的 12 個音級。Shepard 的表示形式表明兩個音高之間的距離依賴于 c 和 h,而不僅僅跟 p 有關。在音高(Tone height)方向上表示了音所在的倍音程;在水平方向,如圖所示的逆時針運動方向表明了音屬的音級。途中一共包含了 A –> G# 12 個音級。
音級特征 PCP 通過結合音樂理論并且重建頻譜使其成為了音級譜。同時 PCP 特征的一種重要特征就是可以進行能量壓縮,將眾多泛音以多對一的方式映射到少數的音級上。例如,考慮一個具有 20 個元素的和聲序列被映射成了 10 個不同的音級值,并且 20 個元素中的 13 元素 僅僅映射為四個不同的音級值,并將該音級分布作為了和聲的一系列的和弦模版。因此我們能夠很容易地想到使用這個特性來代替音頻信號,從而取識別一個特定信號的音級值。
在一些情形中,MFCC 特征是音級特征的一種補充,最初 MFCC 應用在音頻信號處理中,后來應用到了不同的音樂分析任務重,其中就包括有音樂類型分類和樂器識別等,一般認為低頻處的 MFCC 系數跟音色相關,當忽略這種信息是,我們在一定程度上可以獲取相對固定的音色,這樣就會增加對不同樂器種類相同音級特征的魯棒性。對此可以引進來對信號音高系數 PFCC(Pitch Frequency Cepstral Coefficients)的處理。
本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
不要試圖用百米沖刺的方法完成馬拉松比賽。
總結
以上是生活随笔為你收集整理的计算机算法音乐专业,音乐信号分析算法的乐理简说(非音乐专业的乐理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 色彩解读之黑白灰
- 下一篇: 计算机基础与应用教程计算机硬件,计算机基