深度学习生成音乐:midi文件转为mp3、wav音频

2024-01-10 10:29:40

你好,我是kelly,今天分享:midi文件转为mp3、wav音频。

一、midi文件转换的思路

midi文件转为mp3、wav,需要使用到fluidsynth工具。

fluidsynth是一个基于SoundFont 2规范的声音合成工具,没有可视化界面,使用API方式调用。下载地址为:

https://www.fluidsynth.org/

看了不少帖子,都提到使用github上的midi2audio来调用fluidsynth,实际没有必要。midi2audio只是简单对fluidsynth工具的封装,使用midi2audio反而将问题复杂化,完全可以自己使用python调用。

根据前面文章介绍,我们知道:

音频文件(mp3、wav等)≈ midi文件 +?音色文件(.sf2声音字体)。因此,还需要下载.sf2声音文件。

为方便读者使用,已经将fluidsynth工具、.sf2文件打包上传到百度网盘:

https://pan.baidu.com/s/1YJDHgmWztf3kh342sq0k3A?pwd=5gis

二、fluidsynth工具使用

步骤1:使用mido生成一个测试midi文件:

from mido import Message, MidiFile, MidiTrack

mid = MidiFile()
track = MidiTrack()
mid.tracks.append(track)

track.append(Message("program_change", channel=0, program=2, time=0))

track.append(Message("note_on", note=64, velocity=64, time=500))
track.append(Message("note_off", note=64, velocity=64, time=500))

track.append(Message("note_on", note=64, velocity=64, time=500))
track.append(Message("note_off", note=64, velocity=64, time=500))

track.append(Message("note_on", note=64, velocity=64, time=500))
track.append(Message("note_off", note=64, velocity=64, time=500))

track.append(Message("note_on", note=64, velocity=64, time=500))
track.append(Message("note_off", note=64, velocity=64, time=500))

track.append(Message("note_on", note=64, velocity=64, time=500))
track.append(Message("note_off", note=64, velocity=64, time=500))

mid.save("test1.mid")

步骤2:midi文件转为音频文件

首先查看fluidsynth命令的使用方式:

fluidsynth --help
FluidSynth runtime version 2.2.4
Copyright (C) 2000-2021 Peter Hanappe and others.
Distributed under the LGPL license.
SoundFont(R) is a registered trademark of Creative Technology Ltd.

Usage:
  fluidsynth [options] [soundfonts] [midifiles]

假定已在windows环境变量中配置好fluidsynth,midi文件、.sf2文件都在当前目录,那么midi文件转化命令为:

fluidsynth -ni "Splendid 136.sf2" test1.mid -F test110917.mp3 -r 44100

其中,?"Splendid 136.sf2"为声音字体,-F代表输出音频文件,-r代表音频的采样频率。

由于无法上传音频,这里无法展示。有兴趣朋友可以阅读下方原文,感受转换后的效果。

https://mp.weixin.qq.com/s?__biz=MzI2Mjg3NTY5MQ==&mid=2247484870&idx=2&sn=39f60856bd55856657e64402d3f9e37f&chksm=ea453a82dd32b394c91eac954c54ff702b361440e2381cc8857c7ddcc0ece3ef94c7cba0c934#rd

kelly会在公众号「kelly学技术」不定期更新Python、机器学习、深度学习等文章,感兴趣的朋友可以关注一下,期待与您交流。

文章来源:https://blog.csdn.net/qm5132/article/details/135494766
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。