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

特徴

tiny

39M

約1GB

非常に軽量で高速。精度確認や低性能PC向け

base

74M

約1GB

軽量。短い音声や簡単な内容向け

small

244M

約2GB

速度と精度のバランスがよい

medium

769M

約5GB

精度重視。日本語でも比較的良好

large 系

1550M

約10GB

高精度だが計算量が大きい

turbo

809M

約6GB

large-v3を高速化したモデル

tiny、base、small、medium には、多言語版のほかに英語専用の .en モデルがあります。日本語には .en を付けない多言語版を使用します。

large 系には世代があります。

名前

説明

large-v1

初期のlargeモデル

large-v2

v1を改良したモデル

large-v3

多言語認識の精度をさらに改善した高精度モデル

large

ライブラリで現在のlargeを指す別名。再現性重視なら世代を明記する

turbo

large-v3を基に高速化。精度低下を小さく抑えたモデル

日本語文字起こしでは、次のように選ぶと分かりやすいでしょう。

目的

モデルの目安

とにかく軽く試したい

base または small

速度と精度を両立したい

small、medium、turbo

精度を重視したい

large-v3

VRAMが少ないGPUで使いたい

小型モデル、またはfaster-whisperの量子化

英語音声だけを扱う

.en モデルも候補

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種類のモデルがあります。

モデル

位置づけ

特徴

Qwen3-ASR-0.6B

軽量版

比較的少ない計算量。速度と精度のバランスを重視

Qwen3-ASR-1.7B

高精度版

より大きく、文脈や難しい語を認識できる可能性が高い

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の方が充実しています。

公式情報:Qwen3-ASR Local Web UI Demo


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を常駐サービスとして利用したい場合に適しています。

公式情報:Whisper ASR Webservice


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 small

速度と精度のバランスを取りたい

faster-whisper medium / turbo

Whisperで日本語精度を重視したい

faster-whisper large-v3

講義や専門用語の精度を重視したい

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に限定的な校正を行わせると、精度と読みやすさを両立できます。


参考資料