なぜ無音で「ご視聴ありがとうございました」と出るのか
番組冒頭で戸田さんは、この回のテーマを音声認識のハルシネーションだと紹介します。何も発言していないのに「ご視聴ありがとうございました」といった文字が認識されてしまう現象で、無音ハルシネーションとも呼ばれます。
これは英語圏にも同じ現象があり、そちらでは「Thank you for watching.」のような文が出てくると説明されます。
定番の解説はこうです。WhisperのようなモデルはYouTubeの動画と字幕から学習しているため、動画の最後の無音部分に入る「ご視聴ありがとうございました」という字幕を、無音とセットで覚えてしまったという説です。
戸田さんは、理屈としてはなんとなくわかるとしつつ、そこが実際どうなのかをもう少し深く検証したいと話します。
検証にあたり、疑問を4つに整理しています。
- 本当に訓練データ由来と言えるのか
- モデルによって結果は変わるのか
- 環境音があると変わるのか
- なぜ設定をいじっても消えないのか
検証の土台になった2本の論文
参考にした論文は、2025年に出た「Investigation of Whisper ASR Hallucination Induced by Non-Speech Audio」です。無音やノイズ、環境音といった非音声のオーディオをWhisperに入れて、どういう幻覚が誘発されるのかを体系的に調べた研究だと紹介されます。
この論文の結論として、Whisperのパラメーター調整ではハルシネーションは防げないという点が挙げられました。
もう1本、戸田さんが重要だと挙げたのが「Careless Whisper」という論文です。WhisperのAPIで実際の音声を大量に書き起こしたところ、約1パーセントに丸ごと捏造されたフレーズや文が含まれていたという報告です。
この論文が示すのは、失語症の話者のように発話と発話の間に長めの無音ポーズが入る話し方の人で、ハルシネーションが起こってしまったという事実です。
戸田さんは最初、何もないところから定型句が出てくる様子を面白いと感じていたと振り返ります。
こういう文脈だと、まあその笑い事ではないというか、まあ結構重要な問題なんだなっていうところがわかりました。
合成音声と3種類のモデルで組んだ実験設計
実験の音声は、何回もリピートするため、すべて合成音声で作られました。長さは大体30秒ほどです。
ノイズも自動生成し、いわゆるホワイトノイズを用意しています。さらに環境音のデータセットESC50から、雨やキーボードの打鍵音、咳払いなどのカテゴリを取ってきて使いました。
モデルは3種類を用意しています。1つはWhisperで、tinyからlargeまで複数のサイズを試しました。
2つ目は日本語特化の追加学習モデルであるKotoba-Whisperで、追加学習によってハルシネーションがどう変化するかを見る狙いです。
3つ目はCTCモデルのwav2vecです。CTCはフレームごとに音を文字へ分類していくタイプで、Whisperと違ってデコーダーを持ちません。アーキテクチャの違いを比較するために出したと説明されます。
文脈から次の文字を予測して文章を生成する。無音でも文章を作りやすい
フレームごとに音を文字へ分類し、音がない区間は空白に潰す
大きいモデルほど堂々と幻覚を出す
結果として、一番大きいWhisper large-v3に日本語設定で非音声を渡すと、すべて「ご視聴ありがとうございました」というハルシネーションを起こしました。
これはノイズや環境音が加わっていても、まったく変わらなかったと報告されます。
戸田さんは、実験前は大きいモデルなら賢いから幻覚が減るのではと考えていたと言います。ところが結果は逆でした。
逆で、大きいモデルほど、この現象が純粋に出てきちゃうんですよね。
一方で、サイズによって幻覚の種類は異なりました。一番小さいtinyでは数字の羅列がループし、baseではなぜか「スタッフを見つけたら」を繰り返すようなループが多かったと言います。
これに対して大きいlarge-v3では、日本語の文章としておかしくない「ご視聴ありがとうございました」が出てきます。
言語を変えると別の定型句に切り替わる
次に、言語設定を変えるとどうなるかを試しています。
日本語設定ではやはり「ご視聴ありがとうございました」ですが、英語設定では「Thank you」や「Thank you for watching」が出てきました。
さらに自動判定にすると、なぜかウェールズ語判定になり、戸田さん自身も読み方に自信がないとしつつ、ある発音のような語が出てきたと言います。意味を調べると「どうもありがとう」にあたる言葉でした。
どの言語設定でも、出てくる語彙は視聴への感謝を表す言葉でした。戸田さんは、これは言語圏に限らずYouTubeで学習してしまっている弊害なのかもしれないと話します。
デコーダーがないモデルでは起きなかった
対照実験として、デコーダーを持たないwav2vecを試したところ、こうしたハルシネーションは起きませんでした。
理由はシンプルで、このモデルはフレームごとに音を文字へ分類し、音がないフレームは空白記号に潰す処理をしているためです。
つまり、文脈から次の言葉を生成するデコーダーの仕組みそのものが、無音から文章を作り出す背景にあると考えられます。
なぜ設定を調整しても消えないのか
ここからは考察として、なぜパラメータをいじってもハルシネーションが消えないのかが語られます。
Whisperには無音対策の抑制ロジックが入っており、2つの条件が両方成立したときにセグメントを捨てる仕組みです。1つ目は無音である確率が高いこと、2つ目は生成したテキストの確信度が低いことです。
実際に無音を入れて内部の数字を見ると、無音確率は0.94と高く、モデルはちゃんと無音だと理解していました。
ところが、生成したテキストの確信度は閾値を下回りません。つまり、モデルは無音だとわかった上で、自信満々に文章を出している状態です。
抑制が効くように確信度の閾値を下げすぎると、今度は普通の文言まで生成されなくなってしまい、調整が難しいと説明されます。
無音である確率が高い
0.94と高く、この条件は満たされる
生成テキストの確信度が低い
確信度が高いままで、この条件を満たさない
両方成立せず抑制されない
結果として自信を持った定型句がそのまま出力される
この背景には、「ご視聴ありがとうございました」がそもそも訓練データに高頻度で出てくるため、確率が上がって当然という事情があると戸田さんは見ています。
モデルって無音だってわかった上で自信を持ってハルシネーションの文章を出しちゃってるっていうところがあるんですよね。
VADで防げるが、咳や笑い声には弱い
では、どうすれば防げるのか。戸田さんは基本として、VAD(音声区間検出)が大事だと話します。
Whisperに渡す前に、別の軽いモデルで人の声があるかを判定し、声のない区間はそもそもWhisperに渡さないという前段フィルターです。これを入れると、合成音や雑音を入れても幻覚がなくなったと報告されます。
ただし、これで解決というわけではありません。咳や笑い声が入ると、VADはそれを人の声だと判定して通してしまいます。
通過した先のWhisperは咳を音声として認識しないため、先ほどの理屈でやはり定型句を生成してしまいます。会議室などでは咳は実際によく出るため、無視できない問題です。
そこで戸田さんは、ハルシネーションしやすい語はわかっているので、定型フィルターのような仕組みと組み合わせて使うことも必要かもしれないと締めくくります。
実際に使ったコードはGitHubに、実験結果はZennの記事に詳しくまとめられています。
まとめ
無音ハルシネーションは、訓練データに由来する現象であることが実験から見えてきました。大きいモデルほど流暢に定型句を出し、言語を変えても感謝の言葉に切り替わります。抑制パラメータだけでは防ぎきれず、VADや定型フィルターとの組み合わせが現実的な対策として示されました。
- Whisperは無音や環境音に対して「ご視聴ありがとうございました」などの定型句を出す
- 大きいモデルほど文章として自然な幻覚を、自信を持って生成する
- 言語設定を変えると、その言語での視聴への感謝を表す言葉に切り替わる
- デコーダーを持たないCTC型のwav2vecでは、この現象は起きない
- 無音は認識できても確信度が下がらないため、抑制パラメータだけでは防げずVADなどとの併用が必要になる







