Polymath:音乐创作的智能助手
在当今数字化时代,音乐创作领域也迎来了诸多智能化工具,Polymath便是其中一款颇具特色的软件。它利用机器学习技术,为音乐制作人、DJ以及ML音频开发者等带来了极大的便利。
一、核心功能
(一)音乐源分离
Polymath借助Demucs神经网络来实现音乐源分离功能。它能够将歌曲自动分离成不同的音轨(如节拍、贝斯等),就好比是一位专业的音乐剪辑师,精准地把一首完整的歌曲拆解成各个组成部分,为后续的创作和处理提供了基础。
(二)音乐结构分割与标注
通过sf_segmenter神经网络,Polymath可以对音乐的结构进行分割和标注。无论是歌曲的主歌、副歌等部分,还是其节奏、节拍等信息,都能被准确地分析出来,这对于想要深入了解音乐结构并进行创作改编的人来说,无疑是一个强大的助手。
(三)音乐音高跟踪与调式检测
Crepe神经网络在Polymath中负责音乐音高跟踪和调式检测的工作。它能够准确识别出音乐的音高(如C4、E3等),就像一个敏锐的音乐耳朵,时刻捕捉着音乐中的音高变化,让创作者对音乐的调性有清晰的把握。
(四)音乐转MIDI转录
Basic Pitch神经网络承担了将音频转换为MIDI的任务。虽然目前生成的MIDI文件存在一些需要后续在DAW中调整时间的情况,但这一功能依然为音乐创作提供了新的可能性,比如可以更方便地在电子音乐制作软件中进行进一步的编辑和创作。
(五)音乐量化与对齐
利用pyrubberband,Polymath实现了音乐的量化与对齐功能。它可以将歌曲自动量化到相同的节奏和节拍网格(如120bpm),使得不同歌曲的元素在组合时能够更加和谐、流畅,仿佛是给不同的音乐片段穿上了统一的“节奏外衣”。
(六)音乐信息检索与处理
librosa则负责音乐信息的检索与处理工作。它能够分析出音乐的音色、响度等多种信息,让创作者对音乐的各种特性有更全面的了解,从而在创作过程中更好地运用这些元素。
二、使用案例
(一)音乐创作融合
对于音乐创作者来说,Polymath让融合不同歌曲元素创造全新作品变得轻而易举。比如,可以轻松地从Funkadelic的歌曲中抓取一个节拍,从Tito Puente的作品中选取一条贝斯线,再从Fela Kuti的歌曲中找到合适的号角声,然后在极短的时间内将它们无缝整合到自己的DAW中,创作出独一无二的新作品。
(二)制作DJ混音集
利用Polymath的搜索功能来发现相关曲目,制作一个长达一小时的精致DJ混音集也不再是难事。它能够快速找到相似的歌曲,并根据需要进行量化等处理,让整个混音集的歌曲衔接更加自然、流畅,给听众带来绝佳的听觉体验。
(三)创建音乐数据集
对于ML开发者而言,Polymath简化了创建大型音乐数据集的过程。在训练生成式模型等方面,它可以快速将各种音乐文件处理成符合要求的数据集,为机器学习在音乐领域的应用提供了有力的支持。
三、安装与设置
(一)软件要求
要使用Polymath,您需要在系统中安装以下软件:ffmpeg。并且,您的Python版本需要满足 >=3.7且 <=3.10的条件。
(二)安装步骤
从终端运行以下命令进行安装:
- 首先,克隆项目仓库:
git clone https://github.com/samim23/polymath
- 然后进入项目目录:
cd polymath
- 最后安装所需的依赖包:
pip install -r requirements.txt
如果在尝试运行Polymath时遇到与basic-pitch相关的问题,可以在安装后运行以下命令:
pip install git+https://github.com/spotify/basic-pitch.git
(三)GPU支持
Polymath所使用的大多数库都通过cuda提供了原生的GPU支持。您可以按照
(四)Docker设置
如果您的系统中安装了Docker,您可以使用提供的Dockerfile快速构建一个Polymath docker图像。如果您的用户不属于docker组,记得在以下命令前添加sudo:
docker build -t polymath./
为了在主机系统和Polymath docker容器之间交换输入和输出文件,您需要创建以下四个目录:
./input
./library
./processed
./separated
然后将您想要用Polymath处理的任何文件放入input文件夹中。之后,您可以通过docker run命令运行Polymath,并传递您原本会传递给python命令的任何参数。例如,如果您在Linux OS中,可以这样调用:
docker run \ -v "$(pwd)"/processed:/polymath/processed \ -v "$(pwd)"/separated:/polymath/separated \ -v "$(pwd)"/library:/polymath/library \ -v "$(pwd)"/input:/polymath/input \ polymath python /polymath/polymath.py -a./input/song1.wav
四、操作步骤
(一)添加歌曲到Polymath库
- 添加YouTube视频到库(自动下载):
python polymath.py -a n6DAqMFe97E
- 添加音频文件(wav或mp3):
python polymath.py -a /path/to/audiolib/song.wav
- 添加多个文件一次:
python polymath.py -a n6DAqMFe97E,eaPzCHEQExs,RijB8wnJCN0
python polymath.py -a /path/to/audiolib/song1.wav,/path/to/audiolib/song2.wav
歌曲一旦添加,会自动进行分析,这需要一些时间。分析完成后,它们会被存储在数据库中(数据库位于“/library/database.p”文件夹中),之后可以快速访问。如果您想重置所有内容,只需删除该数据库文件即可。
(二)对Polymath库中的歌曲进行量化
- 将库中特定歌曲量化到120 BPM的节奏:
python polymath.py -q n6DAqMFe97E -t 120
- 将库中所有歌曲量化到120 BPM的节奏:
python polymath.py -q all -t 120
- 将库中特定歌曲量化到该歌曲本身的节奏(-k):
python polymath.py -q n6DAqMFe97E -k
歌曲经过量化后,会自动保存到“/processed”文件夹中。
(三)在Polymath库中搜索相似歌曲
- 根据库中特定歌曲搜索10首相似歌曲:
python polymath.py -s n6DAqMFe97E -sa 10
- 根据库中特定歌曲搜索相似歌曲并将所有歌曲量化到120 BPM的节奏:
python polymath.py -s n6DAqMFe97E -sa 10 -q all -t 120
- 将BPM作为搜索标准(-st):
python polymath.py -s n6DAqMFe97E -sa 10 -q all -t 120 -st -k
相似歌曲会自动被找到,并可根据需要进行量化等处理,然后保存到“/processed”文件夹中。这使得创建例如一小时长且歌曲衔接完美的混音变得更加容易。
(四)将音频转换为MIDI
python polymath.py -a n6DAqMFe97E -q all -t 120 -m
生成的MIDI文件目前总是120BPM,需要在您的DAW中进行时间调整。不过这一问题将会在未来得到解决。而且当前的Audio2Midi模型在处理鼓/打击乐时效果不太理想,未来也会通过增加音频2Midi模型选项来解决这一问题。
五、音频特征
(一)提取的音轨
Demucs神经网络有以下可在python文件中调整的设置:
- 贝斯
- 鼓
- 吉他
- 其他
- 钢琴
- 声乐
(二)提取的特征
音频特征提取器有以下可在python文件中调整的设置:
- 节奏
- 持续时间
- 音色
- 音色帧
- 音高
- 音高帧
- 强度
- 强度帧
- 体积
- 平均体积
- 响度
- 节拍
- 线段边界
- 线段标签
- 频率帧
- 频率
- 关键
六、许可证
Polymath是根据LICENSE文件中的MIT许可证发布的。
总之,Polymath作为一款强大的音乐创作辅助工具,通过其丰富的功能、便捷的使用方式以及不断完善的发展态势,为音乐领域的创作者和开发者们提供了诸多便利,值得广大音乐爱好者深入了解和使用。