
書きたいプログラムのアイデアはあるのですが、音楽のオーディオ (最初の近似としてはギター 1 本) を音符 (例: 音楽の OCR/音声認識) に変換する方法が必要です。
Googleが見つけたインテリスコアしかし、これは私が必要とする以上のパワー(複数の機器)を備えていると宣伝していますが、プロプライエタリであり、私は無料で GPL 互換のものを探しています。
これを実行できる無料/GPL プログラムまたはライブラリはありますか?
答え1
答え2
Google が推奨しましたwaon
。
元々はhttp://waon.sourceforge.net/私は、gtk ベースの GUI を含めて、Xubuntu 18.04 でコンパイルしました。
ワオンとは
WaoN は Wave-to-Notes トランスクリプターです。つまり、Tuukka Toivonen の timidity (およびその派生 timidity++) の逆です。(...) 私の本来の目的は、お気に入りのピアニストの音からハーモニーのボイシングを拾うことです。(...)
現在、WaoN には 3 つのプログラムが含まれています。
waon: transcriber (wav-to-mid converter) pv: phase vocoder for time-streching and pitch-shifting gwaon: GUI for waon and pv
WaoN は GNU General Public License に基づいてリリースされています。
ソースコードの入手先
CVSは時代遅れで、SourceForgeは廃止されつつあります。CVSベースの履歴をgitに変換し、https://github.com/fidergo-stephane-gourichon/waon。
何か選択肢はありますか?
実行可能ファイルが提供するオプションの概要を次に示します。
./waon --help
WaoN - a Wave-to-Notes transcriber, Version 0.10
Copyright (C) 1998-2007 Kengo Ichiki <[email protected]>
Web: http://waon.sourceforge.net/
WaoN is a Wave-to-Notes transcriber,
that is, a converter from sound file to midi file.
Usage: ./waon [option ...]
Options:
-h --help print this help.
-v, --version print version information.
OPTIONS FOR FILES
-i --input input wav file (default: stdin)
-o --output output mid file (default: 'output.mid')
options -i and -o have argument '-' as stdin/stdout
-p --patch patch file (default: no patch)
FFT OPTIONS
-n sampling number from WAV in 1 step (default: 2048)
-w --window 0 no window
1 parzen window
2 welch window
3 hanning window (default)
4 hamming window
5 blackman window
6 steeper 30-dB/octave rolloff window
READING WAV OPTIONS
-s --shift shift number from WAV in 1 step
(default: 1/4 of the value in -n option)
PHASE-VOCODER OPTIONS
-nophase don't use phase diff to improve freq estimation.
(default: use the correction)
NOTE SELECTION OPTIONS
-c --cutoff log10 of cut-off ratio to scale velocity of note
(default: -5.0)
-r --relative log10 of cut-off ratio relative to the average.
(default: no relative cutoff
= absolute cutoff with the value in -c option)
-k --peak peak threshold for note-on, which ranges [0,127]
(default: 128 = no peak-search = search only first on-event)
-t --top top note [midi #] (default: 103 = G7)
-b --bottom bottom note [midi #] (default: 28 = E1)
Here middle C (261 Hz) = C4 = midi 60. Midi # ranges [0,127].
-a --adjust adjust-pitch param, which is suggested by WaoN after analysis.
unit is half-note, that is, +1 is half-note up,
and -0.5 is quater-note down. (default: 0)
DRUM-REMOVAL OPTIONS
-psub-n number of averaging bins in one side.
that is, for n, (i-n,...,i,...,i+n) are averaged
(default: 0)
-psub-f factor to the average, where the power is modified as
p[i] = (sqrt(p[i]) - f * sqrt(ave[i]))^2
(default: 0.0)
OCTAVE-REMOVAL OPTIONS
-oct factor to the octave removal, where the power is modified as
p[i] = (sqrt(p[i]) - f * sqrt(oct[i]))^2
(default: 0.0)
答え3
ソフトウェアによる解決策は提供できませんが、根本的な問題、つまり任意の音源の「自然な」音色を認識するという問題に対処することはできます。このパズルの欠けているピースは、スペクトログラムの位相部分を効果的に利用して、再割り当てスペクトル内の周波数をより自然な位置(スペクトル内の「瞬間周波数」)にシフトします。その結果、スペクトルがチャープ ラインに集中するようになります。同様の考慮事項は、スケイログラムにも適用されます。スケイログラムは、周波数が線形スケールではなく対数スケールである点でスペクトログラムと異なります。
Loris パッケージは、私が知る限り、瞬間周波数を推定するためのルーチンを含む一連のルーチンを提供するパッケージの 1 つです。
独自のソフトウェアを作成している場合は、スペクトログラムまたはスカログラムの再割り当て方法を直接実装し、それを分析の中間ステップとして使用することもできます。 1 つの可能性は、このデモ ビデオの説明部分で提供している数式を試してみることです。 ウェーブレット ベースのスカログラム用に特別に調整された「シンクロスクイージング」と呼ばれる方法があり、これは再割り当てのスカログラフィック アナログを実行します。
私が挙げた式ははるかに単純で、同様の分析をより直接的に実行し、さらに、スカログラムの個々のコンポーネントも本物のサウンド コンポーネントである (位相もあるため) という利点があり、全体のサウンドは実際にはコンポーネント サウンドの合計になります。言い換えると、「逆」変換 (スカログラムからサウンドへ) は単なる加算です。