如何让计算机弹奏一段白色相簿《White Album》?
嗯 [ White ALbum ] 的季节又到了,谁不想演绎一段白色相簿呢?

作为一个只在小学吹过竖笛、不懂乐理的平凡大众,未免有些过于苛刻了。但是否可以让计算机作为代替,进行演奏呢?
日常我们播放音频都是通过MP3等格式的文件,是录制音频的模拟信号。有没有一个可以让计算机根据乐谱来播放音乐的软件呢?
MIDI文件 (Musical Instrument Digital Interface,乐器数字接口) 其实就相当于给计算机看的乐谱,再加上对应乐器的音源文件,计算机就可以根据MIDI文件记录的乐谱来演奏音乐了。
因此MIDI文件一般只有几kb大小,远小于MP3几mb的大小。
那有怎么制作MIDI乐谱呢?
一般现代音乐再制作过程中都会有专业人士通过MIDI键盘和专业软件来制谱。但对于没有乐理基础确实很困难。于是乎,尝试一条捷径:是否可以把MP3文件自动转换成MIDI文件?
这个问题在最近几年得到了一定解答,字节跳动的研究人员通过一些古典钢琴数据集以人工智能的方式训练出一套高精度钢琴转谱系统:piano_transcription
https://github.com/bytedance/piano_transcription
实现了自动将钢琴类音乐文件转换为MIDI乐谱。具体使用方法参考 GitHub 说明。
可通过如下几种方式来实现 钢琴.mp3 -> .mid 文件:
1、
在 GitHub 上下载代码,代码是 Python,建议通过 Anaconda 安装。
安装依赖环境
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、
如果不想在本地配置环境可以通过以下链接使用 Google 的 colab 。该方式比较简单,感谢网友的无私分享,不过可能有一些上网难度。
https://colab.research.google.com/drive/1G31ucLLcqDH5F-kQij8O9xDdzQxeXkW5?usp=sharing#scrollTo=Gessh0z570CX
3、
通过 midishow 网站提供以上代码的工具。该方式很简单,不过有 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 好多也是钢琴曲。