音楽とかソフトとか

prosody2utau ver.0.1 というツールを作ってみました。現時点ではF0データが若干ずれる(1フレーム位ずれることがある)バグがありますが公開します。

ダウンロードはこちら

実行にはPerlが必要です。一応Perl無しで動くようにexe化したファイルも入れてありますが、環境によって動かないこともあると思います。Perlって何?コマンドラインって何?という方向けのツールではありません。

<デモ>
デモ1(Sinsy F0を適用したテト→Sinsy→両者のユニゾンの順に歌います)
 、 twaud.io
デモ2(左chがSinsy F0を適用したテト、右chがSinsy)
 、 twaud.io
デモ3(人の声を適用したもの。元の人の歌の下手さが気になりますが、そういうツールでもあるという証左ということで)
 、 twaud.io
デモ4(デモ3の歌が酷いので「おま☆かせ」で作ったものとユニゾンさせました。ピッチがずれるため音の厚み付けに使えるのかもしれません)
 、 twaud.io

以下、READMEです。

<目次>

ソフトの概要
インストール/アンインストール
チュートリアル1。Sinsyの歌唱F0をUTAU ustに適用する手順
チュートリアル2。人の歌唱F0をUTAU ustに適用する手順
ツール別解説:extractF0.tcl(extractF0.exe)
ツール別解説:fitF0.pl
ライセンスについて
謝辞
更新履歴


<ソフトの概要>

prosody2utauは、Sinsyや人の歌唱F0(ピッチ)をUTAUのustファイルに適用させるためのツール群です。現時点では、本ツールを使用するためにはperlの実行環境を整備し、基本的な使い方を知っておく必要があります。

本ツールで現在行える処理は以下のものです。

Sinsyの歌唱F0ファイル(*.lf0)をUTAU ustファイルに適用する。
 (extractF0.exeまたはextractF0.tclコマンド)

任意の歌唱wavファイルからF0を抽出し、UTAU ustファイルに適用する。
 (F0抽出 → extractF0.exeまたはextractF0.tclコマンド、UTAU ustに適用 → fitF0.plコマンド)

なお、もしこのソフトを使用したことでお使いの PC やデータなどに何らかのトラブルが生じても作者は責任を取りませんので、悪しからずご了承下さい。


<インストール/アンインストール>

(インストール)
本ツールを使用するにはPerlの実行環境が必要です。環境を整える方法はいくつかあります。例えばActivePerl、cygwin(のPerl)などです。これらの整備手順については省略します。

ダウンロードした圧縮ファイルを展開し、適当なフォルダに保存して下さい。展開すると以下のファイルが現れます。

-------------------------
extractF0.exe ... wavファイルからF0を抽出してファイル保存します。単体で動作します。
extractF0.tcl ... 上記と同じ。実行にはTcl/Tkが必要です。
extractF0-init.tcl ... 上記ツールの初期設定ファイル。
fitF0.pl ... F0ファイルを指定したUTAU ustファイルに適用します。
fitF0.exe ... 上記スクリプトをexe化したものです(動作未検証)。
README.txt ... 本ファイル。
-------------------------

(アンインストール)
インストールしたフォルダを削除して下さい。


<チュートリアル1。Sinsyの歌唱F0をUTAU ustに適用する手順>

  1. UTAUでデータを作る(説明上ファイル名=sample.ustとします)。
  2. sample.ustをCadenciiなどのツールでsample.xmlに変換する。
  3. Sinsyのサイトでsample.xmlを入力し、合成音を作る。
  4. 合成結果ファイルのうち、lf0形式のファイルを保存する。(ファイル名=sample.lf0)
  5. 本ツールのディレクトリ上で以下のコマンドを実行する。

     ./fitF0.pl sample.ust sample.lf0 sample-new.ust
     (sample.ustのPiches=行にsample.lf0を適用し、sample-new.ustに保存する)

  6. UTAUでsample-new.ustを開き、合成する。(何度か試行錯誤される場合はキャッシュを消した方が良い場合もあります)


<チュートリアル2。人の歌唱F0をUTAU ustに適用する手順>

  1. UTAUでデータを作る(説明上ファイル名=sample.ust、sample.wavとします)。
  2. sample.wavに合わせて歌い、wavファイルを作る(ファイル名=human.wav)。REAPERなどのDAWソフトで、sample.wavを再生するトラックを作り、それに合わせて別トラックに声を録音し、そのトラックのみをwav化すると良いです。
  3. extract.exeを実行し、human.wavを指定し、「抽出開始」を押す。(human.wavからF0を抽出し、human.f0というファイル名で保存します)
  4. 本ツールのディレクトリ上で以下のコマンドを実行する。

     ./fitF0.pl -type ascii -scale hz sample.ust human.f0 sample-new.ust
     (sample.ustのPiches=行にhuman.f0を適用し、sample-new.ustに保存する)

  5. UTAUでsample-new.ustを開き、合成する。(何度か試行錯誤される場合はキャッシュを消した方が良い場合もあります)


<ツール別解説:extractF0.tcl(extractF0.exe)>

extractF0は、任意の音声ファイルからF0を抽出するツールです。exeは単体で動作可能ですが、tclファイルを実行する場合にはTcl/Tkが必要です。GUIでの実行方法とCUIでの実行方法があります。

[ GUIの実行方法 ]

extractF0を起動すると設定窓が現れます。設定可能な項目は以下のとおりです。





入力wavファイル解析対象のファイルを指定します。wav、mp3、aiff、au形式等に対応しています。
最低F0値入力ファイルに入っているF0の最低値[Hz]を指定します。通常は変更不要ですが、F0抽出ミスのある場合に適切に変更するとミスを削減できることがあります。
最高F0値入力ファイルに入っているF0の最高値[Hz]を指定します。通常は変更不要ですが、F0抽出ミスのある場合に適切に変更するとミスを削減できることがあります。
刻み幅F0の抽出間隔[秒]を指定します。
F0抽出方法F0抽出アルゴリズムを選択します。
ESPS...entropic社の開発したアルゴリズムです。元々商用品でしたが現在はフリーで使うことが出来ます。
AMDF...自己相関のピーク検出を単純化した手法です。多くの場合、ESPSの方が高精度だと思います。

「抽出開始」を押すとF0を抽出し、テキスト形式で保存します。ファイル名は、入力ファイル名の拡張子を.f0に変えたもので、入力ファイルと同じフォルダに保存します。

[ CUIの実行方法 ]

引数を付けてextractF0を起動するとコマンドライン上で実行します。コマンドラインの書式は以下のとおりです。

 (Tcl/Tkインストール済みのPC)
 ./extractF0.tcl [オプション] 入力音声ファイル [出力F0ファイル]

 (Tcl/Tkの無いPCの場合)
 ./extractF0.exe -- [オプション] 入力音声ファイル [出力F0ファイル]

  オプション:
    -min 値 ... 最低F0値(Hz)
    -max 値 ... 最高F0値(Hz)
    -framelength 値 ... F0刻み幅(秒)
    -method (ESPS|AMDF) ... F0抽出アルゴリズム

 ※各項目は上記GUIの説明をご覧下さい。

 末尾の出力F0ファイルを省略した場合は標準出力にF0系列を出力します。

なお、F0抽出は音声によっては失敗することがあります。その際はUTAUのピッチエディタ上などで修正して下さい。


<ツール別解説:fitF0.pl>

fitF0.plは、F0ファイルをUTAU ustファイルに適用するPerlスクリプトです。F0には上述のextractF0で作成したファイル、Sinsyの出力したlf0ファイルなどを指定できます。実行にはPerl実行環境が必要で、コマンドラインから実行します。

コマンドラインの書式は以下のとおりです。

 ./fitF0.pl [オプション] 入力ustファイル 入力F0ファイル [出力ustファイル]

  オプション:
    -framelength 値 ... 入力F0の刻み幅[msec] (default=5)
    -type (ascii|float) ... 入力F0ファイルのデータ形式(default=float)
    -scale (ln|hz|cent) ... 入力F0の単位 (default=ln)
    -smooth val ... 平滑化を行う回数 (default=5)回数を増やす程F0が滑らかになります。

    -mix val ... ustのPichesと入力F0との混合比。0のときはust Pichesそのまま、1のときは入力F0をust Pichesにコピーします。中間値では両者の加重平均をとります。(default=1)
    -transpose val ... 入力F0の移調量。単位はセミトーン。1で半音上がります。 (default=0)
    -slide val ... 入力F0を指定量前後にずらします。単位はmsec。正のとき入力F0が後ろにずれます。(default=0)
    -accel VAL1toVAL2 ... 入力F0のテンポをVAL1からVAL2に変更します。単位はBPM。例えば100から120に変更するなら-accel 100to120 と書きます。

オプションのデフォルト値はSinsyのlf0ファイル形式に対応させています。

末尾の出力ustファイルを省略した場合は標準出力に結果出力します。

-smooth では入力F0を平均平滑化して滑らかにします。これは子音部周辺の細かいF0変動を低減するためです。しかし平滑化を何度もかけるとビブラートの振幅も小さくなってしまいます。平滑化を沢山行いつつビブラートを弱めないようにしたいときは、例えばSinsyで「ビブラート強度」を1より大きくとるという方法があります。


<ライセンスについて>

本ツールはフリーですが、ファイルによってライセンスが異なります。extractF0.tcl、fitF0.pl は修正BSDライセンスです。extractF0.exeはGNU GPLです。GNU GPLにしている理由は、exeが含んでいるsnackのmp3に関するコードがGNU GPLであるためです。


<謝辞>

アイコン画像には http://www.jonasjohn.de/lab/free-icons/ のパブリックドメインなものを使わせていただきました。


<更新履歴>

version 0.1 (2011/05/07)
- 公開。ただしfitF0.plの時刻計算が若干ずれることがある。
スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する