音声認識の仕組み:音の波がテキストになるまで

音声認識は、連続した音の波を個々の単語に変換します。その処理は決まった手順で進みます。マイクの信号が数値にサンプリングされ、数値がスペクトログラムに変換され、ニューラルネットワークがスペクトログラムを確からしいテキストに対応づけ、整形の工程でそのテキストが読みやすくなります。スマートフォンのキーボードも、会議の議事録ツールも、ディクテーションアプリも、現代のシステムはどれもこのパイプラインの何らかのバージョンに従っています。

「なぜ自分の言ったことがわかるのか」という問いへの短い答えは、「わかっているのではなく、推定している」です。モデルは学習時に見たものをもとに、受け取った音に対して最も確率の高いテキストを出力します。この一点だけで、実際に気づく挙動の大半が説明できます。よくある言い回しが完璧に出てくるのに同僚の名字はうまくいかない理由も、雑音の混じった間が誰も言っていない文に化ける理由もそこにあります。

この記事では、数式を使わず、特定のベンダーの内部構造にも触れずに、パイプラインを段階ごとに見ていきます。

ステップ1:マイクはどうやって音を数値に変えるのか

音は圧力の波です。マイクはそれを電圧に変換し、A/Dコンバーター(アナログ-デジタル変換器)がその電圧を1秒間に何千回も測定します。1回の測定が1つのサンプルです。

音楽は通常、1秒あたり44,100または48,000サンプルで録音されます。音声認識にはそこまで必要ありません。音声を運ぶ周波数はほぼ8 kHz以下に収まるため、多くの音声認識システムは1秒あたり16,000サンプル(16 kHz)で動作します。たとえばWhisperの論文には、すべての音声を最初に16,000 Hzへリサンプリングすると明記されています。電話の音声は8 kHzであることが多く、電話の録音が書き起こしにくい理由の1つになっています。音声信号の一部が、そもそも記録されていないのです。

この段階では、単語も文字も無音の検出もありません。あるのは長い数値の列だけです。16 kHzの音声1分は960,000個の数値になります。

ステップ2:スペクトログラムとは何か、なぜ生の波形を使わないのか

生の波形は各瞬間の信号の大きさを示しますが、ある音素と別の音素を区別する情報は周波数にあります。「s」は高周波の雑音のバーストで、「a」のような母音は低い帯域に強く安定したエネルギーの帯を持ちます。

そこで音声認識システムは、音声を短く重なり合う窓に切り分けます。一般的には1つ約25ミリ秒で、10ミリ秒ずつずらします。そして各窓で周波数ごとのエネルギーを測定します。この測定値を横に並べるとスペクトログラムになります。一方の軸が時間、もう一方が周波数、明るさが音の大きさです。

多くのシステムは対数メルスペクトログラム(log-Mel spectrogram)を使います。「メル」は、人間の聴覚が音の高さを感じる間隔で周波数帯を配置することを意味します。低い周波数では密に、高い周波数では粗くなります。「対数」は、耳と同じように音の大きさを圧縮することを指します。Whisperの初期モデルは、25 msの窓を10 msずつずらして80のメルチャネルを使い、large-v3モデルでは128に増えました。いずれにしても、音声1秒はおよそ100列の数値になり、16,000個の生のサンプルよりはるかにコンパクトで情報量の多い入力になります。

ステップ3:モデルはどうやって音を単語に対応づけるのか

ここ15年で最も大きく変わったのが、この部分です。

従来のパイプライン:音響モデル、発音辞書、言語モデル

何十年ものあいだ、音声認識システムは別々の部品で組み立てられていました。音響モデルが各フレームでどの音素がありそうかを推定し、発音辞書が各単語をどの音素で構成するかを示し、言語モデルがどの単語の並びが自然かを採点します。それらを時間方向に結びつけていたのが隠れマルコフモデルです。2012年ごろ、このパイプラインの中でディープニューラルネットワークが従来の混合ガウスモデルに取って代わり、誤り率を大きく下げました。その転換点は、Hintonらが4つの研究グループと共同で発表した論文とされるのが一般的です。

エンドツーエンドモデル

現代のシステムの多くは、スペクトログラムからテキストまでを1つのニューラルネットワークで直接学習します。主流の設計は3つです。

方式 音とテキストの対応づけ方 主な強み
CTC(Graves ほか、2006年) フレームごとにラベルか「空白」を出力し、繰り返しをまとめる 高速でシンプル、ストリーミングに向く
トランスデューサー、RNN-T(Graves、2012年) 各ステップでトークンを出力するか次のフレームを読むかを判断する 低遅延のストリーミング
アテンション型エンコーダー・デコーダー エンコーダーが区間全体を読み、デコーダーがトークン単位でテキストを書く 完結した発話で高い精度

Whisperは3つ目の例で、30秒単位の区間を読んでテキストを書くTransformerのエンコーダー・デコーダーです。話している最中に単語が表示されるストリーミング書き起こしでは、文が終わる前に出力できる最初の2つが好まれます。

出力は通常、単語そのものではなくサブワードトークンです。「trans」「cript」「ion」のような断片です。これによってモデルは、単語全体としては見たことのない語も綴ることができます。新しい製品名が、もっともらしいけれど間違った断片の組み合わせで出てくるのはこのためです。

言語の知識はどこから来るのか

エンドツーエンドモデルには独立した辞書はありませんが、どの単語の並びがありそうかという強い感覚は持っています。学習用音声と対になったテキストから学んだものです。ここでは規模が効きます。Whisperの初期モデルは680,000時間のラベル付き音声で学習され、そのうち117,000時間が英語以外の96言語でした。large-v3は、弱いラベル付きの音声100万時間と、疑似ラベル付きの音声400万時間を使っています。学習データに少ない言語やアクセントの認識精度が低いのは、珍しい名前が苦手なのと同じ理由です。

ステップ4:デコード——最終的なテキストを選ぶ

ニューラルネットワークは答えを1つだけ出すわけではありません。各ステップで、あり得るすべてのトークンについて確率を出力します。デコードとは、全体として最良の系列を探すことです。貪欲法(greedy decoding)は毎回いちばん確率の高いトークンを選び、ビームサーチ(beam search)は複数の候補文を並行して保持し、完成したなかで最良のものを選びます。

語彙のヒントが効くのもここです。多くのエンジンは想定される用語のリストや短いテキストプロンプトを受け付けます。たとえばOpenAIのWhisper向けプロンプトガイドには、綴りを誘導するために製品名や会社名を並べたプロンプトの例が載っています。ヒントは確率をそれらの単語の側に寄せますが、モデルが本当に聞き取れない音声を救うことはできません。

ステップ5:句読点と整形

認識の生の出力は、たとえば「so the meeting is at three thirty on march fifth」のようになりがちです。これを「So the meeting is at 3:30 on March 5th.」に変えるのは別の仕事です。

Whisperを含む一部のモデルは、学習用の書き起こしに句読点が付いていたため、句読点付きのテキストを直接出力するように学習しています。ほかのシステムは、認識のあとに専用のモデルを走らせます。いずれにしても、整形の誤りは認識の誤りとは種類が違います。単語は正しくても、テキストが読みにくいことはあり得ます。

音声認識はなぜ間違えるのか

パイプラインを知っていると、典型的な誤りは予測できます。

  1. 珍しい単語はよくある単語に負ける。 名字、社内のプロジェクトコード名、出たばかりのツールは、もっと頻度の高い何かに似て聞こえ、頻度の高いほうが勝ちます。直接の対策は語彙のヒントです。
  2. 失われた信号は取り戻せない。 部屋の反対側にあるノートPCのマイク、8 kHzの電話音声、2人が同時に話す状況では、モデルに届く前に情報が失われます。
  3. 生成型のモデルはハルシネーションを起こし得る。 トークン単位でテキストを書くデコーダーは、無音や雑音の区間で流暢な文を出力することがあります。2024年のFAccTで発表された論文 Careless Whisper では、調べたWhisperの書き起こしの約1%で、まるごと作り出されたフレーズや文が見つかりました。認識前に無音を取り除くと、この現象は減ります。
  4. 誰が話したかは別の問題。 音声認識が出すのは単語です。それを話者に割り当てるのは話者ダイアライゼーションという別のモデルで、固有の誤りがあります。

精度は通常、単語誤り率(WER)で報告されます。置換・脱落・挿入の合計を、実際に話された単語数で割ったものです。同じ音声でシステムを比べるには便利ですが、ベンダーごとの数値はそのまま比較できません。テスト用の録音が違い、「3:30」と「three thirty」を同じとみなすかどうかを決める正規化ルールも違うからです。

ツール選びにとっての意味

日常的な使い方では、パイプラインからいくつかの実用的な結論が導けます。

Speak-Yでは、ディクテーションが67以上の言語で自動句読点付きで使えます。会議モードは、ボットを参加させずに通話をローカルで録音し、話者ごとに書き起こし、既定では書き起こしをあなたのデバイスに保存します。ボットを使わない録音の利点と注意点はボットを参加させずに会議を録音する方法で解説しています。書き起こしができたら、次はそれをどう使うかです。ローカルMCPサーバーを使うと、ClaudeやCursorなどのAIアシスタントが書き起こしを検索して読めるようになります。基礎からの説明はMCPサーバーとは何かをご覧ください。

FAQ

音声認識の仕組みを一言で説明すると?

マイクが空気の圧力変化を数値の列に変えます。音声認識では通常、1秒あたり16,000サンプルです。ソフトウェアはこの信号を短く重なり合う区間に切り分け、各瞬間にどの周波数が強く鳴っているかを表すスペクトログラムに変換します。ニューラルネットワークがスペクトログラムを読み取って最も確からしい単語(または単語の断片)の並びを予測し、最後の工程で句読点、大文字小文字、数字の表記を整えます。

スペクトログラムとは何で、なぜ音声認識に使われるのですか?

スペクトログラムは、音のエネルギーが時間とともに各周波数へどう分布しているかを示すものです。音声認識では通常、人間の聴覚に合わせて周波数を配置した対数メルスペクトログラムを使います。たとえばOpenAIのWhisperは、25ミリ秒の窓を10ミリ秒ずつずらしながら80チャネルの対数メルスペクトログラムを計算し、音声1秒あたり100フレームの特徴量をモデルに渡します。

音声認識が人名や専門用語を間違えるのはなぜですか?

モデルは聞こえた音に対して最も確率の高いテキストを選び、その確率は学習データから来ています。珍しい名字や新しい製品名は学習データにほとんど、あるいはまったく登場しないため、発音の似たよくある単語が選ばれてしまいます。有効なのは語彙のヒントです。多くのエンジンは想定される用語のリストや短いテキストプロンプトを受け付け、出力をその表記に寄せられます。

音声認識が、話していない言葉を作り出すことはありますか?

あります。テキストをトークン単位で生成するモデルは、無音や雑音の区間で流暢なフレーズを出力することがあります。2024年のFAccTで発表された研究Careless Whisperでは、調査対象のWhisperの書き起こしの約1%に、まるごと作り出されたフレーズや文が含まれていました。認識前に無音をカットし、重要な書き起こしは見直すことでリスクを下げられます。

単語誤り率(WER)とは何ですか?

単語誤り率(word error rate、WER)は精度の標準的な指標で、置換・脱落・挿入の合計を正解テキストの単語数で割ったものです。値が低いほど良く、システムが余計な単語を大量に挿入すると100%を超えることもあります。WERの数値を比較できるのは、同じテスト音声と同じテキスト正規化ルールで測った場合だけです。