Open4

「WhisperLive」を試す

kun432kun432

GitHubレポジトリ

https://github.com/collabora/WhisperLive/

WhisperLive

デモ動画

https://www.youtube.com/watch?v=0PHWCApIcCI

https://www.youtube.com/watch?v=0f5oiG4oPWQ

ほぼリアルタイムなOpenAIのWhisperの実装

このプロジェクトは、OpenAIのWhisperモデルを使用して音声入力をテキストに変換するリアルタイムの文字起こしアプリケーションです。マイクからのライブ音声入力や録音済みの音声ファイルの文字起こしに使用できます。

はじめに

このサーバーは faster_whispertensorrtopenvino の3つのバックエンドをサポートしています。tensorrt バックエンドを使用する場合は TensorRT_whisper のREADME を参照してください。

ブラウザ拡張機能

iOSクライアント

WhisperLiveはiOSでもネイティブクライアントを使用して利用可能です。

ios-client および ios-client/README.md を参照し、セットアップと使用方法をご確認ください。

ブログ記事


OpenAI Whisperをリアルタイムに対応させた実装はいくつかあるけど、基本的に元がバッチ推論のみなので、ややトリッキーな感もあって、かつ、それほどリアルタイム性もない印象だったが、でも動画を見る限りは結構高速に動いてるように見える。ということで試してみる。

なお、ライセンスはMIT。

kun432kun432

サーバは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 が用意されている様子。

https://github.com/collabora/WhisperLive/blob/12f3bb20121edf6bce0b2e04ec7bf877e9741c4a/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'

追加されたのはこれ

https://github.com/collabora/WhisperLive/commit/1ec437e71f65fa21bbf06c10f22f25ac989d5cb4

PyPiの最新パッケージはこれ

https://github.com/collabora/WhisperLive/releases/tag/v0.7.1

んー、どうやらPyPiのパッケージはだいぶ古いみたい・・・

これだとレポジトリクローンしてインストールしたほうがいいかもなぁ・・・

kun432kun432

ざっと見た感じ、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向けにはビルドされていない・・・ビルドするかぁ・・・