2016-01-01から1年間の記事一覧
リアルタイム音程解析 VSTプラグイン(vst_pitch)を更新しました。更新内容は解析精度の改善です。 正しいピッチの1/3の周波数に誤って判定されることがあったので修正しました。解析方法はAndroid版のボーカル音程モニター(Vocal Pitch Monitor)と同じで、An…
3週続けて、Androidアプリのボーカル音程モニター(Volcal Pitch Monitor)をバージョンアップしました。play.google.com 今回の修正は、テンポの設定できる範囲を20BPMから250BPMに広げたのと、画面を点滅させるメトロノーム機能を追加しました。メトロノーム…
2017/2/18追記 1.0正式版がリリースされましたので、この記事の内容は古くなっています。正式版のインストールについてこちらの日記に書きました。先日TensorFlowがWindowsでビルドできるようになったという記事を書いたが、公式からバイナリのインストーラ…
先週に引き続き、Androidアプリのボーカル音程モニター(Volcal Pitch Monitor)をバージョンアップしました。今回は、移調機能とテンポ機能を実装しました。 どちらも要望をもらっていた機能です。移調機能は、管楽器などのCメジャー以外に調律された楽器の練…
Androidアプリのボーカル音程モニター(Volcal Pitch Monitor)のバージョンアップしました。今回は、UIの改善がメインです。より正確な音程を把握できるように簡易なチューナーを表示するようにしました。 メーターの表示方式は悩みましたが、上部の音階名が…
前回の日記で書いたProduct Flavorsを使って、広告版と有料版を一つのプロジェクトにするには、広告ありのlayoutと広告なしのlayoutを用意する必要がある。 layout定義 com.google.android.gms.ads.AdViewをlayoutの一部に使用していて、それ以外は共通の場…
今まで、広告版と有料版を別のプロジェクトにして、両方に同じ内容の修正を行っていたが、コードを共通化できると手間が省ける。 Android Studioのビルドバリアント機能を使えば、一つのプロジェクトにできることが分かった。ビルドバリアントには、「Build …
Androidのアプリで、FFTの計算をNDKでNativeで実装した場合に、速くなるか検証してみた。 測定条件 大浦版FFTをJavaに移植したコードとC言語のコードを使用する FFTのフレームサイズは4096 NativeはNDKでJNIのメソッドとして実装する NativeのメソッドはJava…
VSTプラグイン(vst_pitch)を更新して、MIDIノートと音程が一致する場合に色にハイライトを付けるようにした。 よりカラオケ採点機能っぽくなりました。VSTプラグインなので別途DAWソフトが必要です。Windows専用です。音程解析VSTプラグイン(vst_pitch)
GPUをGeForce GTX 1080に交換したので、CUDAを8.0にバージョンアップした。CUDA7.5でインストールしたChainerが動かなくなったため、CUDA 8.0に対応させるため、再インストールを行った。基本的に、CUDA7.5のときの手順と同じだが、環境変数INCLUDEの設定が…
※公式からWindowsバイナリが提供されたため、この記事の内容はほとんどの人には不要です。GPUをGeForce 1080に交換したので、前回の日記でWindowsでGPUを有効にしてビルドしたTensorFlowを動かしてみた。結果は以下の通り、GPUで実行できた。 tensorflow\mod…
※公式からWindowsバイナリが提供されたため、この記事の内容はほとんどの人には不要です。TensorFlowはビルドツールのBazelがWindowsに対応していないため、Windowsではビルドができなかった。Bash on Windowsを導入することで、Ubuntuのパッケージをバイナ…
data augmentationを行うために、アフィン変換を行っているときにひさしぶりに行列の内積を計算したので、行列ネタについて書きます。 行列の計算ではベクトルは縦で表し、内積は以下のように計算される。行列を初めて見たときに思った疑問は、なぜが縦なの…
画像から顔画像のみを切り出して、顔認識用の学習データを準備したい。画像データが大量に必要になるので、data augmentationで実行時に動的に増幅することを考慮する。data augmentationとして、回転、拡大縮小、平行移動をアフィン変換で行う。切り出した…
前の日記で、WindowsのAnacondaでインストールしたPythonにdlibをインストールする方法を記載したが、jpegライブラリが有効になっていないため、サンプルが実行できなかった。解決方法が見つかったので、その方法を記す。Bash on Windowsでは、dlib公式のペ…
昨日の日記でdibでマンガの顔器官検出を試したころ、全く検出できなかった。HOG特徴+SVMであらかじめ顔検出をして切り出した画像を対象とした場合どうなるか追加で検証を行った。画像の切り出しは、顔検出スクリプト(detect_object_detector.py)を修正して、…
前回の日記でサンプルで試した顔器官検出を、マンガの画像で試してみた。 学習データ準備 サンプルでは特徴点が68個あるが、入力するのが大変なので、顔の輪郭5点と左右の眼それぞれ4個ずつの13個とした。前回説明した通り、imglabツール(前の日記参照)の引…
前の日記で、dlibの顔検出を試したが、dlibには目、鼻、口、輪郭といった顔のパーツを検出する機能も実装されている。 英語では「Facial Landmark Detection」という用語が使われている。 日本語では「顔器官検出」と訳すようだ。ここでは、サンプルを試す手…
前々回の日記で、Bash on Windowsにdlibをインストールする方法を書いたが、Anaconda 4.1(64-bit)でインストールしたPython 3.5にもインストールできたので、その方法を示す。 ※2016/9/27追記:この方法でインストールしてもJPEGライブラリが有効にならない…
昨日の日記でBash on Windowsを使ってdlibで顔検出を行うことができたので、自分で用意した画像を使って、顔検出ができるか試してみた。↓この記事のようにアニメの画像での顔認識を試した例はいくつかありましたが、マンガでの例がなかったので試してみまし…
最近、物体検出に興味がありネットの記事を調べていたら、こちらの記事で使われていたdlibによるHOG特徴量+SVGが検出精度が高いらしい。bohemia.hatenablog.comdlibはC++の総合的な機械学習のライブラリで、Python用のインターフェースも用意されている。自…
VSTプラグイン(vst_pitch)を更新しました。更新内容は、解析精度の改善と、オクターブ表示を440Hz=A3にするオプションの追加です。 オプションは要望を頂いたので対応しました。個人的には自分自身で一番使っているプログラムですが、Windows専用でDAWソフト…
以前の日記で、自己相関関数はウィーナー=ヒンチンの定理でFFTを使って高速に計算できることを書いた。自己相関関数は、同じ波形データ同士をずらしながら掛け合わせた値の合計であることを説明したが、その定義通り計算する場合は窓関数は特に必要ない。 …
前回の日記で、ボーカル音程モニター(Vocal Pitch Monitor)のアップデートについて書きましたが、解析精度に少し問題があったので、再度アップデートしました。どうやら母音が「う」の場合に、倍音を誤検知しやすくなっていました。 アップデートで倍音構成…
Androidアプリのボーカル音程モニター(Vocal Pitch Monitor)をアップデートしました。 マイクから入力した音声のピッチをリアルタイムで表示するアプリです。今回のアップデートで、C2以下の音程の解析精度を改善しました。 歌声やギターなどの弦楽器の音声…
前回の日記で、ピークの周波数の周辺のパワースペクトルの和がエネルギー(全周波数のパワースペクトルの総和)に占める割合について書いたろころ、Chachayさんからスペクトル漏れについてご指摘を頂いた。chachay.hatenablog.comFFTについてのはじめの日記を…
前回の続きです。ピークの周波数の周辺のパワースペクトルの和がエネルギー(全周波数のパワースペクトルの総和)に占める割合を、400Hzから500Hzの範囲で0.1Hzおきに調べてみた。 fset = np.linspace(400, 500, 1001) range = [1, 3, 5] for r in range: peak…
前回の続きです。周辺のパワースペクトルの和を測ることで、周波数分解能の整数倍とのずれの影響をどれだけ抑えることができるか調べた。周辺3つのパワースペクトルの和をとった場合のピークの値を、400Hzから500Hzの間を0.1Hz間隔で調べた結果、以下のよう…
前回の日記で、FFTのピークの値は周波数分解能の整数倍とのずれによって値が変わるため単純には比較できないことを説明した。ここでは、周波数全体のエネルギーについては、周波数分解能の整数倍とのずれによらず一定となることについて考察する。エネルギー…
昨日の日記で、FFTのピークは、周波数分解能によって決まる基底関数の最小周波数の整数倍とのずれによって値が変わることを説明した。ここでは、自己相関関数を使用すると周波数分解能によらず安定して基本周波数を測定できることを示す。 まず、FFTで倍音を…