世界を動かす技術を、日本語で。

Handy – Rustで書かれた無料のオープンソース音声認識アプリ

概要

Handy はオープンソースの 音声認識(Speech-to-Text)アプリケーションキーボードショートカット で簡単に音声をテキスト化可能。 プライバシー重視 で音声データはクラウド送信不要。 シンプルな設定 と使いやすいユーザーインターフェース。 無料・拡張性 を重視し、誰でも利用・貢献が可能。

Handy:オープンソース音声認識アプリの紹介

  • Handy は自分のPC上で動作する オープンソース音声認識アプリ
  • キーボードショートカット を押しながら話すだけで、発言内容を自動でテキスト入力欄へ貼り付け
  • Push-to-Talkモード をデフォルトで搭載
    • キーを押している間だけ認識
    • 設定で切り替え可能
  • キー割り当て のカスタマイズが可能
    • 例:Ctrl+Zに変更
    • ショートカットで認識開始・終了を切り替え
  • Mac上の通知アイコン で動作状況を確認
    • アイコンが光れば認識中
  • テキスト入力欄が無い場合は何も貼り付けない仕様
  • 開発者やユーザーが自由に拡張・貢献 できる設計

Handyの特徴

  • 無料・アクセシビリティ重視
    • 誰でも使えるツールの提供
    • 有料化やペイウォール無し
  • オープンソース
    • コード公開
    • コミュニティでの改良・拡張が可能
  • プライバシー保護
    • 音声データは ローカルPC内 のみで処理
    • クラウド送信不要
  • シンプルな設計
    • 1つのツールで1つの仕事
    • 話した内容をそのままテキストボックスへ貼り付け

Handyの今後とコミュニティへの呼びかけ

  • オープンソースコミュニティ での共同開発を推進
  • 個人のニーズに合わせた機能拡張 が可能
  • アクセシビリティ向上 への貢献呼びかけ
  • 誰でも参加・利用可能なプロジェクト

Hackerたちの意見

元のShow HNのクリエイターの説明を読んでみてね: https://hw.leftium.com/#/item/44302416

これ、めっちゃ好き!録音の履歴をどうやって消すの?

タイトルに使われている言語が指定されてるけど、ホームページには全然書いてないのはなんで?

マーケティングかぁ。正直言って、ここではあんまり良くないかもね。ライブラリじゃないし、完全にRustで書かれてるわけでもないし。

RustかGoなら、PythonやJSみたいなランタイムやC++のビルドシステムに悩まされなくて済むね。

元のShow HNからタイトルをそのままコピーしたよ: https://hw.leftium.com/#/item/44302416 もし元のHNリンクを使わないことで問題があったら: https://news.ycombinator.com/item?id=44302416 (最初のリンクの方が読みやすいと思うし(CSS/フォーマット/ダークモード)、ちょっとコンパクトで、元のHN投稿へのリンクも含まれてるよ。IDを見れば手動でHNリンクを再作成するのも簡単だしね。)

すごい!これ、自分で作ろうと思ってたんだ。コード見て、貢献できるか考えてみるね。よろしく!

こんにちは、Handyの作者です!どんな手助けでも大歓迎だから、貢献しやすくする方法があったら教えてね!

いいね、これで長い目で見たら手首の痛みを防げるかもw。AppImageがGPU計算を使うことはないよね?まぁ、パラキートはCPUでも十分速いから、あんまり関係ないけど。

Whisperモデルは全部GPUを使うと思うよ。パラキートモデルだけがCPUに制限されてる。 (AppImageについてはよく知らないけど、モデルはアプリ画像に含まれてたの?それともモデルを選んだ後にダウンロードする感じ?)

WhisperはVulkanとMetalのアクセラレーションを使ってるけど、whisper.cppは現在CPUのみだよ。

恥ずかしげもなく宣伝するけど、Linux専用の超ミニマリストなアプリ、whisper.cpp専用のやつだよ: https://github.com/daaku/whispy 自分のLinuxノートパソコンで任意のアプリケーションで音声をテキストにしたくて、モデルの読み込みが一番遅い部分だって気づいたんだ。だから、SIGUSR2を使って録音のオンオフを切り替えるデーモンプロセスを作って、pw-recordで録音して、読み込んだwhisperモデルにデータを渡して、最後にydotoolを使ってテキストを入力するっていうアプリを作るのは比較的簡単だったよ。Goで約200行、Rustで約150行(Rust版は履歴をチェックしてね)。

リライトについてすごく興味あるんだけど、Rustが遅すぎたの?

なんでLinuxだけなの?Goやwhisper.cppはクロスプラットフォームじゃないの?

+1、嬉しいユーザーであり、謙虚な貢献者だよ。

すごいよ、Vlad!

ターミナル好きのために似たようなものを作ったよ。Pythonで作ったCLIツールで、hnsっていう名前なんだけど、完全にローカルで音声をテキストにするためにfast-whisperを使ってる。自動的にトランスクリプションをクリップボードにコピーするし、stdoutにも書き出すから、他のアプリケーションにスムーズにペーストしたり、他のプログラムやファイルにパイプ/リダイレクトすることもできるよ。[1]: https://github.com/primaprashant/hns

よくできてるね!Whisperのポートを使ってるみたいだから、私が作ったWhisperを使ったgnome拡張機能の宣伝をさせてね: https://extensions.gnome.org/extension/8238/gnome-speech2tex...

すごい!これ、ずっと欲しかったんだ。Livecaptionsはあんまりメンテされてないみたいだし。

Tauriにいるだけで、このアプリはM3 Maxで約120MBも使ってるんだよね。現代のデスクトップアプリがほとんど何もしてないのに、こんなにリソースを消費するのは本当に驚きだよ。 - メニューバーにアイコンを設定する - どのモデルを使うか選ぶウィンドウを表示する それだけ。何もしてないのに120MBだなんて。

本当に同じ驚きを感じる!今のコンピュータは確かに昔より速くて強力で小型化されてるけど、ユーザーにとって実際に何か具体的な変化があったのかな?ブートアップはSSDのおかげで早くなったけど、ギガヘルツのおかげじゃない気がする。なんか、余分なパワーが最大限に使われてるけど、速くすることには集中してない感じ。1000ファイル以上のフォルダで「cmd+a」した時に、マックが0.5秒もフリーズするのはどうしてなんだろう?Excelがすぐに開かないのはなぜ?それに、Excel 98 for Macが154.31MBだったのに、今のExcelは2.29GBってどういうこと?LANでのファイル転送が1999年と同じくらい遅いのも謎だよね、両方のコンピュータが同時に100MB/s以上でダウンロードできるのに、10MB/sくらいなんて。GB単位のメモリを抱えたタブのことは置いといて、全体的には700以上のタブを文句も言わずにうまく管理してるし。ログのことはどうなの?これは新しい哲学の分野だよね。コンソールを開いて、計算の可能性が非線形に広がる一方で、ユーザー体験が哲学的な不条理に陥る時代を目撃してみて。

かなりの膨張は、モデル自体を実行するためのONNXやwhisper.cppのような依存関係から来てるんだよね。UIは「何もしてない」ように見えるけど、実際の膨張はUIからではないんだ。