0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

在工程師的手中,我們可以用機器學習搭建自己的音樂夢想!

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-08-01 09:41 ? 次閱讀

多數(shù)伏在案前敲擊鍵盤的程序員或許都曾憧憬:黑框眼鏡、格子襯衫、腳踩涼拖背后的另一番模樣的自己。

對于來自紐約的 Peter Sobot 而言,他的本職工作是通過機器學習系統(tǒng)為 Spotify 平臺上的用戶推薦音樂。但朝九晚五的工作之余,他還是一名鼓手兼音樂人,這也就意味著他需要經(jīng)常創(chuàng)作各類電子音樂,當然,包括架子鼓等打擊樂器在內(nèi)。

近日,Peter Sobot 在其博客中寫道:“他利用機器學習構建了一款應用程序,無論音頻樣本是底鼓、軍鼓還是其他鼓,其識別準確率高達 87%?!?/p>

萬萬沒想到,在工程師的手中,我們可以用機器學習搭建自己的音樂夢想!

需要了解的是,在現(xiàn)代電子音樂制作中,一般都會使用鼓聲樣片而不是真實的鼓手現(xiàn)場錄音的旋律,而這些樣片通常以商業(yè)性質(zhì)出售,或者由音樂人免費在網(wǎng)上共享出來。不過,這樣的樣片卻往往很難利用,問題就出在它們的標簽和分類方式很難盡如人意。

“每家公司都試圖通過創(chuàng)建自己的樣片夾專有格式,如 Native Instrument 的 Battery 或 Kontakt 格式。兩者都使用元數(shù)據(jù),并允許用戶通過各種標簽瀏覽樣片。但這些軟件包非常昂貴,且需要學習其任務流程?!?Peter 寫道。

于是,這位被音樂耽誤了的工程師決定利用機器學習來嘗試解決這一問題。

例如,以下給出的一段音頻該如何判斷究竟是是底鼓、軍鼓、踩镲,還是別的音樂樣本?

如果是人類,可以毫不費力地區(qū)分出這兩種聲音,但計算機卻需要大量的訓練。在機器學習中,這通常被稱為分類問題,即機器需要注入數(shù)據(jù)并對其進行分類。在這其中,通常會涉及特征提取階段。

Peter 指出,人類識別不同的鼓音會從以下幾個特征判別:

一是整體文件長度。因為小鼓的聲音要比踢鼓的聲音持續(xù)時間更長,所以比較容易測量。

二是整體響度。實際上,由于電子音樂的大多數(shù)樣本都是標準化的,這意味著不同樣片中的鼓聲響度會被調(diào)整統(tǒng)一。相反,可以使用“最大”、“中等”、“最小”三種響度以更好地了解響度是如何隨時間變化的。

三是頻率。如底鼓樣片的低頻音段會有很多,因其直徑長,造成鼓聲小而低沉。為了讓機器學習算法學會這一點,需要將不同頻率范圍內(nèi)的聲音響度特征分類。

四是音高。盡管鼓是一款打擊樂器,但仍可以調(diào)到各種音高。為了量化這種調(diào)整,可以采用樣本的基頻來幫助算法區(qū)分低音和高音。

接下來,就開始訓練數(shù)據(jù)了。

據(jù)了解,Peter 從數(shù)萬個樣本中選取了大概每種樂器 20~30 個樣本量,基本分為以下三種類型:一是每種樂器的不同類型的樣本,如聲學鼓、電子鼓;二是不同來源的音樂樣本;三是非鼓聲的音樂樣本。

然后,他列出了 100 個樣本夾,將大概 50 兆字節(jié)的樣本數(shù)據(jù)歸置于 5 個單獨文件夾中,分別是:底鼓、小鼓、軍鼓、踩镲、以及其他。

1、執(zhí)行特征提取

據(jù)了解,這個 Python 庫是由音頻分析師 Brain McFee 等人創(chuàng)建的 librosa 。

(附上GitHub上的代碼鏈接:https://github.com/psobot/machine-learning-for-drummers

2、將提取特征保存在JSON文件夾中

3、將特征提供給決策樹進行訓練

以決策樹為例,這是一種常見的機器學習算法,并不涉及“神經(jīng)網(wǎng)絡”、“深度學習”的范疇。簡言之,決策樹是一種以遞歸方式學習每個特征的閾值并將數(shù)據(jù)分類的系統(tǒng)。

Peter 創(chuàng)建了一個決策樹模型classifier.py,其權重由導入的數(shù)據(jù)通過統(tǒng)計決定。以下為可視化模型:

每個新樣本都傳遞到該決策樹中,并對提供的特征進行由上到下的評估。例如,如果新樣本為 average_eq_2_10 ≤ -56.77 (如圖中的頂部塊所示),則決策樹將向左移動,然后檢查其 fundamental_5 特征。

如果執(zhí)行 classifier.py ,會呈現(xiàn)兩個列表:一是訓練準確率(模型預測訓練期間出現(xiàn)過的樣本的準確率),二是測試準確率(模型預測訓練期間未出現(xiàn)過的樣本的準確率)。

據(jù)了解,Peter 分別獲得了 100% 和 87% 的準確率。

在他看來,13% 的錯誤率可能是過度擬合導致,因此,為了避免出現(xiàn)這種可能性,他采取了以下三種方式:

調(diào)整算法參數(shù)以使其不會太具體。

改變特征計算以便給算法注入更多數(shù)據(jù),這部分數(shù)據(jù)或許對人類來說并不敏感,但在數(shù)學上有助于解決分類問題。

添加更多多樣化的數(shù)據(jù),以便決策樹算法可以創(chuàng)建一種更通用的樹,前提是現(xiàn)有數(shù)據(jù)并不完整。

最后,附上這位小哥哥個人照,

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8353

    瀏覽量

    132315
  • python
    +關注

    關注

    55

    文章

    4768

    瀏覽量

    84376
  • 決策樹
    +關注

    關注

    2

    文章

    96

    瀏覽量

    13534

原文標題:玩音樂,敲架子鼓,一個被“耽誤了”的機器學習高手

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式軟件工程師如何提升自己?

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個充滿機遇和挑戰(zhàn)的領域里,如何提升自己顯得非常重要,它決定了你未來的發(fā)展方向和成就。接下來,
    發(fā)表于 06-12 11:20

    2012年三部曲之CLAD工程師

    如何實現(xiàn)自己工程師夢想,因此,我就一邊學習課程知識,一邊利用課余時間搞自己的發(fā)明,一開始我就想用labvIEW和單片機開發(fā)一個電池檢測儀。
    發(fā)表于 05-02 19:55

    FPGA工程師:不要丟掉你的夢想

    工程師職位。 至此,我的電子工程師夢終于啟航了。現(xiàn)在工作快一年了,現(xiàn)在想繼續(xù)往“深”里發(fā)展的同時,也會更多的注意一個硬件工程師“廣”這一層面的發(fā)展。畢竟,我的
    發(fā)表于 04-01 16:47

    ARM嵌入式工程師

    如何編寫程序來控制硬件。后續(xù)的“Linux驅(qū)動=軟件框架+硬件操作”,我們先在單純的裸機學習中掌握硬件操作,在后面的學習中就可以把精力放在驅(qū)動軟件框架上。
    發(fā)表于 08-24 00:51

    ARM嵌入式工程師

    如何編寫程序來控制硬件。后續(xù)的“Linux驅(qū)動=軟件框架+硬件操作”,我們先在單純的裸機學習中掌握硬件操作,在后面的學習中就可以把精力放在驅(qū)動軟件框架上。
    發(fā)表于 08-24 01:53

    ARM嵌入式工程師

    如何編寫程序來控制硬件。后續(xù)的“Linux驅(qū)動=軟件框架+硬件操作”,我們先在單純的裸機學習中掌握硬件操作,在后面的學習中就可以把精力放在驅(qū)動軟件框架上。
    發(fā)表于 08-24 03:02

    ARM嵌入式工程師

    如何編寫程序來控制硬件。后續(xù)的“Linux驅(qū)動=軟件框架+硬件操作”,我們先在單純的裸機學習中掌握硬件操作,在后面的學習中就可以把精力放在驅(qū)動軟件框架上。
    發(fā)表于 08-30 19:36

    ARM嵌入式工程師

    如何編寫程序來控制硬件。后續(xù)的“Linux驅(qū)動=軟件框架+硬件操作”,我們先在單純的裸機學習中掌握硬件操作,在后面的學習中就可以把精力放在驅(qū)動軟件框架上。
    發(fā)表于 08-31 19:02

    機器學習的應用上,軟件工程師和FPGA真的有著難以逾越的鴻溝嗎?

    轉(zhuǎn)換成VHDL.。這個開發(fā)包當然有一些局限性,但是從軟件工程師的角度上來說,這已經(jīng)是一個從試圖理解時鐘,頻率,器件類型的極大飛躍。我們這些軟件工程師比較自我,大多只關心機器
    發(fā)表于 12-11 15:54

    本文作者YY碩,來自大疆工程師機器人工程師學習計劃》精選資料分享

    本文作者YY碩,來自大疆工程師。原文標題《機器人工程師學習計劃》。前言很多朋友私信問我對機器人和人工智能感興趣,該怎么展開學習。最近稍微有點空,我寫寫我的看法。兩年前,我
    發(fā)表于 07-28 08:05

    機器人工程師學習計劃

    如何定義機器人?機器人工程師學習計劃分享
    發(fā)表于 12-20 06:11

    什么是機器學習? 機器學習基礎入門

    可以采取行動的洞察力。條形圖固然不錯,但是如果我們真正想要的是能夠機器故障和脫機之前預測到它需要服務,那么簡單的算法方法是不行的。機器
    發(fā)表于 06-21 11:06

    工業(yè)機器人發(fā)展及工程師前景

    可以從近幾年工業(yè)機器人的發(fā)展中看出,我們機器人的發(fā)展可以用迅猛一詞以形容。未來幾年,工業(yè)
    發(fā)表于 01-31 11:37 ?2620次閱讀
    工業(yè)<b class='flag-5'>機器</b>人發(fā)展及<b class='flag-5'>工程師</b>前景

    成為機器學習工程師需要了解關鍵性問題

    機器學習工程師做什么?機器學習工程師可以獲得哪些職業(yè)
    的頭像 發(fā)表于 01-19 10:00 ?2017次閱讀

    TuneGlass:我們可以用眼睛制作音樂

    電子發(fā)燒友網(wǎng)站提供《TuneGlass:我們可以用眼睛制作音樂嗎.zip》資料免費下載
    發(fā)表于 11-17 08:11 ?0次下載
    TuneGlass:<b class='flag-5'>我們</b><b class='flag-5'>可以用</b>眼睛制作<b class='flag-5'>音樂</b>嗎