2014年03月

唄詠 Ver 5.55 を公開

唄詠_SettingWindow自動 HANASU ツール「唄詠(うたよみ)」をバージョンアップしました。

主な改良点は、
  • 音声合成速度の高速化(マルチスレッドレンダリングと逐次合成)
  • 連続音音源での読み上げでケロることがあるのを改善。
  • 音源情報登録・修正時の試聴機能を搭載。
  • 音源情報登録・修正時の音域選択で、ピアノ画面による直感的な指定方法を搭載。

目玉は高速化です。

複数の文字を同時に合成するマルチスレッドレンダリングでは、こちらの記事のように、8 スレッド CPU で約 5 倍近い高速化を実現しています。

また、逐次合成モードを搭載したことにより、テキストスピーチソフトとの相性はあるものの、長い文章でも一瞬で発声できるようになりました。どのテキストスピーチソフトで逐次合成が有効かは、ヘルプを参考にして下さい。

地味ながら重要な改善点としては、連続音音源でのケロりを改善しました。連続音音源で、今までよりも自然にしゃべってくれるようになりました。


UTAU resampler.exe のパラメーター解説

歌唱合成ツール UTAU に付属する resampler.exe に渡すパラメーター(コマンドライン引数)について、最近のバージョンの情報を網羅的にまとめているサイトが見当たらなかったので、ここでまとめてみた。UTAU 0.4.16 に付属の resampler.exe Ver14.02r について記している。

本稿は公式なものではなく、間違っている情報があるかもしれないことに注意。間違いを見つけた方は教えていただけると助かります。

resampler.exe を起動する際のパラメーターの構文は、
resampler.exe <input file> <output file> <pitch percent> <velocity> [<flags> [<offset> <length require> [<fixed length> [<end blank> [<volume> [<modulation> [<pitch bend>...]]]]]]]
[] で括られたパラメーターは省略可能。<flags>~<pitch bend> までを全部省略することもできるし(一番外側の [] を省略)、<flags> を残して <offset>~<pitch bend> までを省略することもできる(2 番目の [] を省略)。省略できるのは後方のパラメーターのみなので、<flags> を省略して次の <offset> は省略しない、というようなことはできない。

各パラメーターについて


名前概要
input file文字列原音ファイル名
C:\Voice\春歌ナナ\か.wav

UTAU 音源の原音ファイル。歌唱したい歌詞に対応した原音 WAVE ファイルを指定する。

連続音音源なら「C:\Voice\ぱみゅ\_かかきかく.wav」などとなる。

名前概要
output file文字列出力ファイル名
C:\Project\春風ソング.cache\1_か_C4_wNAwRt.wav

歌唱合成結果を保存する WAVE ファイル。

名前概要
pitch percent文字列音高
G#4

PitchPercent歌唱する音程を指定する。

表記は UTAU の GUI(左側のピアノロール)と同じで、音名とオクターブ数字を用いる。オクターブ数字は、大きい方が高い音となる。

名前概要
velocity小数子音速度
100

子音部(固定範囲)の伸縮率。0~200 の範囲で指定可能で、100 で伸縮なし。

値が大きいほど速度が上がり、時間軸上では縮小される。子音速度 0 で時間軸上 2 倍、200 で半分。

UTAU では、子音速度の比率で STP・先行発声・オーバーラップを伸縮している模様。また、食い込み補正(後述)の計算は伸縮後に行う。

名前概要
flags文字列フラグ
g-3Y90

音符のプロパティで指定できるフラグの他、下記が使用できる模様。
  • N: No formant filter
  • G: (Re)Genetate frequency list
  • T: Export text frequency list

名前概要
offset小数オフセット
5.0

原音設定の左ブランクに相当する。単位はミリ秒。

名前概要
length require整数音長
550

音の長さをミリ秒単位で指定する。

例えば、テンポ 60 において四分音符であれば、音符としての長さは 1,000 ミリ秒となる。UTAU ではこの他に、以下のような要素を加味して length require を算出している模様。
  1. 音符としての長さ+先行発声(食い込み補正前)-後続先行発声(食い込み補正後)+後続オーバーラップ(食い込み補正後)+50
  2. 計算結果が fixed length より小さい場合は fixed length にする
  3. 50 単位で四捨五入(24 捨 25 入)する

名前概要
fixed length小数子音部
115.0

原音設定の子音部に相当する。単位はミリ秒。

名前概要
end blank小数右ブランク
247.0

原音設定の右ブランクに相当する。単位はミリ秒。

名前概要
volume小数音量
100

音量を % 単位で指定する。

名前概要
modulation小数モジュレーション
0

原音の音の揺らぎをどれだけ残すかを % 単位で指定する。

0 を指定すれば、原音の音程が揺らいでいても、<pitch percent> で指定した音程で安定する。

名前概要
pitch bend文字列ピッチベンド
!120 AA#88#ABAKAbA0BSB2Cc

ピッチ曲線を「!<テンポ> <ピッチ文字列>」で表現する。

ピッチ文字列は、2 文字で 1 つのピッチベンド点を表す。<pitch percent> で指定した音高からのピッチのずれ(セント単位)を 12 ビット符号付き整数(マイナス値の場合は、4096-n で OK)で表した上で、Base 64 エンコードをして ASCII 2 文字にする。

例えば、1 セント高いピッチの場合は、
1(10 進数)→ 000000 000001(12 ビット 2 進数)→ AB(Base64)
となり、逆に、1 セント低いピッチの場合は、
-1(10 進数)→ 4096-1 = 4095(10 進数)→ 111111 111111(12 ビット 2 進数)→ //(Base64)
となる。

ピッチ指定の間隔は四分音符の 96 分の 1 で、その間隔ごとのピッチベンド点を、ASCII 2 文字で連ねていく。

例えば、<pitch percent> が C4 で、ピッチ文字列が AAABAC なら、
ド→ドより 1 セント高い音→ドより 2 セント高い音
のように推移していく。

同じ高さの点が続く場合は、Base64 の直後に「#回数#」を付加する。

例えば、1 セント高い音が 50 回続くなら、
AB#50#
となる。

ピッチ文字列が 2 文字の場合は、末尾に AA を付与するかもしれないが未確認。

ピッチベンドの先頭の位置は、音符の先頭 - 先行発声 - STP。

食い込み補正について

食い込み補正先行発声が大きく、直前の音符の長さが短い場合、直前の音符よりも先に発声されてしまうという状況が発生する可能性がある。

例えば、テンポ 360 で四分音符の「あ」「い」が続いている場面を考える。テンポ 360 において四分音符は 167 ミリ秒の長さがあるが、「い」の先行発声が 200 ミリ秒だとすると、「い」の方が先に発生されてしまう(ここでは「あ」の先行発声は 0 ミリ秒と仮定する)。

そういうおかしな状況が発生しないよう、UTAU では、直前の音符の半分の長さ以上に先行発声が食い込んでいる場合は、直前の音符が半分生き残るように、先行発声などの長さを調整する。

例の状況では、先行発声を約 83 ミリ秒にして、「あ」が半分発生されるようにする。

この補正のことを、(俺は勝手に)食い込み補正と呼んでいる。食い込み補正の処理は以下。

◆食い込み補正の発動条件

先行発声-オーバーラップ > 直前の音符の長さの半分
であれば発動

◆食い込み補正率

食い込み補正率 = 直前の音符の長さの半分÷(先行発声-オーバーラップ)

◆食い込み補正後の数値

食い込み補正後の先行発声 = 補正前の先行発声×食い込み補正率
食い込み補正後のオーバーラップ = 補正前のオーバーラップ×食い込み補正率
食い込み補正後の STP = 補正前の先行発声-補正後の先行発声

関連記事


参考 URL


更新履歴

  • 2014/03/23 デルタさん・masao さんのアドバイスを含め length require について加筆。その他いくつか更新。




唄詠の高速化について

自動 HANASU ツール「唄詠」について、高速化すべく作業中。

手法としてはよくある方法で、UTAU のツールを複数同時起動するというもの(いわゆるマルチスレッドレンダリング)。

で、実際のところ、どのくらい速くなるのか。数人のテスターの方に協力して頂いた結果が以下。

マルチスレッドレンダリング

表の見方だが、CPU の「コア」は物理コア数、「スレ」はスレッド数。Intel 系はハイパースレッディング(SMT)を実装していることがあり、物理コア数の 2 倍のスレッドを同時に走らせることができる。

「Temp」はテンポラリフォルダがあるデバイスの種類。ここが「HDD」なら、ハードディスク上にテンポラリフォルダがある。

測定結果の「半スレ」「全スレ」はそれぞれ、UTAU ツールを 1 つだけ起動して音声合成した場合と比べて何倍のスピードになったかを記している。「半スレ」であれば、CPU が同時に走らせられるスレッド数の半分の数だけ UTAU ツールを起動している(CPU のスレッドが 8 なら 4 個起動、小数点以下切り捨て)。「全スレ」はスレッド数と同じだけ起動(CPU のスレッドが 8 なら 8 個起動)。

結果を見ると、やはりマルチスレッドレンダリングは速い。例えば、Core i7-2670QM は最大 5 倍近い速度で合成できている。

テンポラリフォルダのアクセスによるボトルネックを心配していたが、結果を見る限り、そこはあまりボトルネックにはなっていないようだ。UTAU ツールは結果をディスクに出力するので、現在の唄詠はそれをテンポラリフォルダに出力させるようにしている。テンポラリフォルダのアクセス速度が遅いとマルチスレッドレンダリングしても効果が無いかと思ったが、遅い HDD でも効果が出ている。

ハイパースレッディングによってスレッド数を倍にしている場合、物理コアと違ってスレッドを処理する能力はあまり上がらない。なので、半コアと全コアを比較すると処理速度はさほど向上していない(逆に下がる場合もある)。デフォルト設定を半コアにするか全コアにするかは悩ましいところだ。

なお、この測定に限らないが、マルチスレッドの効果測定は、他のプロセスも多く動いている中では、不確定要素が多い。あくまでも目安となる。

それでもなるべく妥当な結果になるように、テスターの方には同じ測定を 5 回ずつ行って頂き、20% トリム平均(要は極端な上下を除き、中間 3 回の結果の平均)で結果を算出している。

ご協力頂いた皆様、ありがとうございました。

また、これからテストにご協力いただけるという方がいらっしゃいましたら、SHINTAまでご連絡下さい。

IIJmio LTE vs WiMAX スピードテスト

以前に IIJmio のスピードテストをした際は、LTE 区間で平均 1 Mbps ちょっとしかスピードが出なかったので、「格安 MVNO SIM はスピードは遅いのだなぁ」などと思っていたが、最近、だいぶスピードが上がってきたと感じている。

そこで、再度、スピードテストをしてみた。

ついでに、WiMAX とも比較してみた。

結果は以下の通り。

IIJvsWiMAX

テストは、docomo 向け 7 インチタブレット、AQUOS PAD(SH-08E)を用い、RBB TODAY SPEED TEST にて通信速度を測定。測定時間帯は、土曜日の昼頃。

MVNO LTE の測定時は、AQUOS PAD に IIJmio の SIM を挿して LTE 通信。

WiMAX の測定時は、URoad-Aero で WiMAX の電波を受信し、Wi-Fi で AQUOS PAD と通信。

スピードテストはそれぞれ 3 回ずつ行い、その平均値を表にしている。

LTE体感通り、IIJmio の通信速度は以前よりも大幅に向上している。下り平均 13Mbps の速度は快適だ。

月額 1,000 円弱でこの速度は素晴らしい。さらに、4 月からはバンドルクーポン(無料高速通信)の量が 1GB へと引き上げられる(クーポンを使い切ると 200kbps に速度制限)。

WiMAX一方の WiMAX も、下り平均 9Mbps 弱と、実用十分。IIJmio の LTE よりは遅いが、これだけ出れば通常は問題ない。PING が遅いのは残念だがしかたない。

WiMAX の魅力は速度ではなく、ノーリミット。月額は 4,000 円弱と高いが、高速通信が無制限にできる。特にパソコンを持ち歩いてネットするなら、事実上 WiMAX 一択と言って良い。



棒読みちゃんに UTAU 音源の声を追加する方法まとめ

唄詠のバージョンがだいぶ上がってきたので、改めてやり方を整理しておく。

唄詠は、棒読みちゃんなどのテキストスピーチソフトの「声」として、UTAU 音源を指定できるようにするためのツール。

これまで、UTAU 音源にしゃべらせる(HANASU)には、UTAU 上で時間をかけて調声する必要があったが、唄詠を使うと、テキストスピーチソフトに文章を入力して再生ボタンを押すだけという、簡単な方法でしゃべらせることができるようになる。

やり方は以下。

UtaYomiExe唄詠公式サイトから唄詠の zip ファイルをダウンロードし、好きなフォルダに解凍する。

UtaYomi.exe を起動し、新規登録ボタンをクリック。

音源の新規登録ウィンドウが表示されるので、しゃべらせたい音源の情報を入力していく。

音源の新規登録詳しい入力方法は唄詠のヘルプに譲るが、重要な項目は、「oto.ini の場所」「wavtool の場所」「resampler の場所」の 3 つだ。

oto.ini の場所には、しゃべらせたい UTAU 音源の oto.ini を指定する。サブフォルダにも oto.ini がある音源の場合は、音源の最上位フォルダの oto.ini を指定すると良い。サブフォルダの oto.ini も含めてすべて利用可能になる。

wavtool の場所と resampler の場所にはそれぞれ、UTAU に付属している wavtool.exe と resampler.exe を指定する。互換ツールでも OK だ。

各ファイルの指定は、参照ボタンからのダイアログで行ってもよいし、ドラッグ&ドロップで行ってもよい。

OK ボタンを押すと、UTAU 音源の情報が登録される。登録時、パソコンの管理者権限が必要なので、画面の指示に従って管理者のアカウント情報を入力する。

棒読みちゃん音源情報を登録したら、棒読みちゃんを起動する。唄詠との間で漢字を処理できる Ver 0.1.11.0 Beta 15 以降の棒読みちゃんがオススメだ。

声質を選ぶプルダウンメニューで、先ほど登録した UTAU 音源が選択できるようになっているはずなので、それを選ぶ。

後は、いつも棒読みちゃんを使っているのと同じように、読み上げさせたい文章を入力して再生ボタンを押すだけだ。

例として棒読みちゃんを挙げたが、SAPI 5 に対応したテキストスピーチソフトであれば、どんなソフトでも UTAU 音源をしゃべらせられるようになる。SofTalk やゆっくり MovieMaker なども利用可能だ。

【関連サイト】




月別アーカイブ
記事検索
最新コメント
  • ライブドアブログ