ASRの概略と比較
音声を文字に変換する技術は、Automatic Speech Recognition(ASR:自動音声認識)またはSpeech-to-Text(STT)と呼ばれます。
Pythonから利用できるASRには、軽量な認識エンジン、Whisper系モデル、音声理解能力を持つ新しい生成AI系モデル、ブラウザから操作できるWebUIなどがあります。
ここでは、ローカル環境で利用しやすい次の方式を比較・説明します。
ASR |
位置づけ |
主な特徴 |
|---|---|---|
Vosk |
基本 |
軽量、CPUで動作、リアルタイム処理向け |
Whisper / faster-whisper |
標準 |
多言語対応、情報が豊富、字幕作成に利用しやすい |
Qwen3-ASR |
発展 |
文脈を踏まえた認識に強く、0.6Bと1.7Bを選択可能 |
WebUI型ASR |
操作・サービス |
ブラウザからファイル投入、設定、字幕出力が可能 |
通常のローカル文字起こしであれば、まず faster-whisper を利用するとよいでしょう。
日本語の講義、技術解説、専門用語を含む音声で認識精度を重視する場合は、Qwen3-ASR-1.7B が有力な選択肢です。
コマンド操作を避け、ブラウザから音声や動画を処理したい場合は、Qwen3-ASR公式WebUIまたはWhisper-WebUIを利用できます。
ASRモデルとWebUIの違い
ASRモデルとWebUIは、同じ種類のものではありません。
音声・動画ファイル
↓
WebUIまたはPythonプログラム
↓
ASRエンジン・認識モデル
↓
文字起こし・字幕ファイル
例えば、faster-whisper は認識処理を行うエンジンです。一方、Whisper-WebUIは、そのエンジンをブラウザから操作するためのアプリケーションです。
したがって、精度は主に使用するモデルと設定で決まり、WebUIを使っただけで認識モデル自体の精度が高くなるわけではありません。ただし、VAD、話者分離、字幕出力などの周辺機能を簡単に利用できる利点があります。
主なASRの比較
Vosk |
faster-whisper |
Qwen3-ASR 0.6B |
Qwen3-ASR 1.7B |
|
|---|---|---|---|---|
導入 |
比較的簡単 |
比較的簡単 |
やや複雑 |
やや複雑 |
GPU |
不要 |
不要でも利用可能 |
GPU推奨 |
GPUを強く推奨 |
CPUでの利用 |
軽快 |
モデルによる |
可能だが遅い |
非常に遅くなりやすい |
日本語精度 |
標準的 |
高い |
高い |
より高い傾向 |
多言語 |
言語別モデル |
多言語モデルあり |
52言語・方言 |
52言語・方言 |
文脈・専門用語 |
限定的 |
比較的強い |
強い |
より強い傾向 |
フィラーの保持 |
設定・音声による |
省略される場合あり |
比較的残りやすい |
比較的残りやすい |
タイムスタンプ |
対応 |
対応 |
Forced Alignerで対応 |
Forced Alignerで対応 |
ストリーミング |
対応 |
実装による |
vLLMで対応 |
vLLMで対応 |
主な用途 |
軽量な常時認識 |
汎用文字起こし、字幕 |
精度と速度の両立 |
講義、専門的な音声 |
精度は、録音品質、話者、専門用語、モデル、デコード設定などに左右されます。「常にQwen3-ASRがWhisperより正確」という意味ではなく、実際の音声で比較することが重要です。
軽量なASR
Vosk
Voskは、比較的小さな言語別モデルを使用する音声認識ツールです。
マイクまたは音声ファイル
↓
Vosk
↓
認識テキスト
特徴は、
CPUだけでも軽快に動作しやすい
オフラインで利用できる
ストリーミング音声認識に向いている
小型PCや常時稼働する音声入力にも導入しやすい
言語ごとに対応モデルを用意する
という点です。
一方、講義や専門的な説明の高精度な文字起こしでは、Whisperの大きなモデルやQwen3-ASRの方が適している場合があります。
Whisper系ASR
OpenAI Whisper
Whisperは、多様な音声データで学習された汎用音声認識モデルです。多言語の文字起こし、言語判定、外国語音声から英語への翻訳などに対応します。
Python
↓
OpenAI Whisperモデル
↓
文字起こし・翻訳・タイムスタンプ
Whisperは内部で音声を約30秒単位のウィンドウとして処理します。長い音声を扱える仕組みはモデルとライブラリ側にありますが、無音判定や前の区間の文脈利用などの設定によって、繰り返しや欠落が発生することがあります。
また、Whisperの出力は必ずしも逐語録ではありません。「えっと」「あの」などのフィラー、言い直し、どもりが省略され、読みやすい文章に寄ることがあります。会議記録や字幕には便利ですが、発話をそのまま保存したい場合には注意が必要です。
公式情報:OpenAI Whisper
Whisperのモデルの種類
Whisperには、速度と精度が異なる複数のモデルがあります。
モデル |
パラメータ数 |
公式の概算VRAM |
特徴 |
|---|---|---|---|
|
39M |
約1GB |
非常に軽量で高速。精度確認や低性能PC向け |
|
74M |
約1GB |
軽量。短い音声や簡単な内容向け |
|
244M |
約2GB |
速度と精度のバランスがよい |
|
769M |
約5GB |
精度重視。日本語でも比較的良好 |
|
1550M |
約10GB |
高精度だが計算量が大きい |
|
809M |
約6GB |
|
tiny、base、small、medium には、多言語版のほかに英語専用の .en モデルがあります。日本語には .en を付けない多言語版を使用します。
large 系には世代があります。
名前 |
説明 |
|---|---|
|
初期のlargeモデル |
|
v1を改良したモデル |
|
多言語認識の精度をさらに改善した高精度モデル |
|
ライブラリで現在のlargeを指す別名。再現性重視なら世代を明記する |
|
|
日本語文字起こしでは、次のように選ぶと分かりやすいでしょう。
目的 |
モデルの目安 |
|---|---|
とにかく軽く試したい |
|
速度と精度を両立したい |
|
精度を重視したい |
|
VRAMが少ないGPUで使いたい |
小型モデル、またはfaster-whisperの量子化 |
英語音声だけを扱う |
|
turbo は文字起こし向けに高速ですが、Whisperの音声翻訳用途には適していません。英語への翻訳が必要な場合は、多言語版の medium または large 系を使用します。
faster-whisper
faster-whisperは、WhisperモデルをCTranslate2で高速に実行するための実装です。
Python
↓
faster-whisper
↓
CTranslate2でWhisperモデルを実行
↓
文字起こし・タイムスタンプ
認識モデルの基本はWhisperなので、base、small、medium、large-v3、turboなどを選択できます。
特徴は、
OpenAI Whisperと同系統のモデルを利用できる
GPUで高速に実行できる
CPUでも利用できる
float16、int8_float16、int8などの計算形式を選べるVADフィルターを利用できる
セグメント単位や単語単位のタイムスタンプを得られる
PyAVを使うため、通常はシステムへのFFmpegインストールを必須としない
という点です。
公式リポジトリでは、同等精度のOpenAI Whisperに対して最大4倍高速で、使用メモリも少ないと説明されています。ただし、実際の速度はGPU、CPU、量子化、バッチサイズなどで変化します。
通常のPythonプログラムからWhisperを利用する場合は、OpenAI Whisperそのものよりfaster-whisperの方が扱いやすいことが多いでしょう。
公式情報:faster-whisper
Qwen3-ASR
Qwen3-ASRは、Qwenチームが公開している音声認識モデルです。音声認識と言語判定に対応し、公式には30言語と22の中国語方言、合計52言語・方言を扱えます。日本語にも対応しています。
Python
↓
Qwen3-ASRモデル
↓
文脈を考慮した文字起こし
↓
必要に応じてForced Aligner
↓
タイムスタンプ付きテキスト
Qwen3-ASRには、主に2種類のモデルがあります。
モデル |
位置づけ |
特徴 |
|---|---|---|
|
軽量版 |
比較的少ない計算量。速度と精度のバランスを重視 |
|
高精度版 |
より大きく、文脈や難しい語を認識できる可能性が高い |
0.6Bと1.7Bの選択
0.6Bは、処理速度、GPUメモリ、認識精度のバランスを取りたい場合に適しています。
1.7Bは、
日本語の講義
技術解説
固有名詞や専門用語を含む音声
周囲の文脈から語を判断する必要がある音声
多少時間がかかっても精度を優先したい処理
に向いています。
ただし、1.7Bであっても、未知の固有名詞を必ず正しく認識するわけではありません。ASRの後にローカルLLMで誤字、句読点、表記揺れを修正する流れが有効です。
タイムスタンプ
Qwen3-ASR本体の文字起こしに加えて、Qwen3-ForcedAligner-0.6Bを利用すると、単語または文字単位のタイムスタンプを付けられます。
長い音声を分割する場合は、区間の境界で文が切れる可能性があります。そのため、前後を数秒重ねて処理し、チャンク番号、実時間範囲、重複範囲を記録しておくと、後段のLLMで重複除去や文章の接続を行いやすくなります。
ストリーミング
Qwen3-ASRはオフライン処理とストリーミング処理に対応しています。公式実装では、ストリーミングはvLLMバックエンドを使用します。ストリーミング時には、バッチ処理およびタイムスタンプ出力に制限があります。
公式情報:Qwen3-ASR
WebUIで利用できるASR
Qwen3-ASR公式WebUI
Qwen3-ASRには、qwen-asrパッケージに公式のGradio WebUIが含まれています。
ブラウザ
↓
Qwen3-ASR Gradio WebUI
↓
Qwen3-ASR 0.6B / 1.7B
↓
文字起こし
基本的には、次のコマンドで起動できます。
qwen-asr-demo \
--asr-checkpoint Qwen/Qwen3-ASR-1.7B \
--backend transformers \
--cuda-visible-devices 0 \
--ip 127.0.0.1 --port 8000
起動後、ブラウザで http://127.0.0.1:8000 を開きます。
Forced Alignerを指定するとタイムスタンプ表示も利用できます。
qwen-asr-demo \
--asr-checkpoint Qwen/Qwen3-ASR-1.7B \
--aligner-checkpoint Qwen/Qwen3-ForcedAligner-0.6B \
--backend transformers \
--cuda-visible-devices 0 \
--ip 127.0.0.1 --port 8000
長所は、公式パッケージのモデルをブラウザから簡単に試せることです。一方、字幕編集、BGM分離、話者分離などの多機能さでは、Whisper-WebUIの方が充実しています。
Whisper-WebUI
Whisper-WebUIは、Whisperをブラウザから利用するためのGradioベースのアプリケーションです。
ブラウザ
↓
Whisper-WebUI
↓
faster-whisperなど
↓
TXT / SRT / WebVTT
主な機能は、
OpenAI Whisper、faster-whisper、insanely-fast-whisperを選択可能
音声・動画ファイル、YouTube、マイク入力に対応
TXT、SRT、WebVTTを出力
Silero VADによる音声区間検出
UVRによるBGM分離
pyannoteによる話者分離
音声から英語への翻訳
Windows用の起動スクリプト、Docker、Pinokioに対応
です。
字幕を作りたい場合や、細かなオプションをブラウザで調整したい場合に便利です。
公式情報:Whisper-WebUI
Whisper ASR Webservice(Whisper ASR Box)
Whisper ASR Webserviceは、ブラウザ用の字幕編集画面というより、WhisperをローカルのWeb APIサービスとして動かすためのソフトです。
Python・別アプリ・ブラウザ
↓ HTTP API
Whisper ASR Webservice
↓
Whisper / faster-whisper / WhisperX
↓
TXT / JSON / SRT / VTT / TSV
特徴は、
DockerでCPU版またはGPU版を起動できる
OpenAI Whisper、faster-whisper、WhisperXを選択できる
REST APIとして他のプログラムから呼び出せる
Swagger UIからAPIを試せる
単語タイムスタンプ、VAD、話者分離に対応
FFmpegを利用し、さまざまな音声・動画形式を扱える
という点です。
複数のプログラムから共通のASRを呼び出したい場合や、ASRを常駐サービスとして利用したい場合に適しています。
WebUI・Webサービスの比較
Qwen3-ASR公式WebUI |
Whisper-WebUI |
Whisper ASR Webservice |
|
|---|---|---|---|
主なモデル |
Qwen3-ASR |
Whisper系 |
Whisper系 |
画面 |
Gradio |
Gradio |
Swagger API画面 |
主な目的 |
Qwen3-ASRを手軽に試す |
文字起こし・字幕作成 |
ASRをAPIサービス化 |
ファイル投入 |
対応 |
対応 |
API経由で対応 |
マイク |
対応 |
対応 |
クライアント実装による |
SRT/VTT出力 |
基本機能は限定的 |
対応 |
対応 |
話者分離 |
基本機能にはなし |
pyannoteで対応 |
WhisperXで対応 |
BGM分離 |
なし |
UVRで対応 |
なし |
タイムスタンプ |
Forced Aligner追加時 |
対応 |
対応 |
Python連携 |
モデルまたはvLLM API |
主に画面操作 |
REST APIが中心 |
導入 |
Python環境 |
Python、Docker、Pinokio |
Dockerが便利 |
向いている用途 |
Qwenの精度を試す |
字幕を手軽に作る |
複数アプリから共用する |
簡単に分けると、
Qwen3-ASRの認識精度を使いたい
↓
Qwen3-ASR公式WebUI
字幕ファイルを画面から作りたい
↓
Whisper-WebUI
別のプログラムからHTTPで呼び出したい
↓
Whisper ASR Webservice
となります。
音声・動画ファイルの扱い
ASRモデルが直接対応できる形式と、プログラム全体が受け付ける形式は別です。
例えば、内部の音声読み込みライブラリがMP4に対応していない場合は、ASRモデルに到達する前にエラーになります。その場合は、FFmpegで16kHz、モノラルのWAVへ変換すると安定します。
ffmpeg -i input.mp4 -vn -ac 1 -ar 16000 -c:a pcm_s16le output.wav
MP4・MP3・M4Aなど
↓ FFmpeg
16kHz / mono / WAV
↓
ASRモデル
WebUIが動画に対応している場合も、内部では同様に音声を抽出してから認識していることがあります。
長時間音声とチャンク分割
長時間の音声を一定時間ごとに分割すると、メモリ不足を避け、進捗を表示し、途中結果を保存しやすくなります。
一方、単純に240秒ごとに切ると、文の途中で境界になる場合があります。
チャンク1 ───────────────┐
重複10秒
┌─────────────── チャンク2
そのため、次の方法が有効です。
各チャンクの前後を5~10秒程度重ねる
チャンク番号を記録する
実際に認識した範囲と、採用する中心範囲を記録する
チャンクごとに結果を画面へ表示する
チャンク完了ごとに途中ファイルを保存する
後段のLLMに境界の重複除去と文の接続を依頼する
例えば、次のようなマーカーを付けて保存します。
[[ASR_CHUNK 0001 ACTUAL=00:00:00.00..00:04:10.00
CORE=00:00:00.00..00:04:00.00 OVERLAP=10.0s]]
認識結果...
[[/ASR_CHUNK 0001]]
この情報があれば、LLMは境界付近だけを注意して比較できます。マーカーのない全文を渡すより、重複削除の判断根拠が明確になります。
ASRの後にローカルLLMで修正する
ASRとLLMは役割が異なります。
音声
↓
ASR
↓
発話に近い文字起こし
↓
ローカルLLM
↓
誤字・句読点・表記揺れ・チャンク境界を修正
Qwen3-ASR-1.7Bなどで認識精度を高めても、次のような修正は後段のLLMに向いています。
文脈から明らかな誤字を直す
「Visual Studio Code」などの製品名を統一する
句読点と改行を付ける
チャンク境界の重複を取り除く
文の途中で切れた箇所を接続する
不要などもりや言い直しを、指定した範囲で整理する
ただし、LLMに自由な要約をさせると、内容、順番、語調まで変わる場合があります。修正指示には、例えば次の制約を明記します。
誤字、明らかな音声認識誤り、どもりを修正し、
句読点と改行を加えて読みやすくしてください。
内容、話の順番、語調、説明の詳しさは変更しないでください。
不明な専門用語を推測で追加しないでください。
ASR_CHUNKの重複部分だけを照合して一方を削除してください。
逐語録が必要な場合は、フィラーや言い直しを削除しないよう明記します。
どのASRを使うか
目的 |
適したASR・構成 |
|---|---|
CPUだけで軽くリアルタイム認識したい |
Vosk |
手軽にローカル文字起こしを始めたい |
faster-whisper |
速度と精度のバランスを取りたい |
faster-whisper |
Whisperで日本語精度を重視したい |
faster-whisper |
講義や専門用語の精度を重視したい |
Qwen3-ASR-1.7B |
GPUメモリを抑えてQwenを使いたい |
Qwen3-ASR-0.6B |
発話に近い文字起こしを得たい |
Qwen3-ASRを試し、実音声で比較 |
ブラウザからQwenを使いたい |
Qwen3-ASR公式WebUI |
ブラウザで字幕を作りたい |
Whisper-WebUI |
ASRを複数のプログラムで共用したい |
Whisper ASR Webservice |
話者分離も行いたい |
Whisper-WebUI + pyannote、またはWhisperX |
誤字やチャンク境界も修正したい |
ASR + ローカルLLM |
まとめ
ローカルASRは、目的に応じて次のように選べます。
まず文字起こしを試す
│
├─ 軽量・CPU中心
│ ↓
│ Vosk
│
└─ 汎用・情報が豊富
↓
faster-whisper
より高い日本語精度を試す
│
├─ 速度と必要メモリを抑える
│ ↓
│ Qwen3-ASR-0.6B
│
└─ 文脈・専門用語を重視
↓
Qwen3-ASR-1.7B
操作方法を選ぶ
│
├─ 自動処理・細かな制御 → Python
├─ ブラウザで操作 → WebUI
└─ 複数アプリから共用 → Webservice API
汎用的なローカル文字起こしにはfaster-whisper、精度を重視する日本語講義にはQwen3-ASR-1.7Bが有力です。
Whisperはモデル、実装、WebUIの選択肢が多く、字幕作成や既存ツールとの連携に優れています。Qwen3-ASRは新しいため周辺ツールの数ではWhisperに及びませんが、文脈や専門用語を含む音声では比較する価値があります。
最終的には、同じ音声を faster-whisper large-v3 と Qwen3-ASR-1.7B の両方で認識し、固有名詞、数字、フィラー、文の欠落を比較して選ぶのが確実です。そのうえで、必要に応じてローカルLLMに限定的な校正を行わせると、精度と読みやすさを両立できます。