🤗

Anime Whisper: 演技セリフに特化した音声認識モデル(第1回)

2024/12/10に公開

宣伝

本記事は、日本最大級の音声系Discordサーバ「AI声づくり技術研究会」のアドベントカレンダーに投稿させていただいております。

https://qiita.com/advent-calendar/2024/koeken

音声とAIに関する技術的議論や気軽な雑談が活発に行われており、いろんな人(AI愛好家、AI技術者、たぶんガチの研究者だろうなーって人、マイコエ等での声素材提供者様、ボイチェンで演技を極めている人、やたら日本語に詳しい人、法律に詳しい人、昔からの合成音声好き、単に音声AIを使うのが好きな人)がいる、すごくよい場所となっているので、ぜひご参加ください。
(自分自身twitter等の公のSNSでは活動をしていないので、このdiscordサーバーがメインの居場所となっております、いつもお世話になっております。)

自己紹介

  • 音声AIが楽しくていろいろいじって遊んでるけど、ちゃんと勉強したことはない、専門分野は全く機械学習と関係ないところな分野外素人です
  • オープンソースな日本語音声合成AIで最近ある程度有名な(多分)Style-Bert-VITS2 のリポジトリオーナーです(最近サボっててすみません)
    • ちょうど去年の今頃にBert-VITS2すごくね?と声づくり研究会で話題になったときからいろいろ試行錯誤してzennでBert-VITS2の記事を書いていました
    • 最近はAivisSpeechの裏側で動いているやつと言えばいいのかもしれない
  • 主に上述discordと Hugging Face 🤗 と一応GitHubとたまにzenn等に出没しています

はじめに

先月2024年11月30日、 Anime Whisper という、日本語音声認識モデルで特に声優の演技セリフを台本調に書き起こしてくれることに特化した(またその結果として通常音声にもいくつかの点で点では性能が向上した)モデルを公開しました。

🤗 spaces のデモ から簡単にモデルをお試しできます。

このモデルの系列は、以下の通りとなります。

  • openai/whisper-large-v3: 現状で日本語で一番高い精度を誇るモデル(評価は後述)
  • kotoba-whisper-v2.0: 上記whisper-large-v3をベースとして ReazonSpeechデータセット で学習された蒸留モデルで、軽量・高速になりハルシネーションが低減されているもの
  • litagin/anime-whisper: kotoba-whisper-v2.0 をベースとして、約5,300時間373万ファイルのビジュアルノベルから取得されたアニメ調セリフ台本データセット Galgame_Speech_ASR_16kHz を使い、自腹でH100を12日くらい使ってファインチューニングしたモデル

この記事では、このモデルの宣伝をかねて(金をかけて作ったものだからみんなに使ってもらいたい)、以下のような点について書いていきます。

  • 背景(既存モデルの問題点)
  • 学習用データセットの整備について
  • 学習コードや工夫
  • クラウドGPU初体験での体験記、感想、反省
  • 今後の展望

Anime Whisperの特徴

以下モデルカードからのコピペですが、まずこのモデルが他のモデルと比べてどのような特色を持っているのかを述べます。

  • ハルシネーションが少なめ(皆無ではない)
  • 他のモデルでスキップされがちな言い淀みや、笑い声や叫びや吐息などの非言語発話も忠実に書き起こす
  • 「。、!?…」の句読点が音声のリズムや感情に合わせて適切に付き、セリフ台本として違和感がない自然な文体で書き起こされる
  • アニメ調な演技セリフに対しては特に精度が高い
  • 他モデルでは書き起こしがほぼ不可能なNSFW音声もきちんとした文体で文字起こし可能

書き起こし例

感情演技音声データに対して、上記のような既存モデルとの違いがよく出ている例を モデルカードのセクション へいくつか抜粋したのでご参照ください。

背景

現在、音声認識モデルはかなり高性能なものとなっており、通常の日本語発話の書き起こしタスクとしては十分な精度で自然な書き起こしが可能です。代表的なモデルとして、以下のようなものがあります。

しかし、音声関連のAIをいろいろいじって遊んでいる身として普段上述モデルを使う中で、これらのモデルには経験上次のような問題点があることを感じていました。

音声認識の問題点: 定性的な記述

上記Anime Whisperの特徴とかぶる点もありますが、まずは既存音声モデルの問題点についてその直感的な説明や例を示します。後で、実際にこれらの問題点を定量的に計測する方法と結果について述べます。

ハルシネーション

ハルシネーションとは、一般にAIが現実の正解とは異なった情報を提供することですが、音声認識の場合は(この記事では)「音声には存在しない単語やフレーズ等が書き起こし文に現れる現象」とします。
これには大きく2種類に大別されます。

発声されていないフレーズの出現

これは、無音や笑い声やその他さまざまな音声に対して「ご視聴ありがとうございました」や「チャンネル登録高評価をよろしくお願いします」「おやすみなさい」等の間違った書き起こしがなされることがあります。

使ったことがある方ならご存知かと思われますが、特に上記3モデルの中でOpenAIのWhisper系は、どのモデルであっても、この現象が多く起きます。

繰り返しの発生

LLMなどで「同じフレーズ等が無限ループのように連続して生成されてしまう」という現象がよく起こり、それの抑制対策等がよく語られますが、音声認識モデルの中でもautoregressiveなtransformer decoderを使用したモデル(OpenAIのWhisper等)では同じ現象が起きます。

典型的には(元の音声の都合等で)「出力結果にある文字列やフレーズが繰り返し現れてしまうと、それ以降もそのフレーズが無限ループしてしまいがち」というもので、例えば次のような具合です。

実際の発話 書き起こし
あははははー!それちょーウケる! あははははははははははははははは(以下無限ループ)(最初の笑い声の「は」の連続でループしてしまい後半が無視される)
がっはっはっはっ、それは面白いな がっはっはっはっはっはっはっはっは(以下無限ループ)
やばばばばっ! やばばばばばばばばばばばばばばば(以下無限ループ)
えー?!なにそれ、何考えてんの? えーーーーーーーーーー(以下無限ループ)
おまえも、おまえも、おまえも!おまえも道化師にしてやろうかァ!クワアァー!シャアアアー! お前も、お前も、 お前も、おまえも、おまへも、おまーへも、お前もう、おまえもう、おまへもう、おまーえも、お前を、おまえを、おまーひも、おまいも、おまひも、おまあへも、おまあえも、おまあいも、おまあひも、おおまえもおまえもどうけしにしてやろうかー!かー!しかー!(これは繰り返しの no_repeat_ngram_size5にしているので、「お前も」が繰り返せなくなった結果強引に繰り返している様子)

これらの繰り返しは、ある程度はLLMでの通常の対策によってある程度は抑止することができます(🤗 pipeline上では no_repeat_ngram_sizeを正の整数にしたり repetition_penalty を1以上にしたり)。が、抑止した結果途中で書き起こしが途切れてしまったり等の問題点があります。

発声されているフレーズのスキップ

これもある種のハルシネーションと言えるかもしれませんが、性質としては異なるものですので、ここに述べることとします。その名の通りですが、以下のような現象が観察されます。

言い淀み・フィラーのスキップ

「あのー」「そのー」等のフィラーや、言い淀みでの繰り返しの音が省略されて書き起こされてしまうことがあります。以下のような例です。

実際の発話 書き起こし
これはですね、あのー、特に意図はないんですけど これはですね、特に意図はないんですけど
はい、、えっと、まあ、、その、そういうことかと… はい、えっと、まあ、その、そういうことかと
、もしかして、、それは、、こういうことですか? もしかしてそれはこういうことですか

(これは、「意図を汲み取りさえすれば良い」「逆にきれいな日本語文章のみ欲しい」という場合には利点ですが、「音声を正確に書き起こしてほしい」という場合には大きなデメリットです)。

ため息・吐息等・息切れのスキップ

これは「はぁ…」や「…(実際には吐息を発している)」や「はぁ、はぁ、疲れた!」等、言語音声ではない非言語音声として類別されるような箇所で、それが音声として扱われずスキップされてしまう現象です(下記NSFW音声においてより顕著)。

NSFW音声固有の問題

18歳未満の方の閲覧はご遠慮ください。

本稿で「NSFW音声」と呼んでいるものは、主にアダルトゲームにおけるセクシュアルなシーン固有の、声優によって演技された、通常の発話とは異なる性質をもつセリフ発話のことを指します。

また、NSFW音声はその異質性の観点では大きく以下の2つに分類されます。

喘ぎ声

  • テキスト例:
    • あんっ、あっ……あっ、ああぁぁっ。きもちいい、きもちいい、あんっ!あぁぁっ。ふあっ。はあっ、はあっ、はっ
    • くっ!あっ、はあっ、はっ、あああっ!あんっ!くっ、くぅぅぅぅっ!ひうっ、あっ!くぅぅぅぅっ!
    • ンッ!ふあっ……あっ。ひぅぅぅっ!あっ、はぁはぁはぁっ!そっ、そんな……ンッ、ああぁっ!

通常の発話よりもかなり高い声での「あぁ」「あん」(喘ぎ)や「はぁ」(吐息・呼吸)や「ひぅ」「らめぇ」(叫び)等が多い発話なことが特徴として挙げられます。

基本的に、音声とセリフは(チュパ音に比べれば)ある程度は対応していますが、そもそも過度に感情的な演技音声であったり、通常のセリフ書き起こしではスキップされがちな吐息音が多く含まれたりしている点が特徴的です。

チュパ音

チュパ音とは、馴染のない方もいるかもしれませんが、本稿では「アダルトゲームにおいてディープキスシーンやフェラチオシーンで、女性声優が汁感たっぷりにしゃぶっている・すすっている音を出している場面での音とそのセリフ」を指すこととします。

(ASMR音声や同人音声の分野でもチュパ音(耳舐め音声?)というものが存在しているということは聞いたことがあるのですが、それらの分野は私の専門外であり触れた経験もほぼないことから、今回は扱わないこととします。)

  • 以下にテキスト例を書くが、おそらくエロゲーのフェラシーンを見たことがないと音が想像できないのではないだろうか🤔
    • じゅぼぅ、ぐじゅぅぅっ……!じゅるっ、じゅぶぶっ、じゅぶりゅうぅ……!ちゅるっ、じゅぱっ、んぼおぉぉっ……!
    • れりゅぅ……れろれろっ,はぁっ……んじゅっ、じゅる、ぢゅう、ちゅううう、むちゅう
    • ふっうウッ……ンじゅぶぶっ……ンぅむうぅっん……じゅっんぅぶじゅっじゅぶじゅくぅっ
  • 具体的な音は権利上乗せることはできないが、どのようなものか聞きたい方は、チュパ音合成のこのデモ で遊んでみると聞くことができる
  • 典型的にはテキストが「ちゅぱ」「じゅる」「じゅぶ」「ぢゅる」「れろ」「れりゅ」「んちゅ」等から構成されることが多いが、シナリオライターの癖と女性声優の演技により、実際の音とテキストとの関係性はそこまではっきりしないことも多い
    • だが「ちゅぱ」系「じゅぽ」系「れろ」系は何となく別れているイメージがある

チュパ音は、このテキスト書き起こしとの対応の不明瞭さや(通常のセリフのように 「正解の書き起こし」が存在しない! )、そもそも声ではない水音が混じっており音声というより音全般の問題にまたがる等の点から、チュパ音をどのように扱うかは音声技術における重要な課題だと私はずっと思っており、いろいろ試行錯誤しながらチュパ音と向き合ってきました。

問題点

単純に、これら喘ぎ声とチュパ音を既存音声認識モデルへ突っ込むと、かなりひどいことになります。

喘ぎ声での例

実際の発話 書き起こし
ンッ!ふあっ……あっ。ひぅぅぅっ!あっ、はぁはぁはぁっ!そっ、そんな……ンッ、ああぁっ! あ、あ、あ、そ、そんな、あ、あははは
やぁっ……あ、あうぅっ、はあ、あぁっ……!ああ、あっ、くぅ……やっ!やぁん!あっ、ああっ…… ひゃー!
うん。……はっ、あんっ!あっ……ちゃんと気持ちいいよ。はぁっ、はぁっ、はあっ、ンンッ ちゃんと気持ちいいよ
あぁっ、ん……はぁっ……やぁっ、嫌ですっ……あぁ、んっ……イキたくありません……はぁ……んっ、ひぃあっ……んんっ…… あ、あ、あ、や、やです、あ、あいきたくありません、あ、あや、あ、あ
あっ・あっ・あっ・んっ、あぁぁっ、イクぅぅぅぅぅっ、あっあっあっあっ、あっぁぁぁぁぁぁぁぁぁぁっっっ!!! ご視聴ありがとうございました

吐息等で上述のスキップやハルシネーションがほぼ確実に起こることに加えて、書き起こしテキストから全くエロさが伝わりません。情緒や色気のない、味気ないテキストになっています。

チュパ音での例

こちらの場合は事情がより深刻で、そもそもまともな文字列が出力されません。

実際の発話 書き起こし
んちゅ……ちゅるるっ、ちゅぱっ、れぇろれろ……んっ、んんっ、ちゅるるっ、ん、ちゅうぅぅ……
んっ、ちゅっ……ぁっ、れぁ…… おやすみなさい
んっ、れろっ、んちゅ……れろっ…………ちっぱっ おー

そもそもチュパ音部分を音声として全く見ていない空気を感じます。

原因

上述のことが起こる原因は、多くが「音声認識モデルの学習データに由来する」問題といえます。例えば:

  • ご視聴ありがとうございました」はほぼ確実にWhisper系がYouTubeの字幕で学習していることから、動画の最後の無音区間等でこのフレーズが現れることが多いことから来ている
  • 言い淀み・フィラー等のスキップ」も、多くのデータセットでは(YouTubeやテレビ字幕など)、字幕では発話内容そのままよりも言い淀みやフィラーがないデータが多いことから、変に言い淀みを修正してしまうよう学習されてしまっている
  • 感情的な音声に対してミスが起きやすいのは、学習データにそのような音声が少ないから(特に日本の女性アニメ声は音声一般ドメインで見るとかなり特異な位置にいます)
  • さらにNSFW音声に対するひどい性能は、おそらくほぼ確実に学習データにNSFW音声が含まれていないことから由来している

Data Is All You Need

ということは、「言い淀みやフィラーに忠実に音声とテキストが対応しており、かつ無音や短いセリフや笑い声も多い(かつNSFW音声とその正解ラベルが手に入る)」ような大規模演技音声データセットがあれば、データでぶん殴って学習させれば解決するのでは?、というわけで、そのような音声認識用データセットを整備してぶん殴ったのが Anime Whisper というわけです。

(次回に続く)

Discussion