Babo Dialogueのボイスを作る

Modを作ろう

Babo Dialogueのボイスを作ったときのおぼえがき。

必要なもの

  • xTranslatorの翻訳辞書
  • Style-Bert-VITS2
  • PHP
  • PHPスクリプト
  • Yakitori Audio Converter
  • SSE CreationKit Fixes
  • LazyVoiceFinder

学習素材を作る

LazyVoiceFinderでSkyrim.esmを開き、Voice Typeで絞り込んでファイルをエクスポートします。

街の衛兵ならMaleGuard、山賊ならMaleNordやMaleOrcあたりになるようです。農民や宿屋の主人にもMaleNordやMaleOrcあたりが使われています。

掛け声などは学習に適さないので避けた方がいいでしょう。

エクスポートしたfuzファイルから、Yakitori Audio Converterを用いてwavファイルを取り出します。

学習させる

取り出したwavファイルを使ってStyle-Bert-VITS2に学習させます。

学習手順の詳細はこちらで解説しています。

セリフのテキストデータを用意する

BaboInteractiveDia.espを翻訳しておきます。

LazyVoiceFinderでBaboInteractiveDia.espを開きます。

列にQuest Edidを追加しておきます。

衛兵のセリフならguard、道で遭遇する山賊ならencount、地域で発生するイベントならlocationといったキーワードを使って絞り込みます。

csvファイルをエクスポートします。

Quest Edidの列が必要な理由

どうやら、TopicのConditionにVoiceTypeによる絞り込みがある場合にのみ、LazyVoiceFinderはFilenameを生成して作れるようです。

BaboDialogueはFactionで絞り込んでいるようなので、Filenameが一切ありません。よって、Quest Edid、Topic Edid、FormIDからFilenameを生成する必要があります。

ちなみに、Filenameの生成ルールは以下のようになっているようです。

[Quest Edid]_[Topic Edid]_[FormID]_[Counter].fuz
対象説明
Quest Edid最大10文字まで。
ただし、Topic Edidが存在しない場合はそのまま?
BaboDialog
Topic Edid最大15文字まで。存在しない場合は空欄。
LazyVoiceFinderはTopicのFormIDを出力するので注意。
BaboDialogueGen
FormID8文字で固定。上2桁は00で固定。00D80D5F
Counterセリフの行番号。1から始まる。
セリフが複数行存在する場合は1ずつ増えていく。
1

最終的にこうなります。

BaboDialog_BaboDialogueGen_00D80D5F_1.fuz

一番の問題は、どのセリフにどのVoiceTypeが存在するのかわからないため、すべてのセリフにすべてのVoiceTypeで音声を作る必要があり、ファイルサイズが無駄に大きくなってしまうことです。

セリフの音声データを作る

Style-Bert-VITS2のServerを起動して音声合成させます。

>php create_dialogue_wav.php -m SkyrimMaleNord Encounter.csv

lipファイルを作る

>php create_lip.php Encounter_SkyrimMaleNord

fuzファイルを作る

Yakitori Audio Converterを用いてwavファイルとlipファイルからfuzファイルを作ります。

タイトルとURLをコピーしました