17
20

More than 1 year has passed since last update.

Magentaによるピアノ自動採譜のやり方

Posted at

はじめに

Magentaを使ってピアノ演奏の音声ファイル(wavやmp3)からmidiファイルに変換する方法を調べたので、
備忘録も兼ねて記録しておきます。

※MagentaはGoogleが開発しているアート関連の機械学習プロジェクトです。

方法

Magentaに含まれる「Onsets and Frames」という機能を使います。
Onsets and Frames: Dual-Objective Piano Transcription

具体的な方法としては、3種類の選択肢があります。

  • webアプリ
  • Colab版
  • ローカル環境で実行

以降、それぞれの使い方を記載します。

webアプリ

一番お手軽な方法。
こちらのページにアクセスし、目的の音声ファイルをアップロードするだけでmidiファイルに変換してくれます。
PIANO SCRIBE

Colab版

以下のColabページでコードを見ながら変換を実行できます。
Onsets and Frames.ipynb

ピアノ曲の場合、Select Modelの所で"MAESTRO (Piano)"を選択します。

※自分が試した時は、wavファイルはOKでしたが、mp3では変換できないようでした…。

ローカル環境で実行

複数ファイルを一括で変換したりしたい場合はこれがいいと思います。

ここでは、ubuntu20.04(GPU有)環境で確認した手順を記録します。

まず、magentaをインストール。

sudo apt-get install build-essential libasound2-dev libjack-dev portaudio19-dev
conda create -n magenta python=3.7
conda activate magenta
git clone https://github.com/tensorflow/magenta.git
cd magenta
pip install -e .

次に、以下からMAESTROのcheckpointをダウンロードして適当な場所に保存します。
(github) onsets_frames_transcription

あとは、次のコマンドでcheckpointのパスと目的の音声ファイルを指定すると変換ができます。

MODEL_DIR=<path to directory containing checkpoint>
onsets_frames_transcription_transcribe \
  --model_dir="${CHECKPOINT_DIR}" <piano_recording1.wav, piano_recording2.wav, ...>

以上です。

17
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
20