Whisper Web UI を自作したら音声文字起こしがラクすぎた話

AI画像生成

⚠️ 注意: AI画像生成時は著作権・肖像権にご注意ください。商用利用前には各サービスの利用規約をご確認ください。当ブログは生成された画像に関する責任を負いかねます。

要約

Whisperをブラウザから操作できるローカル音声文字起こしアプリを作りました。音声・動画ファイルをドラッグ&ドロップするだけで文字起こしでき、SRT/VTT形式の字幕ファイルも生成できます。動画編集者や議事録担当者にとって、テロップ作成の手間を大幅に削減できるツールです。

はじめに

モチベル
音声の文字起こし、Whisperでできるのは知ってるんだけど毎回コマンド打つのがめんどくて……
クーラット
わかる!ファイルパスとかオプション毎回確認するの地味に手間だよね。

インタビュー音声の文字起こしをするとき、毎回Whisperをコマンドラインから実行するのが面倒でした。

コマンド自体は短くても、ファイルパスを打ち込んでオプションを確認して……という手間が積み重なる。もっとサクサク使えるUIがほしいと思って自作したのがこのアプリです。

Speech to Text UI とは

Speech to Text UI は、Whisperをはじめとする複数の音声認識エンジンをブラウザから手軽に操作できるローカルWebアプリです。

MP3, MP4, MKV, WAV, M4A, FLAC, OGG, WebM, AVI, MOV など、ffmpegが対応しているほぼすべての音声・動画フォーマットをそのまま投げ込めます。

Speech to Text UI のメイン画面
ブラウザで開くシンプルなUI。ファイルをドロップするだけで文字起こしが始まる
  • バックエンド: Python / FastAPI
  • フロントエンド: HTML + CSS + JavaScript(フレームワークなし)
  • 通信: Server-Sent Events(SSE)でリアルタイム進捗を表示

ローカルで動くため、音声データが外部に送られません。会議録音やインタビューなど、プライバシーが気になる音声にも安心して使えます。

同じく自作したローカルWebツールとして、AI画像の背景除去ができる rembg-ui もあります。こちらもブラウザからドラッグ&ドロップで使えます。

リポジトリ(MIT ライセンス):

GitHub - RyoheiTanaka/speech-to-text-ui
Contribute to RyoheiTanaka/speech-to-text-ui development by creating an account on GitHub.

対応している音声認識エンジン

4種類のエンジンをUIから切り替えられます。

エンジン 特徴
Whisper OpenAI公式。安定・シンプル
faster-whisper 約4〜5倍高速。GPU効果が大きい
WhisperX 単語レベルのタイムスタンプ。字幕精度が高い
SenseVoice Alibaba製。超高速・感情認識・音響イベント検出

実際に使ってみた感想としては、faster-whisperが速度・品質ともに十分な結果でした。処理しながらセグメントがリアルタイムでブラウザに流れてくるので、長い音声でも「今どこまで処理しているか」がわかって待ちやすいです。

一方で、OpenAI公式のWhisperはGPUの恩恵をあまり受けない実装のようで、GPU環境でもCPU処理のほうが速いケースがありました。GPU環境なら素直にfaster-whisperを選ぶのがよさそうです。

モデルサイズとVRAMの目安

モデル 必要VRAM 速度 精度
tiny ~1GB 最速
base ~1GB 速い 普通
small ~2GB 普通 良い
medium ~5GB 遅め 高い
large-v2/v3 ~10GB 最遅 最高

VRAM 8GBの環境では medium が実用的な上限 です。large-v3 を無理に使うと処理時間がかなり長くなるので注意してください。

インストール方法

必要なもの

  • Python 3.10以上
  • ffmpeg(音声変換に使用)
  • GPU(CUDA)があれば高速化、なくても動作可能

セットアップ手順

1
リポジトリをクローン

git clone https://github.com/RyoheiTanaka/speech-to-text-ui.git
cd speech-to-text-ui

2
仮想環境を作成して依存パッケージをインストール

python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -r requirements.txt

GPU(CUDA)環境で高速化したい場合は、CUDA対応のPyTorchに入れ替えます。CUDA 12.8 の場合は以下のコマンドです。

pip uninstall torch torchaudio -y
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128

インストール後、GPUが認識されているか確認します。

python -c "import torch; print(torch.cuda.is_available())"

True と表示されればGPUが有効です。

注意
torchtorchaudio は必ず同じバージョンで揃えてください。バージョンが合わないと起動時にエラーになります。CUDAのバージョンが異なる場合はpytorch.orgで対応するコマンドを確認してください。

3
サーバーを起動

bash start.sh

Windows環境でbashが使えない場合は直接Pythonで起動できます。

python main.py

4
ブラウザでアクセス

http://localhost:8000 を開くとUIが表示されます。

使い方

基本の流れ

ファイルアップロードエリア
音声・動画ファイルをドラッグ&ドロップするだけ
  1. 音声・動画ファイルをドラッグ&ドロップ(複数選択可)
  2. バックエンド(エンジン)・モデル・言語を選択
  3. 「文字起こし開始」をクリック
  4. リアルタイムで結果が表示される
  5. TXT / SRT / VTT でダウンロード

便利な機能

自動開始トグル
ファイルをドロップした瞬間に文字起こしが始まります。クリック操作をひとつ省けます。

複数ファイルのキュー処理
複数ファイルをまとめてドロップすると順番に処理してくれます。放り込んでその場を離れられます。

タイムスタンプ表示
「タイムスタンプ」ボタンで [MM:SS] 形式の時刻付き表示に切り替えられます。

タイムスタンプ表示モードの文字起こし結果
タイムスタンプ表示モード。各セグメントに時刻が付く

結果の直接編集
文字起こし結果を画面上でそのまま修正できます。固有名詞の誤変換を直してからダウンロードできます。

タスク設定(transcribe / translate)
transcribe(デフォルト)は元の言語のまま文字起こし。translate に切り替えると、英語に翻訳しながら文字起こしします。外国語の音声を英語テキストで確認したいときに便利です。

初期プロンプト
固有名詞・専門用語・話者名をあらかじめ入力しておくことで認識精度が上がります。

文字起こし結果の表示画面
結果はその場で編集してからダウンロードできる

字幕ファイルを動画編集ソフトに読み込む

SRT / VTT 形式で出力できるので、動画編集ソフトに直接読み込めます。

  • DaVinci Resolve: タイムライン上に字幕トラックとして配置
  • Premiere Pro: キャプションとして読み込み・スタイル適用
  • AviUtl: Aegisub経由でSRTを変換して利用

動画編集で一番時間がかかる「字幕のタイムコード付け」が自動化されるのが最大のメリットです。特にYouTubeのような長尺動画を作っている人には刺さるはずです。スマホで撮った動画をYouTubeにアップする手順についてはこちらの記事も参考にしてください。

モチベル
字幕ファイルも出てくるんだ……テロップ用に手でタイムコード打ってたのがバカらしくなりそう
クーラット
しかも複数ファイルのキュー処理もあるから、まとめて投げ込んで放置できるのも便利だよ!

.env で細かい設定ができる

コードを触らずに .env ファイルで動作をカスタマイズできます。

PORT=8000           # ポート番号(デフォルト: 8000)
MAX_UPLOAD_MB=500   # アップロード上限(MB)
OUTPUT_TTL=3600     # 出力ファイルの保持時間(秒)
MODEL_DIR=./models  # モデルの保存先ディレクトリ

ファイルサイズの大きい動画を扱う場合や、複数人で使う場合に調整できます。

情報
出力ファイルはデフォルトで 1時間後に自動削除されます(OUTPUT_TTL=3600)。ダウンロードし忘れると消えるので注意してください。保持時間を延ばしたい場合は OUTPUT_TTL の値を大きくしてください。

こんな人におすすめ

向いている人

  • 動画編集者・YouTuber: テロップ作成の工数を大幅削減。SRTをそのままソフトに読み込める
  • ライター・記者: インタビュー音声の文字起こしが数分で終わる
  • 研究者・学生: 講義録音・インタビューデータの整理に
  • プライバシーを重視する人: データをクラウドに送りたくない
  • 議事録担当: 会議録音を手軽にテキスト化

向いていない人

  • Python / ffmpeg のセットアップが難しいと感じる人

→ クラウド系のWhisper APIサービスのほうが手軽です。Pythonのローカル環境構築に慣れておきたい場合はComfyUIのインストールガイドが参考になります

  • スマホだけで完結させたい人

→ PC前提のアプリです

注意
ローカルGPUを使うためVRAMが重要です。VRAM 8GB以下の環境で大きいモデル(large-v3等)を使うと処理時間がかなり長くなります。まずはmediumモデルから試すことをおすすめします。

まとめ

Speech to Text UI は、Whisperを手軽に使えるローカルWebアプリです。

  • faster-whisperは速度・品質ともに優秀。GPU環境があれば劇的に速くなる
  • OpenAI公式WhisperはGPUの恩恵が薄く、CPU処理のほうが速い場合がある
  • 上位モデルを使えば認識精度は十分実用的
  • SRT / VTT 字幕ファイルを自動生成できるので動画編集者に特に便利
  • ローカルで完結するのでプライバシーが気になる音声にも安心
  • VRAMが小さい環境では大きいモデルは使いにくいので注意
  • 出力ファイルはデフォルト1時間で自動削除されるのでダウンロードし忘れに注意

コマンドラインで直接Whisperを叩いている人は、一度UIに移行してみると作業効率がかなり変わると思います。

リポジトリはこちら。

GitHub - RyoheiTanaka/speech-to-text-ui
Contribute to RyoheiTanaka/speech-to-text-ui development by creating an account on GitHub.

⚠️ AI画像生成をご利用の際の重要な注意事項

著作権・知的財産権について

  • 既存のキャラクター、作品、ブランドロゴなどの模倣・複製は著作権侵害にあたる可能性があります
  • 商用利用時は特に注意が必要です

肖像権について

  • 実在人物(著名人・一般人問わず)の顔や特徴を模倣した画像生成はお控えください
  • 無断での肖像権使用は法的トラブルの原因となります

利用規約の確認

  • 各AI画像生成サービスの利用規約を必ずご確認ください
  • 商用利用の可否、生成画像の権利関係は各サービスで異なります

免責事項

  • 当ブログの情報を参考にしたAI画像生成により生じた問題について、当ブログは一切の責任を負いません
  • 法的問題が生じた場合は、利用者の自己責任となります
  • 最新の法律・規約情報は公式情報をご確認ください

適切なAI画像生成を心がけ、創作活動を楽しみましょう。
詳細についてはAIと著作権についてをご覧ください。

コメント