はじめに
前回の記事は対象となるデータが通常の話し言葉だった。
今回は歌声に対してやってみた。
実験
実験条件
データ | HTSの歌声合成デモスクリプト に同梱のnitech_jp_song070_f001_003.raw |
サンプリング周波数 | 48kHz |
量子化ビット数 | 16bit |
SPTKのバージョン | 3.7 |
比較手法 | RAPT, SWIPE', DIO, REAPER |
なお歌声の内容は女性歌唱者による「でんでんむし」の歌声データである。
使用スクリプト
前回記事とほぼ同じなので割愛。ただしプロットにはSPTKのgseriesコマンドを利用。
実験結果
抽出結果については横軸がサンプル番号、縦軸がF0値である。
- RAPT
- 実行時間
- real 1.635 sec
- user 1.615 sec
- sys 0.015 sec
- 抽出結果
- 実行時間
- SWIPE'
- 実行時間
- real 1.507 sec
- user 1.449sec
- sys 0.059 sec
- 抽出結果
- 実行時間
- DIO
- 実行時間
- real 0.537 sec
- user 0.510 sec
- sys 0.022 sec
- 抽出結果
- 実行時間
- REAPER
- 実行時間
- real 4min 26.766 sec
- user 4min 26.318 sec
- sys 0.374 sec
- 抽出結果
- 実行時間
考察
REAPERの抽出速度が非常に低速である一方、DIOはRAPTやSWIPE'と比較して3倍近く高速に抽出できた。前回実験ではほぼ同等であったのに今回このような差がついたのは、RAPTやSWIPE'の抽出処理の中でサンプリング周波数依存の部分が多いと考えられる。前回は音声のサンプリング周波数が16kHzであったのに対し、今回は48kHzと3倍になっている。DIOは抽出処理全体でサンプリング周波数依存の部分が少なく、高速に処理できたと考えられる。RAPTには半ピッチ誤り(実際の半分のF0を推定してしまうこと)が散見されるが、他の3つには半ピッチ誤りは見られない。
おわりに
今回は歌声に対してF0抽出を試してみた。SWIPE'とDIOでは結果にそれほどの違いは見られないが、後者の高速性は魅力だろう。