如何讓計算機彈奏一段白色相簿《White Album》?
嗯?[ White ALbum ] 的季節(jié)又到了,誰不想演繹一段白色相簿呢?

作為一個只在小學吹過豎笛、不懂樂理的平凡大眾,未免有些過于苛刻了。但是否可以讓計算機作為代替,進行演奏呢?
日常我們播放音頻都是通過MP3等格式的文件,是錄制音頻的模擬信號。有沒有一個可以讓計算機根據(jù)樂譜來播放音樂的軟件呢?
MIDI文件?(Musical Instrument Digital Interface,樂器數(shù)字接口) 其實就相當于給計算機看的樂譜,再加上對應樂器的音源文件,計算機就可以根據(jù)MIDI文件記錄的樂譜來演奏音樂了。
因此MIDI文件一般只有幾kb大小,遠小于MP3幾mb的大小。
那有怎么制作MIDI樂譜呢?
一般現(xiàn)代音樂再制作過程中都會有專業(yè)人士通過MIDI鍵盤和專業(yè)軟件來制譜。但對于沒有樂理基礎確實很困難。于是乎,嘗試一條捷徑:是否可以把MP3文件自動轉換成MIDI文件?
?這個問題在最近幾年得到了一定解答,字節(jié)跳動的研究人員通過一些古典鋼琴數(shù)據(jù)集以人工智能的方式訓練出一套高精度鋼琴轉譜系統(tǒng):piano_transcription
https://github.com/bytedance/piano_transcription
實現(xiàn)了自動將鋼琴類音樂文件轉換為MIDI樂譜。具體使用方法參考 GitHub 說明。
可通過如下幾種方式來實現(xiàn)?鋼琴.mp3 -> .mid 文件:
1、
在 GitHub 上下載代碼,代碼是 Python,建議通過 Anaconda 安裝。
安裝依賴環(huán)境
pip install piano_transcription_inference
通過一下代碼即可調用
from piano_transcription_inference import PianoTranscription, sample_rate, load_audio?
# Load audio?
(audio, _) = load_audio('resources/cut_liszt.mp3', sr=sample_rate, mono=True)?
# Transcriptor?
transcriptor = PianoTranscription(device='cuda') ? ?# 'cuda' | 'cpu'?
# Transcribe and write out to MIDI file?
transcribed_dict = transcriptor.transcribe(audio, 'cut_liszt.mid')
改為 cpu 模式。當然也可配置 cuda cudnn 選擇 cuda 模式,通過?GPU 加速運算,不過配置稍微復雜,并且顯卡不好可能會顯存不足的情況,詳情百度。
2、
如果不想在本地配置環(huán)境可以通過以下鏈接使用 Google 的 colab 。該方式比較簡單,感謝網(wǎng)友的無私分享,不過可能有一些上網(wǎng)難度。
https://colab.research.google.com/drive/1G31ucLLcqDH5F-kQij8O9xDdzQxeXkW5?usp=sharing#scrollTo=Gessh0z570CX
3、
通過 midishow 網(wǎng)站提供以上代碼的工具。該方式很簡單,不過有 1 分鐘的轉換時長限制。?
https://www.midishow.com/tool/mp3-to-midi
在得到? .mid 文件后,就可以通過以下幾種方式,對其進行播放了:
1、
手機電腦自帶的播放器,比如 windows media player
2、
FreePiano 一款將電腦鍵盤映射為鋼琴鍵的開源軟件,并能可視化彈奏的按鍵
http://freepiano.tiwb.com/cn/
3、
一款在線鋼琴軟件,通過 MIDI 播放音樂,支持可視化彈奏的按鍵
https://www.xiwnn.com/piano/
以下是將 Leaf - WHITE ALBUM PIANO.mp3 通過以上方式轉換為 .mid 文件,使用 free piano 播放的效果演示。

原曲鏈接:
http://music.163.com/song?id=32303027&userid=309153929?
當然也可以將 白色相簿4 (春物,大霧)的音樂同樣讓進行計算機進行演奏,畢竟 BGM 好多也是鋼琴曲。