AI 扒谱就是拿一段录音,把里面的音符写出来,整个过程分三步。先把音频变成一张显示频率的图;再由一个用成千上万段录音训练过的模型读这张图,预测出音符;最后把这些音符对齐到节拍上,输出成乐谱和 MIDI。它今天能做得这么好,是因为最难的中间那一步以前靠人手写规则,现在换成了神经网络。神经网络从大量例子里学会了音符长什么样。
简单说
人靠耳朵扒谱,要先听出一个音,在琴上找到它,弄清它有多长,写下来,然后这样重复几千遍。AI 干的是同一件活,只是快得多,而且一口气全做完。它把声音转成能分析的数据,认出藏在数据里的音符,再把它们翻译成我们看得懂的符号。真正的“智能”在识别这一步,这几年的进步也大多出在这里。
第一步:声音变成一张图
数字录音其实就是一长串数字,描述扬声器的振膜该怎么动,每秒几万个值。从这串数字里是看不出旋律的。所以软件做的第一件事,是做一次变换,回答一个更有用的问题:每一刻,每个音高上各有多少能量?得到的结果叫频谱图。它是一张热力图,时间从左往右走,频率从下往上排,亮的地方就是正在响的音高。
这张图和钢琴卷帘给你看的画面差不多,比原始波形更接近音乐。一个长音是一道横线。一个和弦是几道横线叠在一起。敲一下鼓,是一小块竖着的模糊亮斑,横跨很多频率。声音变成这样的图,下一步就好办了,因为看图训练出来的模型读得懂这种图。
第二步:模型找出音符
从频谱图里读出音符比看上去难,因为钢琴上的一个音并不是一条干净的线。它有一个基频,上面还叠着一串泛音;几个音一起响的时候,它们的泛音会重叠、缠在一起。吉他上的低音 E 和高八度的 E 就有共同的泛音。哪些亮点是真正的音符,哪些只是别的音的泛音,分清这一点是扒谱的核心难题。
现在的系统靠神经网络解决这个问题,训练用的是大量录音,每段都配着准确的音符。钢琴这边,有些乐器能同时录下音频和每个琴键的精确按键动作,靠它们做出的数据集里有几千段演奏,和实际弹的音符完全对齐。神经网络把这些全学一遍,学会区分弹出来的音和它的泛音,也学会起音是什么样子、一个音怎么衰减。它通常对每个音高、每一小段时间预测几件事:有没有音符在这里开始,有没有音符正在响,响度多大。把这些预测拼起来,就得到一串音符事件,每个都有音高、起点、终点和力度。
像“忽略三次谐波”这样的规则,没有一条是人手写的,全是模型从例子里推断出来的。所以训练数据一多,同样的方法也能用到其他乐器上;结果一直在变好,也没人需要去重写逻辑。为什么有些音源扒出来更干净,我们在为什么 AI 扒谱的准确率会有差别里讲得更细。
第三步:音符变成能读的乐谱
有了一串带精确时间戳的音符事件,就已经能生成 MIDI、驱动钢琴卷帘了。乐谱另外还要有速度和拍子,音符也得对齐到常见的节奏时值上。在每分钟 120 拍的速度下,人弹一个四分音符不可能正好 500 毫秒,所以软件得找出曲子的基本拍子,判断小节线落在哪里,再把每个音符取整到最接近的合理时值,比如四分音符或八分音符。这一步叫量化。扒出来的谱读着清爽,还是满篇没法弹的三十二分音符,差别就在这一步。
软件还得按演奏者习惯的方式来记谱:哪些音归右手、哪些归左手,变音记号用升号还是降号,休止符放在哪。然后按不同用途输出不同格式,所以同一份扒谱结果可以是一份用来打印的 PDF、一个导进 DAW 的 MIDI 文件,也可以是一个能在打谱软件里打开的 MusicXML 文件。某处节奏或左右手分配出了错,要调的就是这一层。修正扒谱错误通常改几下就好,不用从头再来。
强在哪,难在哪
钢琴独奏是 AI 扒谱的主场。这方面的训练数据最丰富,声音也规矩,好的模型从一段干净录音里能抓到大部分音符。单件乐器弹和弦的情况叫复音扒谱,现在也处理得不错,钢琴的情况我们在钢琴复音扒谱详解里讲过。
难在哪里,也都好预料。整支乐队混成一条音轨的录音很难扒,因为模型得把好几件在同一频率范围里同时交叠的乐器理开。重失真、浓混响、音质差,都会让频谱图糊掉,准确率跟着下降。特别快的段落和特别轻的音容易漏掉。这些都不代表结果没法用,只是说实际拿到的是一份不错的初稿,还得你过一遍,离不用人看的成品还有距离。这个预期具体对应什么数字,我们在 AI 扒谱准确率里写了。
怎样扒出最好的效果
第一步的结果会传给后面每一步,所以录音是你手里最能起作用的一环。音源越干净清楚,图就越好;图越好,模型认对的就越多。尽量找这首歌最清楚的版本,告诉工具它听的是什么乐器,好让它用对模型,最后把初稿快速过一遍。用 Songscription 时,你上传一个文件或者粘贴一个链接,AI 就会走完上面三步,给你钢琴卷帘和乐谱。导出之前,在浏览器里就能播放、放慢、移调和编辑。最费耳朵的听音由 AI 来做,最后怎么改还是你说了算。
常见问题
AI 扒谱是怎么工作的?
大体分三步。第一步,软件把音频转成频谱图,就是一张显示每个时刻有哪些频率在响的图。第二步,一个神经网络来读这张图。它用成千上万段录音和对应的准确音符训练过,会预测音符在哪里开始、音高是多少、什么时候结束。第三步,把预测出的音符对齐到节拍网格上,生成 MIDI 和标准记谱。模型做的是从数据里学来的模式识别,并不照着人写好的规则走。所以等到有了大规模对齐好的数据集和现代神经网络,AI 扒谱才一下子进步了这么多。
AI 扒谱准不准?
单件乐器、录得干净的话,现在已经扒得很好了,钢琴独奏尤其如此,模型通常能抓到绝大多数音符。音频越难,准确率越低:整支乐队的密集混音、带噪音的手机录音、很重的混响、又快又叠在一起的音符,都会让扒谱变难。比较实际的预期是一份质量不错的初稿,还需要你检查一遍、改一改,别指望不经人手就拿到完美无缺的乐谱。
AI 扒谱分得清不同的乐器吗?
从一件乐器里把音挑出来,包括一台钢琴或一把吉他弹的和弦,模型处理得不错。难的是一段混音里好几件乐器同时在演奏,要把它们一一分开。常见做法是先把录音拆成分轨,再把每件乐器单独扒。如果你想要的是这首歌本身,用不着每件乐器各自的谱,也可以直接把整段混音扒成一份精简的编配,比如钢琴缩编谱。
想看看这三步用在你自己的歌上是什么样子,就上传一段录音,看它变成能读、能改的音符。
