・導入
私は現在、ピアノを学習している。
ただ楽譜などは読めないので、synthesiaというツールを用い、勉強中である。
自分の好きな楽曲をsynthesiaで練習するためには「MIDI」というデータを用意しなければなりません。しかし、販売されている音源は「.m4a.」というデータ形式であるので「.m4a.」→「MIDI」へ変換することが必要である。
「.m4a.」→「MIDI」へ変換することができるソフトウェアは見つからなかったのだが、「.mp3」→「MIDI」へ変換するものは発見したのでそれを利用しようとしたのだが、いかんせん正体不明のソフトウェアを自身のパソコンにインストールするというのは嫌なものなので、今回はGoogle Colaboratoryを使用し、音源データである「.mp3」をsynthesiaで利用できる「MIDI」へ変換する方法を解説する。
※「.m4a.」→「.mp3」への変換の仕方は省略する(iTunesを使用)
・Google Colabでのコード解説
まずffmpegとwgetという2つのパッケージをインストールする。
!apt install ffmpeg wget
次にlibrosaという音声データを解析するためのPythonライブラリをインストールする。これにより音声処理や音楽情報検索などのタスクに使用され、音声データの解析や処理を行うことができるようになる。
pip install librosa==0.9.2
ピアノ演奏の楽譜を推定・変換するためのPythonライブラリをインストールする。音楽の録音や演奏データから、演奏されたピアノの音楽を楽譜として復元したり、譜面データに変換したりすることができる。
pip install piano_transcription_inference
IPython.displayモジュールからAudioクラスをインポートする。 このモジュールを使用すると、音声や画像、ビデオなどのさまざまなデータをブラウザ内で直接再生や表示ができる。
from IPython.display import Audio
ピアノ演奏の音声データをMIDIファイルに変換する。
from piano_transcription_inference import PianoTranscription, sample_rate, load_audio
def transcribe(audio_path, output_midi_path):
# Load audio
audio, _ = load_audio(audio_path, sr=sample_rate, mono=True)
# Transcriptor
transcriptor = PianoTranscription(device='cuda', checkpoint_path=None)
# Transcribe and write out to MIDI file
transcriptor.transcribe(audio, output_midi_path)
ピアノ演奏の音声データをMIDIファイルに変換する
!wget https://github.com/qiuqiangkong/piano_transcription_inference/raw/master/resources/cut_liszt.mp3
IPython環境内で音声ファイル(拡張子が.mp3)を再生するためのIPython.displayモジュールのAudioクラスを使用する。
Audio('------------.mp3')
ピアノ演奏の音声ファイル(拡張子が.mp3)をMIDIファイル(拡張子が.mid)に変換する。
transcribe('------------.mp3', '------------.mid')
「----------------」の部分は自身でダウンロードしたmp3フィルム名を入力する。
このように実行され、無事MIDIデータへ変換することができた。