Handyで音声を端末内文字起こしし、入力欄へ貼り付ける
プロジェクト概要:完全にオフラインで動作する、無料のオープンソースの拡張可能な音声テキスト変換アプリケーション。
ひと目でわかる
- これは何?
- cjpais/Handyは、ショートカットで録音し、WhisperまたはParakeetで音声をローカル処理して、認識結果を現在のアプリへ貼り付けるRust製デスクトップアプリです。
- 誰に向いている?
- Handyは、音声をクラウドへ送らず、話した内容を現在フォーカスしているアプリへ入力したい人に適しています。READMEはショートカット、ローカル処理、WhisperとParakeet、macOS、Windows、Linuxの配布、Waylandの制限、手動モデル導入を具体的に説明していますが、実際の速度や互換性は端末とモデルで変わります。
- 商用利用できる?
- できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 1 日前です。
- 何の言語で書かれている?
- 主に Rust です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
ショートカットから貼り付けまでの流れ
Handyは、キーボードショートカットまたはプッシュ・トゥ・トークで録音を始め、話し終えると音声を文字へ変換し、フォーカス中のアプリケーションへ貼り付けるデスクトップアプリです。READMEは処理が完全にローカルで、音声をクラウドへ送らないと説明しています。Sileroベースの音声活動検出で無音を除き、WhisperとParakeetを選べる構成です。
WhisperはSmall、Medium、Turbo、Largeのモデルを扱い、利用可能な場合はGPUアクセラレーションを使います。Parakeet V3はCPUで動作し、自動言語検出を備えるとされています。文字起こしの結果が正しいかは音声、言語、モデル、マイク環境に左右されるため、ローカル処理という説明と認識精度を混同しないでください。録音開始と終了のショートカットが別のアプリの操作と衝突しないかも、導入時に確認する項目です。
Tauri、React、Rustで機能を分担する
HandyはTauriアプリケーションで、フロントエンドにReactとTypeScript、設定画面にTailwind CSS、バックエンドにRustを使います。Rust側がシステム統合、音声処理、機械学習推論を担い、transcribe-cpp、transcribe-rs、cpal、vad-rs、rdev、rubatoなどが基盤ライブラリとして挙げられています。
この構成は、画面の設定とOSのマイクやグローバルショートカットを別の層で扱う設計です。macOSではCmd+Shift+D、WindowsとLinuxではCtrl+Shift+Dで高度なデバッグモードへ入る説明があります。デバッグ機能を有効にしたときのログ、音声データ、入力先を確認し、通常運用と切り分けて利用してください。依存ライブラリの版やOS側の音声APIが変わると挙動が変わる可能性があるため、配布版と自作ビルドを同じものとして扱わない方が安全です。
配布パッケージと権限を先に確認する
リリースはGitHubとプロジェクトサイトで公開され、macOS向けHomebrew caskのbrew install --cask handy、Windows向けwingetのwinget install cjpais.HandyがREADMEに示されています。ただし、これらのパッケージはHandy開発者が保守していないと説明されています。ソースからビルドする場合は、プラットフォーム別の要件をBUILD.mdで確認します。
インストール後はマイクとアクセシビリティの許可が必要で、設定画面でショートカットを構成します。権限を与えれば、音声取得だけでなく、別アプリへの文字入力も可能になります。最初はテキストエディタを入力先にし、誤貼り付け、権限を外した時の挙動、アプリ終了後の録音状態を確認してから機密アプリへ広げてください。パッケージの署名、更新経路、削除時に残るモデルと設定も、導入記録へ残すと後から確認しやすくなります。
CPUとGPUでモデルの条件が変わる
対応プラットフォームはmacOSのIntelとApple Silicon、x64 Windows、x64 Linuxです。WhisperではmacOSのMシリーズまたはIntel Mac、WindowsとLinuxではIntel、AMD、NVIDIA GPUが必要とREADMEにあります。Parakeet V3はCPUのみで、少なくともIntel Skylake第6世代または同等のAMDプロセッサが条件です。
READMEは中級ハードウェア、例としてi5で実時間の約5倍という速度を報告し、Parakeetの自動言語検出にも触れています。これは推奨と報告であり、利用端末での保証ではありません。CPU使用率、GPUメモリ、発熱、長時間録音、複数言語を実測し、条件を満たさない場合に処理が遅くなる可能性を前提にしてください。速度だけでなく、誤認識の訂正に必要な時間と、生成された文字がどこへ貼られるかも評価に含めるべきです。
LinuxのWaylandと貼り付けの制約
READMEは、Whisperが特定のWindowsとLinux構成でクラッシュする可能性を既知の問題として挙げています。Waylandではテキスト入力にwtypeまたはdotoolが必要で、ない場合はenigoへフォールバックするものの互換性が限られる可能性があります。Linuxの録音オーバーレイが貼り付けを妨げる場合は、詳細設定のOverlay PositionをNoneにする提案があります。
libgtk-layer-shell.so.0がないことによる起動失敗について、ディストリビューション別の導入コマンドも案内されています。デスクトップ環境、表示サーバー、入力支援ツールを混ぜて評価せず、GNOME、KDE Plasma、Sway、i3、Hyprlandなど実際の構成を記録してください。貼り付けが失敗しても文字起こし自体は成功している場合があるため、段階を分けてログを確認するのが有効です。
CLI制御と古いシグナルの注意
実行中のHandyには、文字起こし切り替え、後処理切り替え、キャンセルのリモート制御フラグがあります。起動時にはstart-hidden、no-tray、debug、helpが使え、macOSのアプリバンドルは指定されたバイナリパスから呼び出せます。Linuxでは外部ホットキーデーモンからpkill -USR2 -n handyまたはCLIフラグで起動を促す例があります。
READMEは、古いリリースがSIGUSR1を監視し、WebKitGTK内部の同じシグナルと衝突して録音が勝手に始まるように見える問題があったと説明し、そのハンドラーは削除されたとしています。プロセス制御を組み込む場合は、現在の版とシグナルを確認し、権限の広いpkillを無条件に使わないでください。外部ホットキーを設定した場合は、誤起動時に録音を止める操作と、起動対象を限定する方法を必ず用意してください。
モデル配置とminisign検証を忘れない
制限されたネットワークやプロキシ環境では、モデルをアプリデータのmodelsフォルダへ手動配置できます。macOSはApplication Support、WindowsはAppData Roaming、Linuxは.config配下が例として示され、WhisperのbinとParakeetのggufは直接置きます。Parakeetのtar.gzは正確なディレクトリ名で展開し、Hugging FaceキャッシュのGGUFやカスタムWhisper GGMLも検出対象になります。
リリース成果物はTauriアップデーター形式で署名され、公開鍵はsrc-tauri/tauri.conf.jsonにあり、検証にはgpgではなくminisignを使うとREADMEにあります。素材のメタデータではv0.9.6、スター30515、フォーク2744、オープンIssue161、MITライセンスを確認できます。編集部の判断では、オフライン性を重視する個人に有力ですが、モデルの出所、署名、権限、Linux入力経路をテストしてから採用してください。モデルを手動で置く場合はファイル名と取得元を記録し、不要になったモデルや音声キャッシュを削除できることも確認してください。
編集部の結論
Handyは、音声をクラウドへ送らず、話した内容を現在フォーカスしているアプリへ入力したい人に適しています。READMEはショートカット、ローカル処理、WhisperとParakeet、macOS、Windows、Linuxの配布、Waylandの制限、手動モデル導入を具体的に説明していますが、実際の速度や互換性は端末とモデルで変わります。まずマイクとアクセシビリティ権限を確認し、テスト用の短い音声、入力先、モデル署名、ログに残る情報を確かめてから日常業務へ組み込んでください。会議や個人情報を含む録音では、貼り付け先と削除手順を決め、オフラインという性質だけで情報管理の要件を満たすと判断しないでください。
コミュニティノート