UTAUプラグイン
상품 설명
YukkuriMovieMaker4(YMM4)上で動作する、UTAU 音源から歌声を合成する音声合成プラグインです。 音源フォルダの原音設定をそのまま読み込み、WORLD を C# へ移植した WorldNet で分析して合成し直します。 単独音・連続音・CVVC のいずれの音源にも対応し、UST ファイルの読み込みにも対応します。 セリフのかなから組み立てたノートは、ピアノロールのノートエディターで編集できます。
■ 概要
本プラグインは YMM4 の音声合成エンジンとして動作します。エンジン名は UTAU で、話者は読み込んだ音源です。
音源フォルダの oto.ini・character.txt・character.yaml・prefix.map・readme.txt を読み込み、原音設定のエイリアスをそのまま使って歌声を合成します。音声の分析と合成には WORLD を C# へ移植した WorldNet を使い、基本周波数を Harvest または Dio で求め、CheapTrick でスペクトル包絡を、D4C で非周期性指標を求めてから合成し直します。UTAU 本体や resampler は必要ありません。
セリフに書いたかなからノート列を組み立てるほか、UST ファイルのパスを書くとその譜面をそのまま読み込みます。組み立てたノートはノートエディターで編集でき、音程・長さ・ビブラート・ポルタメント・表現曲線を調整できます。
音声ファイルの分析結果と、合成した音を区間ごとにメモリへ保持するため、2 回目以降の合成が速くなります。1 つのノートを直したときは、その周りの区間だけを合成し直します。
画面の表示は日本語のほか、英語、簡体字と繁体字の中国語、韓国語、スペイン語、アラビア語、インドネシア語に対応します。
■ UTAU 音源の読み込み
user/resources/utau フォルダと、設定画面で追加した探索フォルダから音源を探します。探索フォルダの 3 階層下までを調べ、character.txt・character.yaml・oto.ini のいずれかがあるフォルダを音源として扱います。oto.ini はサブフォルダの物も含めてすべて読み込みます。
character.yaml の subbanks に書かれた声色と、音域ごとの接頭辞・接尾辞に対応します。prefix.map の音域ごとの接頭辞・接尾辞にも対応します。文字コードは BOM と内容から UTF-8・UTF-16・Shift-JIS を判別し、character.yaml に text_file_encoding があるときはその指定を優先します。
■ かなからのノートの組み立て
セリフのかなを 1 モーラずつノートにします。拗音は前のかなとまとめ、「ー」は直前のノートを伸ばし、「っ」は短いノートにします。読点や中点や空白は短い休符に、句点や疑問符や感嘆符や改行は長い休符になります。既定では 1 モーラが 240 ティック、短い休符が 120 ティック、長い休符が 480 ティックです。
歌詞から原音設定のエイリアスを探すときは、歌詞そのもの、ひらがな、カタカナ、モーラ、モーラのカタカナ、ローマ字の順に形を作り、直前の母音を付けた形を先に、何も付けない形を後に試します。直前が実際の母音のときは、その間に * 歌詞 と * モーラ も試します。* は直前の母音を問わない連続音のエイリアスで、OpenUtau と同じ規約です。それぞれについて、声色と音域に合う接頭辞と接尾辞、prefix.map の接頭辞と接尾辞、接頭辞と接尾辞なしの順に照合します。照合するときは歌詞とエイリアスの両方を NFC へ合成し、連続する空白と全角空白を半角空白 1 つにまとめます。歌詞そのものは書き換えません。
モーラは、歌詞の最後の空白より後ろを取り出してかなへ寄せた形です。a か のような連続音の歌詞からは か を、ka のようなローマ字の歌詞からは か を取り出します。これにより、連続音で書かれた譜面を単独音の音源で歌わせたり、ローマ字で書かれた譜面をかなの音源で歌わせたりできます。ローマ字はヘボン式と訓令式のどちらでも読み、si・ti・tu・zi・hu・wo や sya・tya・zya のような綴りも対応するかなへ戻します。
連続音の歌詞に書かれた接頭辞よりも、実際の直前のノートの母音を優先します。a あ と書かれていても直前が い なら i あ を先に試します。
母音を持たない歌詞、たとえば CVVC の a k のようなノートの後では、直前の母音を付けた形を試しません。次のノートには語頭の - き ではなく き を当てます。
隣り合うノートの間には、前の母音と次の子音をつないだエイリアスがあれば差し込みます。長さは原音設定の先行発声に 30 ミリ秒を足した値で、前のノートの半分を上限とし、20 ミリ秒に満たないときは差し込みません。次のノートが a か のように前の母音を含むエイリアスへ解決したときは、そのエイリアスが渡りを含んでいるため差し込みません。最後の母音には、母音と - をつないだエイリアスがあれば 120 ミリ秒だけ足します。差し込んだ渡りと最後に足した部分は前のノートに属するため、そのノートに ? があれば prefix.map を同じように無視します。
■ UST ファイルの読み込み
セリフか発音に .ust ファイルのパスを書くと、その UST を読み込みます。パスは引用符で囲んでも構いません。
テンポ、ノートの長さ、歌詞、音程、子音速度、音量、モジュレーション、先行発声、オーバーラップ、開始位置、エンベロープ、ビブラート、PBS・PBW・PBY・PBM の音程曲線を取り込みます。音程の値は 0.1 半音として扱います。ノートごとのテンポ変化にも対応します。文字コードは Charset の指定と BOM と内容から判別します。
歌詞の先頭の ? は prefix.map を無視し、! は直前の母音を付けた形を試しません。どちらも UTAU 本体と同じ意味です。UTAU 本体は character.yaml を読まないため、? は prefix.map だけを飛ばし、声色と音域で選ぶ subbanks の接頭辞と接尾辞は残します。歌詞は UST に書かれたまま取り込みます。
前後の休符は取り除きます。取り込んだノートの数と、取り除いた休符の長さと、取り込めなかった旧式の音程の有無をノートエディターに表示します。UST を読み込んでいる間は、基準の音程・テンポ・モジュレーションのパラメータを表示しません。
長い UST は、休符で区切られたフレーズを単位として範囲を選んで読み込めます。「開始フレーズ」と「フレーズ数」で指定し、フレーズ数が 0 なら最後までです。全体で何フレーズあるかと、その断片が元の曲の何ティック目から始まるかをノートエディターに表示するので、複数のアイテムへ分けて並べられます。合成にかかる時間はノートの数にほぼ比例するため、分けて置くと編集のたびに合成し直す範囲が狭くなります。フレーズの境目では直前の母音を引き継がないので、フレーズの中の音は分ける前と変わりません。断片の終わりには母音と - をつないだエイリアスが付きます。
■ ノートエディター
アイテムの編集画面の「ノートを編集」から開きます。ピアノロールでノートを直接編集できます。
ノートを上下に引くと音程が変わり、右端を引くと長さが変わります。
Ctrl を押しながらノートを押すと選択へ加えたり外したりでき、Shift を押しながら押すと範囲で選び、何もない所を引くと囲んで選びます。
鍵盤を押すと主となるノートがその音程になり、他の選択も同じだけ動きます。
Ctrl と車輪で横方向、Ctrl と Shift と車輪で縦方向に拡大縮小し、Shift と車輪で横へ移動し、中ボタンで引くと表示位置を動かせます。
吸着は 1/4・1/8・1/12・1/16・1/24・1/32 と吸着なしから選べます。
ノートを 2 回押すと音程の制御点を追加し、制御点を引くと動かし、右で押すと削除します。制御点の間の曲線は S 字・直線・R 字・J 字から選べます。
下の帯では、子音速度・音量・モジュレーションをノートごとの棒として、フォルマントと息の量を曲線として引いて編集できます。
休符の挿入、ノートの削除、すべてのノートの選択、表示範囲に合わせる操作をボタンから行えます。
ノートを右で押すと品書きが出ます。押したノートが選択に入っていないときは、そのノートだけを選び直します。選択の中を押したときは選択をそのまま保ちます。
品書きからは、選んだノートすべてに対してオクターブ上げとオクターブ下げ、長さを吸着に合わせる操作を行えます。オクターブの上げ下げは、端に当たるノートがあるときは選択全体の移動量を縮めるため、ノートどうしの音程差は変わりません。長さを吸着に合わせる操作は、吸着なしのときは行いません。
品書きの「戻す」からは、選んだノートすべての音程曲線・ビブラート・発声タイミング・ノート全体を既定へ戻せます。歌詞と音程と長さは残ります。
品書きからノートをコピーして貼り付けられます。貼り付けたノートは選択の後ろに入り、そのまま選択されます。コピーした内容は別のアイテムの編集画面へも貼り付けられます。
品書きの「歌詞をまとめて編集」では、選んだノートの歌詞を別の窓で一度に書き換えられます。空白と改行で区切り、漢字とかなは 1 文字ずつ、引用符で囲んだ部分はまとめて 1 つのノートになります。歌詞の数とノートの数を窓に表示し、歌詞の方が多いときは余りを捨て、ノートの方が多いときは残りのノートをそのままにします。
品書きの「別ウィンドウで編集」では、編集画面をそのまま別の窓へ移せます。窓を閉じると元の位置へ戻り、編集した内容はそのまま残ります。窓を開いている間は「ノートを編集」のボタンを押せません。
ノートは隙間なく並びます。間を空けるときは休符を挿入します。
原音設定に見つからなかった歌詞があるときは、工具列の右端に警告として並びます。ノートエディターを開いたままでも、合成をやり直すたびに書き換わります。
工具列の文言が幅に収まらないときは、2 秒おいてから端まで送り、2 秒おいて戻ります。収まっているときは動きません。
編集内容は YMM4 の取り消しとやり直しに対応します。合成の結果として作られる情報は取り消しの対象になりません。
■ WORLD による合成
出力の標本化周波数は音源の音声ファイルに合わせます。読み込める音声ファイルがないときは 44100Hz です。標本化周波数が異なる音声ファイルはカイザー窓の sinc 補間で変換し、多チャンネルの音声は平均してモノラルにします。
分析は 5 ミリ秒間隔で行い、基本周波数は 55Hz から 1100Hz の範囲で求めます。基本周波数の推定は Harvest と Dio から選べます。Dio を選んだときは StoneMask で補正します。伸ばす区間の扱いは、折り返して繰り返すループと、一様に引き伸ばすストレッチから選べます。
子音の長さはノートの子音速度で決まり、倍率は 2^((100-値)/100) です。フォルマントはスペクトル包絡を半音単位で周波数方向へ移し、高域の強調はナイキスト周波数における利得を dB で指定して周波数特性を傾け、息の量は非周期性指標を強めます。モジュレーションは原音の音程の揺れをどれだけ残すかを決めます。
出力は 16 ビットのモノラル WAV です。ノートの母音から口パクに使う情報も作ります。
■ 解析と合成の再利用
分析結果は、音声ファイルの場所と更新日時と読み込む範囲と推定方法を鍵にしてメモリへ保持します。2 回目以降の合成では分析をやり直しません。上限は既定で 512MB で、64MB から 4096MB まで設定できます。上限を超えると古い物から捨てます。設定画面から破棄することもできます。複数の音声ファイルの分析は複数のコアで並列に行います。
区間ごとの合成は複数のコアで並列に行います。区間は互いに独立しているため、並列にしても結果は変わりません。同時に使うコアの数は、区間の大きさから必要な作業領域を見積もり、合計が 768MB に収まる範囲で決めます。
合成した音そのものも区間ごとに保持します。区間は休符で切れる塊で、50 ミリ秒より離れたノートの間で分かれます。鍵には、その区間の合成に使う値をすべて入れます。原音の場所と切り出す範囲、ノートの音程・長さ・子音速度・音量・モジュレーション・ビブラート・音程曲線、合成の設定、区間の位置と長さです。鍵は区間の中での相対的な位置で作るため、後ろのノートが前後へ動いただけの区間はそのまま使います。音程や音量のように位置が動かない編集では、直したノートを含む区間だけを合成し直します。ノートの長さを変えたときは、区間の切れ目がフレームの丸めでずれる分だけ、いくつかの区間を合成し直します。上限は既定で 256MB で、64MB から 4096MB まで設定できます。超えると古い物から捨てます。設定画面の破棄は分析と区間の両方を消します。表現の帯でフォルマントか息の量の曲線を引いているときは、曲線が時刻ごとに変わるため区間の再利用を行いません。
모든 리뷰
더보기리뷰 등록
리뷰를 작성하려면 로그인이 필요합니다.
로그인하고 리뷰 쓰기