「WhisperLive」を試す
以下のRedditスレで知った。
GitHubレポジトリ
WhisperLive
デモ動画
ほぼリアルタイムなOpenAIのWhisperの実装
このプロジェクトは、OpenAIのWhisperモデルを使用して音声入力をテキストに変換するリアルタイムの文字起こしアプリケーションです。マイクからのライブ音声入力や録音済みの音声ファイルの文字起こしに使用できます。
はじめに
このサーバーは
faster_whisper
、tensorrt
、openvino
の3つのバックエンドをサポートしています。tensorrt
バックエンドを使用する場合は TensorRT_whisper のREADME を参照してください。
ブラウザ拡張機能
- 好みのバックエンドでサーバーを起動してください(こちら を参照)
- Chrome や Firefox 拡張機能を使ってブラウザから直接音声を文字起こしできます。
iOSクライアント
WhisperLiveはiOSでもネイティブクライアントを使用して利用可能です。
ios-client
およびios-client/README.md
を参照し、セットアップと使用方法をご確認ください。
ブログ記事
OpenAI Whisperをリアルタイムに対応させた実装はいくつかあるけど、基本的に元がバッチ推論のみなので、ややトリッキーな感もあって、かつ、それほどリアルタイム性もない印象だったが、でも動画を見る限りは結構高速に動いてるように見える。ということで試してみる。
なお、ライセンスはMIT。
サーバは3つのバックエンドに対応している。ざっくりこんな感じ?
バックエンド | 動作環境 | セットアップ | ポイント |
---|---|---|---|
Faster Whisper | CPU / GPU | 簡単 | 手軽・汎用性・軽い |
TensorRT | NVIDIA GPU専用 | 難しめ | 最速・大規模 |
OpenVINO | Intel CPU / iGPU / dGPU | 普通〜簡単 | Intel環境でコスパ良く速い |
Faster Whisperが標準っぽくて、他の場合はそれぞれでインストール方法などに微妙にちがいがあるみたいなので、適宜確認。今回はローカルのM2 Pro Macで試してみる。
インストール方法は
- Pythonパッケージをインストールして起動
- Dockerで起動
があるが、一旦はPythonパッケージのほうで試してみる。
uvでPython環境を作成
uv init -p 3.12 whisper-live-work && cd $_
OS依存パッケージをインストールするスクリプト scripts/setup.sh
が用意されている様子。
portaudioとwgetがあればOKっぽい。自分の環境ではすでにインストール済みなのでスキップ。インストールされていない場合は以下を実行。
bash scripts/setup.sh
そしてwhisper-liveのパッケージを追加
uv add whisper-live
・・・でエラー。どうやら依存しているパッケージがMacに対応していない?
error: Distribution `kaldialign==0.9.2 @ registry+https://pypi.org/simple` can't be installed because it doesn't have a source distribution or wheel for the current platform
hint: You're on macOS (`macosx_14_0_arm64`), but `kaldialign` (v0.9.2) only has wheels for the following platforms: `manylinux_2_17_x86_64`, `manylinux2014_x86_64`, `win_amd64`; consider adding your platform to `tool.uv.required-environments` to ensure uv resolves to a version with compatible wheels
んー、上のスクリプトやIssue見る限り、Apple Silicon Macでも動くのは動くみたいなんだけど。該当のパッケージ(kaldialign
)側でバージョンが上がって何かが変わったとかかなぁ・・・
とりあえず kaldialign
のバージョンを下げたらいけた
uv add whisper-live "kaldialign==0.9.1"
+ whisper-live==0.7.1
サーバとクライアント、それぞれのCLI用スクリプトがレポジトリになるのでこれをダウンロード。
wget https://raw.githubusercontent.com/collabora/WhisperLive/refs/heads/main/run_server.py
wget https://raw.githubusercontent.com/collabora/WhisperLive/refs/heads/main/run_client.py
サーバを起動
uv run run_server.py \
--port 9090 \
--backend faster_whisper \
--max_clients 4 \
--max_connection_time 600
んんん?そんなオプションはないと?
TypeError: TranscriptionServer.run() got an unexpected keyword argument 'max_clients'
追加されたのはこれ
PyPiの最新パッケージはこれ
んー、どうやらPyPiのパッケージはだいぶ古いみたい・・・
これだとレポジトリクローンしてインストールしたほうがいいかもなぁ・・・
ざっと見た感じ、Dockerイメージはどうやらレポジトリの最新に追随しているようなのでそちらを使ってみる。
Macの場合はCPUになると思うので以下で。
docker run -it -p 9090:9090 ghcr.io/collabora/whisperlive-cpu:latest
エラー・・・
Unable to find image 'ghcr.io/collabora/whisperlive-cpu:latest' locally
docker: Error response from daemon: no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found
どうやらMac向けにはビルドされていない・・・ビルドするかぁ・・・