cjpais/Handy

A free, open source, and extensible speech-to-text application that works completely offline.

Handy – オフライン、プライバシー最優先の音声認識

何ができるか – Handy は無料でオープンソースのデスクトップアプリで、クラウドに音声を送信せずに、任意のウィンドウに即座にテキストを入力できます。Windows、macOS、Linux でローカル実行され、オンデバイスのニューラルモデル(OpenAI風 Whisper または CPU 最適化の Parakeet)を使用して音声認識を行います。

動作方法

  1. 設定可能なグローバルショートカット(ホールドで録音またはトグル)を押します。
  2. 話す – 音声は cpal を通じてキャプチャされ、Silero VAD でフィルタリングされます。
  3. ショートカットを離すと、選択されたモデル(Whisper Small/Medium/Turbo/Large または Parakeet V3)に音声が送られます。
  4. 結果として得られたテキストが、現在フォーカスされているアプリケーションに自動的に貼り付けられます。

すべてのステップはあなたのマシン上で行われ、ネットワーク通信は必要ありません。


主な機能

  • オフライン推論 – Whisper GGML/GGUF または Parakeet モデルと連携;利用可能な場合は GPU 加速が有効になります。
  • クロスプラットフォーム – macOS(Intel および Apple Silicon)、Windows x64、Linux x64 用のネイティブビルドを提供。
  • 拡張性 – Tauri(Rust バックエンド、React/TS フロントエンド)で構築されているため、開発者はプラグインや新しいモデルを追加可能です。
  • グローバルショートカットrdev でシステムワイドなショートカットを提供;CLI フラグで実行中のインスタンスを制御可能(handy --toggle-transcription)。
  • 音声活動検出 – Silero VAD により、音声認識前に無音をフィルタリングし、不要な処理を削減。
  • Raycast 統合 – macOS ユーザーは Raycast ランチャーより Handy を制御可能。
  • デバッグモード & CLI – 埋め込みデバッグオーバーレイ、詳細ログ、パワーユーザー向けの多数の起動フラグを備えています。

アーキテクチャの概要

レイヤー 技術 役割
UI React + TypeScript, Tailwind CSS 設定ウィンドウ、オーバーレイ UI
アプリシェル Tauri (Rust) クロスプラットフォームパッケージング、システム統合
音声 I/O cpal マイクストリームのキャプチャ
VAD vad-rs (Silero) 音声と無音の検出
ショートカット rdev グローバルキーボードショートカット
リサンプリング rubato 音声をモデル要件のサンプルレートに変換
Whisper 推論 transcribe-cpp (GGML/GGUF) GPU または CPU 用 Whisper モデル
Parakeet 推論 transcribe-rs CPU 最適化の Parakeet V3 モデル

はじめ方

  1. インストール – GitHub リリースページからバイナリをダウンロード、またはパッケージマネージャーを使用:
    • macOS: brew install --cask handy
    • Windows: winget install cjpais.Handy
  2. アプリを実行し、マイクおよびアクセシビリティ権限を許可し、設定 → キーボードでショートカットを設定。
  3. ショートカットを押して話す、離す – 転写されたテキストがカーソルがある場所に貼り付けられます。

高度な制御 – CLI フラグを使って録音のトグル、隠し起動、トレイアイコンの無効化などを可能にします。例:

handy --start-hidden --no-tray &   # 静かに起動
handy --toggle-transcription       # カスタムショートカットやスクリプトからトグル

既知の制限とトラブルシューティング

  • macOS の Bluetooth マイク – 再生音量が低下する可能性あり;最良の結果を得るには内蔵マイクまたは有線マイクを使用。
  • fn/Globe キーのショートカット – Apple キーボードでのみ動作(ハードウェア HID の制限による)。
  • Whisper モデルのクラッシュ – 一部の Windows/Linux 環境で発生;コミュニティの支援を要請。
  • Linux Wayland – テキスト挿入には wtype または dotool が必要;オーバーレイがフォーカスを奪う可能性があるため、オーバーレイ位置を「なし」に設定することを推奨。
  • 実行時ライブラリ – Linux では libgtk-layer-shell0(またはディストリビューション固有のパッケージ)が必要な場合があります。

Handy の拡張

バックエンドが Rust、UI が標準的なウェブスタックであるため、貢献者は以下が可能です:

  • 新しいモデルローダーの追加(例:他の GGUF/ONNX モデル)。
  • OS 間でのグローバルショートカット処理の改善。
  • 追加統合の構築(例:VS Code 拡張やブラウザプラグイン)。
  • 設定ストレージのリファクタリング、またはカスタムポストプロセッシング用のプラグインシステムの追加。

ロードマップ(README 時点)

  • ファイルへのデバッグログ出力。
  • macOS ショートカットの改善(Globe キー、グローバルショートカット処理の再実装)。
  • オプトイン分析(プライバシー最優先)。
  • 設定システムの整理と Tauri コマンドのリファクタリング。

パワーユーザー向けの簡単な検証

Handy はリリースアーティファクトを Tauri のアップデーターシグネチャで署名しています。公開鍵は src-tauri/tauri.conf.json にあり、README に示すように minisign でダウンロードを検証可能です。


結論 – Handy はプライバシーを尊重し、3つの主要デスクトップOSで動作し、オープンソースの音声認識ライブラリに基づく、完全にオフラインのシンプルな音声入力ワークフローを提供します。フォーク可能で拡張可能な音声認識ツールとして、非常に良い基盤です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト