Basic Pitch は、Spotify の Audio Intelligence Lab によって開発された軽量ニューラル ネットワークを使用した自動音楽転写 (AMT) 用の Python ライブラリです。小さくて使いやすく、兄弟リポジトリ経由でpip install
とnpm install
が可能です。
基本的なピッチは単純かもしれませんが、「基本」とは程遠いものです。 basic-pitch
は効率的で使いやすく、マルチピッチのサポート、楽器間で一般化する機能、および音符の精度は、はるかに大規模でリソースを大量に消費する AMT システムと競合します。
互換性のあるオーディオ ファイルを提供すると、basic-pitch がピッチ ベンドを備えた MIDI ファイルを生成します。基本ピッチは楽器に依存せず、ポリフォニック楽器にも対応しているため、使用する楽器に関係なく、お気に入りの音楽の採譜を自由に楽しむことができます。基本的なピッチは、一度に 1 つの楽器で最もよく機能します。
このライブラリは、ICASSP 2022 での Spotify の出版に合わせてリリースされました。この研究の詳細については、論文「多声音符の転写とマルチピッチ推定のための軽量の楽器に依存しないモデル」で読むことができます。
このライブラリを学術研究で使用する場合は、引用することを検討してください。
@inproceedings { 2022_BittnerBRME_LightweightNoteTranscription_ICASSP ,
author = { Bittner, Rachel M. and Bosch, Juan Jos'e and Rubinstein, David and Meseguer-Brocal, Gabriel and Ewert, Sebastian } ,
title = { A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation } ,
booktitle = { Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP) } ,
address = { Singapore } ,
year = 2022 ,
}
この文書で説明したものよりも基本ピッチを改善したことに注意してください。したがって、学術研究で Basic Pitch の出力を使用する場合は、使用されたコードのバージョンを引用することをお勧めします。
何らかの理由で、まだ完全にインスピレーションを得ていない場合、または全体的な雰囲気などを完全に理解していない場合は、当社のきびきびとしたデモ Web サイト、basicpitch.io をチェックして、提供された音楽オーディオで当社のモデルを試してください。 !
basic-pitch
PyPI 経由で利用できます。現在のリリースをインストールするには:
pip install basic-pitch
Basic Pitch を最新バージョンに更新するには、上記のコマンドに--upgrade
を追加します。
Basic Pitch には、オリジナルの TensorFlow モデルと、CoreML、TensorFlowLite、ONNX に変換された TensorFlow モデルが付属しています。デフォルトでは、 Python>=3.11 を使用していない限り、Basic Pitch は TensorFlow を依存関係としてインストールしません。代わりに、デフォルトでは、CoreML は MacOS にインストールされ、TensorFlowLite は Linux に、ONNX は Windows にインストールされます。デフォルトのモデル推論ランタイムと一緒に TensorFlow をインストールしたい場合は、 pip install basic-pitch[tf]
を介して TensorFlow をインストールできます。
デフォルトでは、Basic Pitch は次の順序でモデルをロードしようとします。
さらに、モジュール変数 ICASSP_2022_MODEL_PATH は、デフォルトでリスト内の最初に使用可能なバージョンになります。
この優先順位リストを上書きする方法を以下で説明します。他のすべてのモデルのシリアル化は TensorFlow から変換されたため、可能な場合は TensorFlow を使用することをお勧めします。注意 Basic Pitch は、Basic Pitch をインストールして実行する際のユーザー時間を節約するために、デフォルトでは TensorFlow をインストールしません。
このライブラリはコマンド ライン ツール インターフェイスを提供します。基本的な予測コマンドは、
にあるオーディオの MIDI ファイル トランスクリプションを生成し、
に保存します。
basic-pitch < output-directory > < input-audio-path >
例えば:
basic-pitch /output/directory/path /input/audio/path
一度に複数の音声ファイルを処理するには:
basic-pitch < output-directory > < input-audio-path- 1> < input-audio-path- 2> < input-audio-path- 3>
オプションで、次のいずれかのフラグを予測コマンドに追加して、予測出力の追加形式を
に保存できます。
--sonify-midi
、MIDI ファイルの.wav
オーディオ レンダリングを追加で保存します。--save-model-outputs
、生のモデル出力を NPZ ファイルとしてさらに保存します。--save-note-events
予測されたノート イベントを CSV ファイルとして追加保存します。デフォルト以外のモデル タイプを使用する場合 (たとえば、TF の代わりに CoreML を使用する)、 --model-serialization
引数を使用します。 CLI は、ロードされたモデルを希望のタイプに変更します。
さらにパラメータ制御を確認するには、次を実行します。
basic-pitch --help
予測する()
basic-pitch
独自の Python コードにインポートし、 predict
関数を直接実行して
を指定し、モデルの予測結果を返します。
from basic_pitch . inference import predict
from basic_pitch import ICASSP_2022_MODEL_PATH
model_output , midi_data , note_events = predict ( < input - audio - path > )
&
( float ) は、モデルによって返される、許容される最大および最小のノート周波数を Hz 単位で設定します。この範囲外の周波数を持つピッチ イベントは、予測結果から除外されます。model_output
生のモデル推論出力です。midi_data
model_output
から派生した転写された MIDI データです。note_events
model_output
から派生したノート イベントのリストです。注: 前述したように、ICASSP_2022_MODEL_PATH のデフォルトは、TensorFlow、CoreML、TensorFlowLite、ONNX のリストで最初にサポートされるランタイムになります。
ループ内のpredict()
ループ内で予測を実行するには、冗長で遅いモデルの読み込みを避けるために、モデルを自分で読み込み、繰り返しの予測呼び出しに使用される読み込まれたモデル オブジェクト自体をpredict()
に提供する必要があります。
import tensorflow as tf
from basic_pitch . inference import predict , Model
from basic_pitch import ICASSP_2022_MODEL_PATH
basic_pitch_model = Model ( ICASSP_2022_MODEL_PATH ))
for x in range ():
...
model_output , midi_data , note_events = predict (
< loop - x - input - audio - path > ,
basic_pitch_model ,
)
...
予測して保存()
サポートされているさまざまな出力ファイル タイプの生成と保存をbasic-pitch
調整したい場合は、 predict
直接使用する代わりに、 predict_and_save
使用できます。
from basic_pitch . inference import predict_and_save
predict_and_save (
< input - audio - path - list > ,
< output - directory > ,
< save - midi > ,
< sonify - midi > ,
< save - model - outputs > ,
< save - notes > ,
)
どこ:
&
basic-pitch
の読み取り/書き込み先のディレクトリ パス。
への保存を制御するbool
に保存することを制御するbool
に保存することを制御するbool
サポートされているオーディオ コーデック
basic-pitch
、 librosa
のバージョンと互換性のあるすべてのサウンド ファイルを受け入れます。
.mp3
.ogg
.wav
.flac
.m4a
モノラルチャンネルオーディオのみ
モデルへの入力としてステレオ オーディオを使用することもできますが、予測時に入力のチャネルはモノラルにダウンミックスされ、分析および転写されます。
ファイルサイズ/音声の長さ
このモデルは、任意のサイズまたは長さのオーディオを処理できますが、より大きな/長いオーディオ ファイルの処理は、マシンの利用可能なディスク容量によって制限される可能性があります。これらのファイルを処理するには、ファイルのオーディオをストリーミングし、一度にオーディオのウィンドウを処理することをお勧めします。
サンプルレート
入力オーディオのサンプル レートは任意ですが、すべてのオーディオは処理前に 22050 Hz にリサンプリングされます。
基本ピッチのこの実用的な VST バージョンを開発してくれた DamRsn に感謝します。 - https://github.com/DamRsn/NeuralNote
basic-pitch
への貢献は大歓迎です!詳細については、CONTRIBUTING.md を参照してください。
basic-pitch
著作権は 2022 Spotify AB にあります。
このソフトウェアは、Apache License バージョン 2.0 (「Apache ライセンス」) に基づいてライセンス供与されています。どちらかの Apache ライセンスの条項をすべて受け入れることを条件としてのみ、このソフトウェアの使用を管理するためにどちらのライセンスを選択することもできます。
Apache ライセンスのコピーは次の場所で入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用される法律で義務付けられている場合または書面による同意がない限り、Apache ライセンスまたは GPL ライセンスに基づいて配布されるソフトウェアは、明示または黙示を問わず、いかなる種類の保証や条件もなく、「現状のまま」で配布されます。 Apache ライセンスに基づく許可と制限を規定する特定の言語については、「Apache ライセンス」を参照してください。