TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

ピッチ解析

ボーカル音程モニター(Volcal Pitch Monitor)のバージョンアップ

約3ヶ月ぶりに、ボーカル音程モニター(Volcal Pitch Monitor)のバージョンアップしました。play.google.com変更点は以下の通りです。1.4.4 ・横方向にピンチズームできるようにした ・前回の縦軸の位置を保存するようにした ・縦軸に半音を表示するオプショ…

ゼロパティングを使用して自己相関関数でのピッチ推定の精度を向上する

前回の日記で自己相関関数によるピッチ推定の精度をN倍の位置のピークを使用することで向上できることを示した。Nを大きくすることで精度を高めることができるが、Nの上限はフレーム長により制限される。単純にフレーム長を長くした場合、応答性とのトレード…

自己相関関数でのピッチ推定の精度向上

以前の日記で、自己相関関数でのピッチ推定の誤差について検証した。自己相関関数で求めたピッチは、高周波数で誤差が大きくなることを示した。 ここでは、それを改善する方法について検証する。 自己相関関数のピークの位置をnとすると、周波数fは以下の式…

自己相関関数とピッチ推定の誤差

ボーカル音程モニター(Vocal Pitch Monitor)では、ピッチ推定に自己相関関数を使用している。自己相関関数を使用するメリットとしては、 ノイズに強い 低周波数での誤差が少ない という点があげられる。逆にデメリットとしては、高周波数の誤差が大きくなる…

ゼロパディングとFFTによるスペクトル推定の精度

ボーカル音程モニター(Vocal Pitch Monitor)では、ピッチ推定に自己相関関数を使用しているが、精度を高めるために、FFTの値も使用している。離散フーリエ変換(FFT)で、スペクトル推定の分解能を高めるために、ゼロパディングという手法が用いられる。ここで…

VSTプラグイン(vst_pitch)を更新

VSTプラグイン(vst_pitch)を更新しました。更新内容は、解析精度の改善と、オクターブ表示を440Hz=A3にするオプションの追加です。 オプションは要望を頂いたので対応しました。個人的には自分自身で一番使っているプログラムですが、Windows専用でDAWソフト…

自己相関関数と窓関数

以前の日記で、自己相関関数はウィーナー=ヒンチンの定理でFFTを使って高速に計算できることを書いた。自己相関関数は、同じ波形データ同士をずらしながら掛け合わせた値の合計であることを説明したが、その定義通り計算する場合は窓関数は特に必要ない。 …

ボーカル音程モニター(Vocal Pitch Monitor)をアップデートその2

前回の日記で、ボーカル音程モニター(Vocal Pitch Monitor)のアップデートについて書きましたが、解析精度に少し問題があったので、再度アップデートしました。どうやら母音が「う」の場合に、倍音を誤検知しやすくなっていました。 アップデートで倍音構成…

ボーカル音程モニター(Vocal Pitch Monitor)をアップデート

Androidアプリのボーカル音程モニター(Vocal Pitch Monitor)をアップデートしました。 マイクから入力した音声のピッチをリアルタイムで表示するアプリです。今回のアップデートで、C2以下の音程の解析精度を改善しました。 歌声やギターなどの弦楽器の音声…

FFTと窓関数に関する考察

前回の日記で、ピークの周波数の周辺のパワースペクトルの和がエネルギー(全周波数のパワースペクトルの総和)に占める割合について書いたろころ、Chachayさんからスペクトル漏れについてご指摘を頂いた。chachay.hatenablog.comFFTについてのはじめの日記を…

FFTとエネルギーについての考察(続き2)

前回の続きです。ピークの周波数の周辺のパワースペクトルの和がエネルギー(全周波数のパワースペクトルの総和)に占める割合を、400Hzから500Hzの範囲で0.1Hzおきに調べてみた。 fset = np.linspace(400, 500, 1001) range = [1, 3, 5] for r in range: peak…

FFTとエネルギーについての考察(続き)

前回の続きです。周辺のパワースペクトルの和を測ることで、周波数分解能の整数倍とのずれの影響をどれだけ抑えることができるか調べた。周辺3つのパワースペクトルの和をとった場合のピークの値を、400Hzから500Hzの間を0.1Hz間隔で調べた結果、以下のよう…

FFTとエネルギーについての考察

前回の日記で、FFTのピークの値は周波数分解能の整数倍とのずれによって値が変わるため単純には比較できないことを説明した。ここでは、周波数全体のエネルギーについては、周波数分解能の整数倍とのずれによらず一定となることについて考察する。エネルギー…

自己相関関数を使用した基本周波数の測定

昨日の日記で、FFTのピークは、周波数分解能によって決まる基底関数の最小周波数の整数倍とのずれによって値が変わることを説明した。ここでは、自己相関関数を使用すると周波数分解能によらず安定して基本周波数を測定できることを示す。 まず、FFTで倍音を…

音声スペクトルモニター(Audio Spectrum Monitor)バージョンアップ

Androidアプリ「音声スペクトルモニター(Audio Spectrum Monitor)」をバージョンアップしました。ピッチの解析精度を上げるために、機械学習を使ってパラメータの調整を行いました。声の音声データに加えてアコギの音も学習データとして使用したので、 ギタ…

ピッチ検出の精度向上について

Pitch&Rhythm Monitor のピッチ解析は自分のPCとマイクで自分の声だと、 かなりの精度で解析できていてこれ以上のチューニングは必要ないように感じている。しかし、倍音の多い声質や、マイクの周波数特性に偏りがあるような場合に、 どれだけの精度になるか…