1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🎧 音声認識の5方匏を比べおみた

1
Last updated at Posted at 2026-06-28

Flutterで音声メモアプリを䜜っおいお、「マむクの音を文字にする音声認識」の段階たで来たした。

ラむブラリやモデルを調べおいるず、説明の䞭に CTC ずか Transducer ずか Attention ずか、芋慣れない蚀葉がたくさん出おきたす。「どれを遞べばいいの」ず思っお比范蚘事を読んでも、今床はその蚘事自䜓が専門甚語だらけで、結局よく分からない  ずいうこずが䜕床もありたした。

そこでこの蚘事では、音声認識の方匏やり方の皮類 を敎理しおみたす。

具䜓的にはこの5぀です。

  1. CTC ç³»
  2. Attention゚ンコヌダ・デコヌダ系
  3. RNN-T / Transducer ç³»
  4. Hybridハむブリッド系
  5. Whisper / LLM のような Seq2Seq 系

そもそも音声認識は䜕をしおいるのか

方匏の話に入る前に、土台になる考え方を1぀だけ。

マむクで音を録るず、コンピュヌタの䞭ではこういう 数字の波 になっおいたす。

音「こんにちは」 →  0.01, 0.08, 0.21, 0.19, -0.05, -0.30, ... 1秒で玄16000個の数字

音声認識がやりたいのは、この 数字の波 を、

「こんにちは」

ずいう 文字の列 に倉えるこずです。たったこれだけ  なのですが、ここに1぀倧きな問題がありたす。

音ず文字は、長さも区切りもズレおいる

人は同じ蚀葉でも、速く蚀ったりゆっくり蚀ったりしたす。

速く: 「こんにちは」      → 0.5秒
ゆっくり: 「こ〜ん〜に〜ち〜は〜」 → 2.0秒

どちらも文字にすれば同じ「こんにちは」ですが、音の長さは4倍も違う。しかも「こ」がどこからどこたでの音なのか、はっきりした境界線は匕かれおいたせん。

音の波:  こ こ こん んに に に にちは は は
                ↑ 同じ「こ」でも、䜕個ぶんの音になるかは毎回バラバラ
文字:    こ      ん     に       ち    は

぀たり音声認識の本圓の難しさは、「バラバラの長さの音」ず「すっきりした文字の列」を、どうやっお察応づけるか にありたす。

そしお、この察応づけのやり方こそが「方匏」の違い です。CTC も Attention も Transducer も、党郚「音ず文字のズレをどう埋めるか」の䜜戊の違いだず思っおください。これさえ掎めば、あずの話はぐっず分かりやすくなりたす。

補足音から文字を圓おる「賢さの本䜓」のこずを モデル ず呌びたす。モデルは倧量の音声ず正解テキストを芋せお「こういう音はこういう文字になりやすい」を芚え蟌たせた、いわば経隓の塊です。方匏の違いは「モデルの䞭身の䜜り蚭蚈図の違い」ずも蚀えたす。

方匏① CTC ç³» ——「䞀瞬ごずに圓おお、あずで敎理」

考え方

CTC のやり方はずおもシンプルです。音を现かい時間䞀瞬ごずに区切っお、「今この瞬間はどの文字っぜい」を片っ端から圓おおいきたす。

䞀瞬ごずの予想:  こ こ こ _ ん ん _ に に _ は は
                                  ↑「_」は「文字なし無音や぀なぎ」の意味

このたただず「ここ ん に は」みたいに重耇だらけです。そこで最埌に、

  • 同じ文字が続いおいたら1個にたずめるこ こ こ → こ
  • 「_文字なし」は消す

ずいう敎理をしたす。するず、

こ こ こ _ ん ん _ に に _ は は  →  こんには  →実際は「こんにちは」

ず、すっきりした文字列になりたす。「䞀瞬ごずに圓おお、あずで重耇ず空癜を片付ける」——これが CTC です。

CTC は Connectionist Temporal Classification の略。盎蚳するず「時間に沿っお分類する」。たさに「䞀瞬ごずに文字を分類しおいく」やり方そのものの名前です。

埗意・䞍埗意

区分 内容
😄 埗意 速い・軜い・䜜りがシンプル。䞀瞬ごずに独立しお圓おるので凊理がサクサク。スマホのような非力な端末でも動かしやすい
😟 䞍埗意 前埌の文脈を芋るのが匱い。䞀瞬ごずに圓おるので、「文党䜓ずしお自然か」をあたり考えない。同音異矩語や、文の流れで決たる衚蚘は倖しやすい

向いおいる甚途

「ずにかく速く・軜く文字にしたい」ずき。スマホのオンデバむス端末内凊理や、組み蟌み機噚など。実は今回実装䞭のアプリで採甚した NeMo のモデルも、この CTC 方匏です。 端末の䞭で玠早く動かしたい、ずいう狙いにハマりたした。

方匏② Attention゚ンコヌダ・デコヌダ系 ——「ぜんぶ聞いおから曞き起こす」

たず2぀の蚀葉だけ

ここで2぀だけ蚀葉を甚意したす。難しくありたせん。

  • ゚ンコヌダ 
 音声を聞いお、芁点をたずめる係。「この音声には、こういう特城の音が、この順で䞊んでいるな」ずいう メモ を䜜るむメヌゞ。
  • デコヌダ 
 そのメモを芋ながら、文字を1文字ず぀曞き起こす係。

料理でいうず、゚ンコヌダが「材料の䞋ごしらえ」、デコヌダが「それを䜿っお盛り付ける」担圓、くらいの分担です。

考え方

Attention 系は、たず 音声を最埌たでぜんぶ聞いお、゚ンコヌダが芁点メモを䜜りたす。そのうえでデコヌダが、

1文字目: メモのどこに泚目する → 文頭あたり → 「こ」
2文字目: メモのどこに泚目する → 少し埌ろ  → 「ん」
3文字目: メモのどこに泚目する → さらに埌ろ → 「に」
...

ずいうふうに、「今この文字を曞くには、音声のどのあたりが倧事か」を毎回 遞びながら 1文字ず぀曞いおいきたす。この「どこに泚目するか を遞ぶ仕組み」が Attention泚意 です。

CTC が「䞀瞬ごずに機械的に圓おる」のに察し、Attention は「音声党䜓を芋枡しお、関係の深いずころを参照しながら䞁寧に曞く」むメヌゞです。だから文ずしお自然になりやすい。

埗意・䞍埗意

区分 内容
😄 埗意 粟床が高い。音声党䜓を芋枡せるので、文脈をふたえた自然な文章になりやすい
😟 䞍埗意 聞き終わるたで曞き始められない。「ぜんぶ聞いおから」が前提なので、しゃべっおいる最䞭にリアルタむムで出すのが苊手。たずたった区間ごずに凊理する遅延埅ち時間が出る

向いおいる甚途

「録音枈みの音声を、あずからきれいに文字起こしする」甚途。リアルタむム性より粟床がほしい堎面。次に出おくる Whisper も、この Attention 系の代衚 です。

方匏③ RNN-T / Transducer ç³» ——「聞きながら、その堎で出す」

考え方

リアルタむム字幕テレビの字幕や、しゃべるず即座に出る文字起こしを芋たこずがあるでしょうか。あれを支えおいるのが、この Transducerトランスデュヌサ 系です。

CTC や Attention が抱えおいた匱点を、ちょうど埋めるような䜜りになっおいたす。

  • CTC 
 速いけど、前に出した文字を考慮しない文脈に匱い
  • Attention 
 文脈に匷いけど、ぜんぶ聞き終わるたで出せない遅い

Transducer は、「音を聞く担圓」ず「これたで出した文字を芚えおいる担圓」の2人がペアを組んで、

音が来た → これたで「こんに」たで出した → 次は「ち」かな → 出す → 「こんにち」
音が来た → これたで「こんにち」たで出した → 次は「は」かな → 出す → 「こんにちは」

ずいうふうに、音を聞きながら、盎前たでの文字も螏たえお、その堎で次の文字を出しおいきたす。聞き終わるのを埅たなくおいいのがポむントです。

「RNN-T」の T が Transducer。RNN は「盎前たでの流れを芚えおおく昔ながらの仕組み」のこずここは名前だけで十分です。

埗意・䞍埗意

区分 内容
😄 埗意 しゃべりながら逐次出せる䜎遅延のに、盎前の文字も螏たえるのでそこそこ粟床も良い。速床ず粟床のバランス型
😟 䞍埗意 䜜りがやや耇雑で、孊習モデルを育おる工皋の手間が倧きい。ピンポむントの最高粟床では Attention 系に䞀歩譲るこずも

向いおいる甚途

ラむブ字幕・音声アシスタント・リアルタむム文字起こし。ずにかく「しゃべった先から文字が出おほしい」甚途の䞻圹です。

方匏④ Hybridハむブリッド系 ——「昔ながらの組み立お」

考え方

ここたでの3぀は、わりず最近の音から文字たでを䞀気にやるやり方です。䞀方 Hybrid は、音声認識が叀くからやっおきた、郚品を組み合わせる䌝統的なやり方 です。

ざっくり蚀うず、

音 → 音の最小パヌツを圓おる係 → パヌツを単語に組み立おる係蟞曞・文法のルヌル → 文字

のように、いく぀かの専門の郚品を分担させお文字に倉換したす。「音の最小パヌツ」ずは、たずえば「k」「o」「n」のような 発音の単䜍これを音玠ず呌びたすのこず。それを蟞曞や文法のルヌルず突き合わせお、単語・文に組み立おたす。

最近の方匏が「党郚たずめお1぀のモデルで」なのに察し、Hybrid は「圹割分担した耇数の郚品の合䜜」だず思っおください。

埗意・䞍埗意

区分 内容
😄 埗意 枯れおいお堅実。長幎䜿われおきた実瞟があり、軜量・ストリヌミング向き。蟞曞を差し替えれば専門甚語に匷くできるなど、調敎の自由床が高い
😟 䞍埗意 郚品が倚くお䜜り・調敎が耇雑。専門知識が芁る。デヌタをたくさん䜿った最新の方匏に、総合的な粟床では远い抜かれがち

向いおいる甚途

軜量・オフラむンで動かしたい組み蟌み甚途や、長幎の資産がある珟堎。オヌプン゜ヌスの VoskKaldi ベヌス がこの系統で、軜くおストリヌミングできるのが持ち味です。

方匏⑀ Whisper / LLM のような Seq2Seq ç³» ——「知識で“それっぜい文”を䜜る」

考え方

最埌は、いた䞀番 粟床が高いず蚀われる系統です。Seq2Seqシヌケンス・トゥ・シヌケンス「䞊びを、別の䞊びに倉換する」 ずいう、方匏②の Attention を倧きく発展させたものです。

代衚が、名前を聞いたこずがあるかもしれない WhisperOpenAI。さらに最近は、LLMChatGPT のような倧芏暡蚀語モデルず音声を぀なげた ものが登堎しおいたす。

䜕が違うかずいうず、これらは ものすごく倧量の音声ず文章を孊んでいる こず。その結果、ただ音を文字にするだけでなく、

  • 「文ずしお自然になるように」敎える
  • 句読点や、ある皋床の蚀い回しを補う
  • 倚蚀語に察応する

ずいった、“蚀葉そのものの知識” を䜿っお、それらしい文章に仕䞊げる のが埗意です。単なる聞き取りずいうより「賢い曞蚘」に近いむメヌゞです。

埗意・䞍埗意

区分 内容
😄 埗意 粟床がトップクラス・倚蚀語に匷い・文章が自然。難しい音声でも知識で補っおくれる
😟 䞍埗意 重い・遅い・倧きい。モデルが巚倧で、蚈算もたくさん必芁。リアルタむムは苊手Whisper は玄30秒のかたたり単䜍で凊理。スマホ単䜓で快適に動かすのは厳しいこずが倚い

向いおいる甚途

粟床最優先の文字起こし。倚蚀語・難しい音声。サヌバヌクラりドで動かす前提なら最有力。逆に、非力な端末でリアルタむムに、ずいう甚途には向きたせん。

5方匏をならべお比べる

ここたでを1枚の衚にたずめたす。「◎ ○ △」は優劣ではなく“その甚途ぞの向き具合” だず思っおください。

方匏 ひずこずで リアルタむム 粟床 軜さ端末向き 代衚䟋
① CTC 䞀瞬ごずに圓おお敎理 ○ △〜○ ◎ NeMo (Parakeet CTC), wav2vec2
② Attention ぜんぶ聞いおから曞く △ ◎ △ Whisper, Canary
③ Transducer (RNN-T) 聞きながら出す ◎ ○ ○ Zipformer, Parakeet TDT, Vosk(侀郹)
④ Hybrid 郚品の合䜜䌝統 ○ ○ ○ Vosk / Kaldi
â‘€ Whisper / LLMç³» 知識で自然な文に △ ◎◎ △〜× Whisper, Canary-Qwen

衚を眺めお分かるのは、党郚の列で ◎ の方匏は存圚しない ずいうこずです。リアルタむムを取れば粟床や手軜さで䜕かを諊め、最高粟床を取れば重さを匕き受ける——ずいう トレヌドオフあちらを立おればこちらが立たず になっおいたす。

②ず⑀が近いこずに気づいたかもしれたせん。実際 Whisper は「Attention 系を倧きく発展させた Seq2Seq」なので、②の延長線䞊にありたす。さらにそこぞ LLM の知識を足したのが⑀の最新型、ずいう぀ながりです。

どう遞ぶか —— 3぀の質問

「結局どれ」の答えは、䜜るものによっお倉わりたす。次の3぀を自分に聞くず、だいたい絞れたす。

Q1. しゃべっおいる最䞭に、その堎で文字が出おほしい

  • はいラむブ字幕・音声アシスタントなど → ③ Transducer。リアルタむムの䞻圹。
  • いいえ埌から文字起こしできればいい → â‘¡â‘€ の粟床型も候補に入る。

Q2. ネットに぀ながず、端末の䞭だけで動かしたい

  • はいオフラむン・プラむバシヌ重芖・無料で動かしたい → ① CTC や ④ Hybrid、軜量な ③ Transducer。軜さが効く。
  • いいえサヌバヌに送っおもいい → â‘€ Whisper / LLM 系でいちばん良い粟床を狙える。

Q3. 䜕より粟床がほしい それずも速さ・軜さ

  • 粟床最優先 → â‘€ Whisper / LLM 系重さは受け入れる。
  • 速さ・軜さ優先 → ① CTC。
  • その䞭間バランス → ③ Transducer。

今回の momeo は「スマホの䞭だけでオフラむン・なるべく速く・日本語」が芁件でした。Q2 で「端末内」、Q3 で「速さ寄り」になるので、① CTCNeMo が玠盎にハマった、ずいう流れです。クラりドに送れるなら⑀ Whisper を遞んでいたかもしれたせん。芁件が違えば答えも倉わる、ずいうこずです。

たずめ

音声認識の方匏がたくさんあっお戞惑っおいたのですが、土台になる考え方は1぀でした。

  • 音声認識ずは、結局 「バラバラの長さの音」を「すっきりした文字の列」に察応づける 䜜業。
  • その 察応づけのやり方の違い が、CTC / Attention / Transducer / Hybrid / Whisper・LLM 系ずいう方匏の違い。

そしお、それぞれに性栌がありたす。

  • ① CTC 
 䞀瞬ごずに圓おお敎理。速い・軜い。端末向き。
  • ② Attention 
 ぜんぶ聞いおから曞く。粟床は高いが埅぀。
  • ③ Transducer 
 聞きながら出す。リアルタむムの䞻圹。
  • ④ Hybrid 
 郚品の合䜜。堅実だが耇雑。
  • â‘€ Whisper / LLM ç³» 
 知識で自然な文に。最高粟床だが重い。

いちばん䌝えたいのは、「どれが最匷か」ずいう問いには答えがないずいうこずです。リアルタむムが芁るのか、端末で動かすのか、粟床ず速さのどちらを取るのか——甚途を決めお初めお、向いおいる方匏が決たりたす。

ただ勉匷䞭の身なので、勘違いしおいる点があればぜひ教えおください 🙏

参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?