作者非常喜欢 YouTube 上一首名为“Supersquatting”的音乐,这首音乐由两位芯片音乐大师 Dubmood 和 Zabutom 创作,但作者始终无法找到这首音乐的模块文件。
由于音乐模块文件本质上是“开源”的,作者萌生了通过 OCR 技术从 YouTube 视频中提取音乐信息的想法。作者尝试了 Tesseract、ChatGPT 和像素差异等方法。
Tesseract 和 ChatGPT 虽然能够识别部分字符,但准确率较低。最终,作者采用了像素差异法,通过手动提取字符图像,并比较视频中字符与字符集的差异来识别字符,成功提取了大部分音乐信息。
作者在文中分享了一些 Lisp 编程技巧,例如使用 Lisp-Magick-Wand 库进行图像处理,以及利用 SLIME 的 slime-media 插件在 REPL 中显示图像。此外,还介绍了如何使用 FFmpeg 将视频帧提取为 BMP 图片,以及如何将识别结果发送到剪贴板。
最终,作者成功将提取的音乐数据导入到 OpenMPT 中,虽然生成的音乐效果不如原始模块,但满足了作者的好奇心。作者希望未来能够将提取的音乐信息应用到自己的游戏中,并表示需要先征得 Dubmood 和 Zabutom 的许可。