Linuxに音声入力を導入する
- hyprwhsprはWayland環境で動作する音声入力ツールである
- Whisperベースでプライバシーを保ちつつ高精度な文字起こしが可能
- AURからインストールでき、セットアップウィザードで簡単に導入できる
- 動作環境はCPU/GPU/RESTなどに対応しており、環境やニーズに応じたモデルを選ぶことができる
- 日本語環境で動作させるために行ったことは別記事を参照
TOC
Linuxで音声入力したいですよね。
今回紹介するのは、Wayland環境向けのローカル音声入力ツールのhyprwhspr。
OpenAIのWhisperをベースにした高精度な音声認識をローカルで実行するため、プライバシーを保ちながらシステム全体で音声入力が使える。
hyprwhsprの特徴
- ローカル処理 … モデルをメモリ上に保持し、外部サーバへの送信なしに音声認識を実行する
- 複数バックエンド対応 … Parakeet TDT V3、pywhispercpp、REST API、リアルタイムWebSocketなど
- GPU自動検出 … NVIDIA(CUDA)、AMD(ROCm)、Vulkanを自動検出してアクセラレーション
- CPUのみでも動作 … ONNX-ASRバックエンドによりGPUなしでも利用可能
- 音声ビジュアライザ … GTK4ベースのテーマ対応ビジュアライザで録音状態を表示
- オーディオダッキング … 録音中にシステム音量を自動で下げる
- Waybar連携 … ステータスバーに録音状態を表示
動作要件
- Linux + Wayland(Hyprland、Sway、GNOME、KDE Plasma Wayland)
- Python3 + pip(venvの環境が作られる)
- ydotool 1.0+(キーボード入力の自動化)
- wl-clipboard(Waylandクリップボード)
- GTK4(ビジュアライザ)
- PipeWireまたはPulseAudio
インストール
Arch Linux(AUR)
AURにパッケージが用意されているので、AURヘルパーでインストールできる。
| |
セットアップ
インストール後、対話式のセットアップウィザードを実行する。
| |
ウィザードでは以下の設定を順に行う。
- 音声認識バックエンドの選択 … Parakeet TDT V3やWhisperなど、使用するモデルを選ぶ
- モデルのダウンロード … 選択したバックエンドに応じたモデルをダウンロード
- ビジュアライザのテーマ設定 … 録音中に表示されるビジュアライザの見た目を設定
- Waybar連携の設定 … Waybarを使っている場合、ステータス表示を設定
- systemdサービスの登録 … ユーザサービスとして自動起動を設定
- パーミッションの設定 … ydotoolの実行に必要な権限を付与
- インストールの検証 … 設定が正しいことを確認
セットアップ完了後、ログアウト→ログインが必要。グループ権限の変更を反映させるため。
尚、私の環境では日本語環境の認識までに少し問題があった。
その内容はこちらの記事でまとめている。
- hyprwhsprで日本語音声入力をセットアップする際、バックエンドのモデルが英語専用だったため認識結果が出力されなかった
- バックエンドをpywhispercppに変更し、smallモデルをダウンロードして精度を向上させた
- キーバインドはSuper+Alt+Dと右Shiftのトグル式に設定し、push-to-talkは断念した
使い方
デフォルトのホットキーはSuper+Alt+D。
Super+Alt+Dを押す(ビープ音が鳴り、録音開始)- 話す
- 再度
Super+Alt+Dを押す(ブープ音が鳴り、録音停止) - アクティブなアプリケーションにテキストが挿入される
シンプルなトグル操作で、どのアプリケーションでも音声入力が使える。
自分はデフォルトから右シフトキーに変更した。
Shiftキーは押しやすいのにもかかわらず、正直あまり使わないため音声入力のホットキーに最適と感じている。
設定のカスタマイズ
設定の変更はhyprwhspr configコマンドで行う。
| |
デフォルトでフィラーワード(「えーと」「あのー」など)の除去が有効になっているっぽい。 わざとらしく「えっと」「あのー」「そのー」「なんか」等を喋ってみたが、認識結果には表示されなかった。いい感じ。
問題が発生した場合
以下のコマンドで診断できる。
| |
マイクが認識されない場合は、PipeWireまたはPulseAudioの設定でマイクが有効になっているか確認する。
使ってみた感想
音声入力は完全なタイピングの代替にはならないかなと言うのが印象。たぶん常用しない気がする。
エンジニアという職業柄、喋るようにタイピング出来る人が多いと思うので、そもそも文字を打つことが苦じゃない。
そんなに早口で喋ることは出来ないし(単純に早口が苦手)、もはやタイピングのほうが早かったりする。
そして精度は100%ではないので、誤認識の確認・修正も必要になる。タイプするのメンドイときに使う感じかなー。
数msのラグが発生するので脳が強制スイッチングされるのも気になる。