本文概述
- 1.安装Melodia旋律提取Vamp插件
- 2.克隆audio_to_midi_melodia项目
- 3.安装依赖项
- 4.从WAV生成MIDI文件
- 更多信息
在本文中, 我们将向你说明在Ubuntu 18.04中从WAV(原始音频格式)文件生成MIDI版本的过程是多么容易。
1.安装Melodia旋律提取Vamp插件 MELODIA插件会自动估算歌曲主要旋律的音高。更具体地, 其实现了一种算法, 该算法自动估计与一段复音(或同音或单音)音乐的主要旋律线的音高相对应的基频。给定一首歌, 该算法估算:
- 什么时候出现旋律, 什么时候不出现(也称为发声检测)
- 存在时旋律的音高
文章图片
提交表单后, 将开始下载并获得tar文件。然后, 提取zip的所有内容:
文章图片
【如何在Ubuntu 18.04中使用Python从音频文件中提取旋律并将其导出到MIDI(生成量化的MIDI)】在/ usr / local / lib / vamp目录中(创建vamp目录并在其中存储zip的内容)。请注意, 你将需要root用户访问权限才能将zip的内容提取到上述目录中。
2.克隆audio_to_midi_melodia项目 安装Melodia之后, 你现在需要获取Github上可用的Audio to Midi项目的源代码。你可以运行以下命令在计算机的某些目录中快速克隆代码:
git clone https://github.com/justinsalamon/audio_to_midi_melodia.git
audio_to_midi_melodia python脚本允许你提取歌曲的旋律并将其保存到MIDI文件。该脚本利用Melodia算法执行旋律提取, 并利用了新的vamp模块, 该模块允许直接在python中运行vamp插件(如Melodia)。提取旋律的音高轮廓后, 下一步(非常简单!)是将其分割为音符, 并对每个音符的音高进行量化, 生成一系列离散的音符, 然后可以将其导出为任何符号格式, 例如作为MIDI或JAMS。
将连续音高序列量化为一系列音符是一个活跃的研究领域, 并且仍然是未解决的问题。不过, 我们可以使用一系列试探法获得相当不错的结果:
- 将音高序列从赫兹转换为(分数)MIDI音符编号
- 将每个值四舍五入到最接近的MIDI音符整数
- (可选)应用中值滤波器, 以消除音调中的短跳(例如, 由于颤音引起的)
- 遍历音序, 每当音高变化开始新音符时
cd audio_to_midi_melodia
然后, 你将能够安装依赖项以运行项目。有关此项目的更多信息, 请访问Github上的官方资源库。
3.安装依赖项 该项目需要多个库才能正常工作。你可以通过单个命令在终端中读取requirements.txt文件来轻松安装它们:
pip install -r requirements.txt
将安装的软件包是:
- 声音文件:声音文件是基于libsndfile, CFFI和NumPy的音频库。
- 重新采样:Python中有效的采样率转换。该软件包实现了带限正弦插值方法以进行采样率转换。
- vamp:此模块允许Python代码加载和使用本机代码Vamp插件(http://vamp-plugins.org)进行音频功能分析。
- midiutil:用于编写多轨道MIDI文件的Python接口。
- jams:可重复MIR研究的JSON注释音乐规范。
- numpy:NumPy是使用Python进行科学计算的基本软件包。它包含其他内容。
- scipy:SciPy是用于数学, 科学和工程的基于Python的开源软件生态系统。
python audio_to_midi_melodia.py ./input_audio.wav ./output_file.mid 120
请注意, 导出到MIDI需要提供BPM(每分钟的拍数)值, 你可以任意定义一个值, 手动对其进行估计, 或者使用Essentia, Librosa中包含的速度估计算法之一自动对其进行估计, 或者d喜欢坚持使用vamp插件QMVP。如果导出到JAMS(直接使用从音轨估计的音符开始时间), 则不需要BPM。但是, 你也可以在Google上搜索歌曲的节奏并提供此值。在此示例中, 我们将BPM设置为120(第三个位置参数)。
你还可以更改每个合成器的最短持续时间, 并以JAMS格式导出:
python audio_to_midi_melodia.py infile outfile bpm [--smooth SMOOTH] [--minduration MINDURATION] [--jams]
更多信息
- http://www.justinsalamon.com/melody-extraction.html
- https://www.upf.edu/web/mtg/melodia
推荐阅读
- 如何在Ubuntu 18.04中使用QSSTV将慢速扫描电视传输(SSTV)音频文件转换(解码)为图像
- 如何在Symfony 4.3中实现自己的用户身份验证系统(第2部分(创建用户注册表单))
- 如何在Symfony 4.3中实现自己的用户身份验证系统(第3部分(创建登录表单和注销路径))
- Linux-HA 高可用开源方案 Keepalived VS Heartbeat 的选择
- hpwm.h头文件和hpwm.c文件,分别复制,保存成hpwm.h文件和hpwm.c文件,就能使用
- 实例4,循迹模块的使用和循迹小车的实现
- MYSQL中group_concat有长度限制!默认1024
- RHEL 6.3 as 64bit 配置yum源
- 实物2操作(stc8a8k按键使用)