エロ話を垂れ流すブログ。18歳未満閲覧禁止。
当サイトの記事にはアフィリエイト広告のリンクが含まれる場合があります

Style-Bert-VITS2でAnneliとAnneli-nsfwをマージしたささやき声を作ってみた

コメント欄にてAnneliとAnneli-nsfwを通常マージした後にwhisperをヌルモデルマージするという興味深い手法を教えて頂きました。

言われて納得。前回の記事で、右側のマージモデルのほうが良く聞こえたのは、Anneli-nsfwとつくよみちゃんを(つくよみちゃん重めで)通常マージした後、ヌルモデルマージしたからでした。

AnneliとAnneli-nsfwを通常マージするというのは自分では思いつかなかったので(なんとなく同じ人物同士というイメージがあるから)目から鱗です。

ということで、さっそく試してみました。

実験用のセリフ

台詞と、喘ぎ声の混在テストです。
ヘッドホンは付けましたか?
力強く話しますよ!
切ない感じですよ…
…あっ…あん、ぁ、んっ、ぁっ、ぁっ、ぁっ、い、イクぅっ!!

見ての通り、最後に喘ぎ声入れてるので、再生する場合は音量注意です。

AnneliとAnneli-nsfwとwhisperをマージするテスト

せっかく(?)なので、JavaScriptによるリップシンクにしてみました。

■Anneli

■Anneli-nsfw

■Anneli-blend (声質0.4 声の高さ0.7 話し方0.7 話す速さ0)

■Anneli-blend-whisper1 (声質0.5 声の高さ0.8 話し方0.7 話す速さ0.5)

■Anneli-blend-whisper2 (声質0.7 声の高さ0.8 話し方0.7 話す速さ0.5)

Anneli-blend-whisper2、なかなか良いのではないでしょうか

たぶん、本来はAnneliで通常セリフをしゃべらせて、nsfwでベッドシーンというような使い方が想定されてそうなんですけど、だいぶ声質が違って聞こえるので場合によっては別人っぽいんですよねー。

なので、出来れば台詞と喘ぎ声を同じモデルでしゃべらせたいと思っていましたが、イイ感じに出来た気がします。

実験時のメモ

  • Anneliではあえぎ声が出せない(当たり前
  • Anneli-nsfwは普通のセリフが舌足らずになりがち
  • AnneliとAnneli-nsfwの通常マージで、Anneli寄りにするとあえぎ声がイマイチ(当たり前
  • 話し方を1.0にするとカタコトっぽくなる
  • 声質0.2だと「イクゥ!」の最後が掠れる
  • 声の高さをAnneli寄りにすると「イクゥっ⤴️」が「イクゥっ⤵️」になる
  • 「イクゥっ⤴️」を保つには声の高さ0.7 話し方0.7くらい必要。声質・話す速さは0でOK。但し、若干通常台詞があやしい。
  • 声の高さ0.7 話し方0.5で「イクゥっ→」くらい。このへんが妥協点か。

吐息は一工夫必要

「Style-Bert-VITS2に差分マージが追加されウィスパーボイスが作成可能に!」で感動と共にアップした「ふー…ふぅー…、はぁ…、はぁぁ」の吐息音声ですが、先ほど作ったAnneli-blend-whisper2だとこうなります。

めっちゃ短い。

そりゃそうなんですよね。Anneli-nsfwはすごくねっとりとした喋り方だけど、Anneliは話速が早い。ブレンドした結果、吐息も早くなってしまいました。

ただ、話速についてはStyle-Bert-VITS2 Editorのほうで調整できるため、2倍ゆっくりに出来ます。

うん、これなら十分使えそう。

これで、違和感のないひそひそ音声、押し殺したような喘ぎ声、はぁーはぁー吐息のいずれも自分が求めるモノになった気がします。いやはやマジで素晴らしいな。

おまけ:リップシンクJavaScript

たぶん欲しい人なんておらんと思うけど、先述のリップシンクを自分でもやってみたいと思う酔狂な方のためにJavaScript置いておきます。

20240620-lipsync.zip

中にサンプル用のindex.html入れてありますが、ローカル起動ではCORSの問題でオーディオ再生できないため、サーバーにUPして使う必要があります。

使い方は単純でこんな感じ。

<script src="ziziura_lipsync.js"></script>
<div class="lipsync">
	<canvas data-face="20240620_face.webp" data-mouth="20240620_mouth.webp" data-mouthx="492" data-mouthy="470" data-threshold="27000" data-visualizer></canvas>
	<audio src="20240620_anneli.opus" controls></audio></p>
</div>

ziziura_lipsync.jsを読み込んでおけば、あとはcanvasの属性に指定されたファイル名の画像をロードして、audioタグで再生された音声に合わせて口画像の大きさを変更して描画する仕組みです。

パラメーター:
data-face= 顔の画像ファイル名
data-mouth= 口の画像ファイル名
data-mouthx= 口の初期座標X
data-mouthy= 口の初期座標Y
data-threshold= 開閉の感度 (10000~30000くらいでテキトーに)
data-visualizer= ビジュアライザーの表示(いらなければ消してOK)

ちょっと面倒なのは口の位置ですね。上のとおり、口の初期表示位置をX/Y座標で指定しないといけないのが面倒です。

SadTalkerみたいにAI使って口の位置を割り出せれば良いんだけどねー。

AI関連の知識はないので古臭い手法で実装しています。

片手間で作った100行もないコードなので著作権など主張しません。煮るなり焼くなり好きにしてください。

謝辞

オープンソースソフトウェアの開発者および各種素材の制作者の皆さまに感謝します。

使用ソフト (AI関連)

使用ソフト (AI以外)

PR

関連記事

同人エロゲーでAI音声を使う場合に考えること

ウィスパーボイス記事のコメント欄でハーレム同人エロゲーの話題があり、返信を書いていたら長くなってしまったので記事にします。 まず先にぼくの個人的な感想から書くと、4キャラもいて、かつパートボイス

コメント

  • コメントが参考になったみたいで幸いです!
    Anneli-nsfwが過剰演技感があったので、通常とマージすることで割と応用が効く感じになっていいですね!

    現状では読み上げメインのモデルが多いのか、Anneli-nsfw以外に「!」の影響を大きく受けるモデルが見当たらないので、自分は夢前黎様の感情豊かなボイスを集め、それでモデルを作り他モデルとマージするのを試しています。ゲームとかのシステムボイスやバトル掛け声程度なら割と簡単にハイクオリティなものが生成できるかもしれません
    [返信]
    • つくよみちゃん様、マジでありがたいですよねー
      nsfwとのマージを軽く試した限りでは、だいぶ抑え気味の声にはなるものの、あえぎ声も実用(?)レベルだったので活用させて頂きたいと思っています😊
      [返信]

新しいコメントを投稿する

[新規投稿]
 
TOP