Whispree - 日本語開発者向け STT + LLM補正 音声入力 macOSアプリ
(github.com/Arsture)開発が好きな大学生です。AIに何かをやらせるたびにタイピングがボトルネックだったので音声入力を探して、最初はSuperwhisperを使っていました。そこまで悪くはなかったのですが、韓国語専用ではないので単語をずっと間違えるんです。
- 「GitHubにPRを上げておいた」と言うと → 「ギッポプ パル 上げた」みたいに文字起こしされます
- レイテンシは良かったのですが、認識率がもどかしかったです
お金を払えば改善はしました。でも大学生なのでお金が厳しくて、、、払いたくありませんでした。
→ そこでローカルSTTとLLMで実装してみたのですが、すごく遅かったです。
→ その後ふと思ったのですが、自分はすでにGPTを購読しているので、OAuthでLLMを借りて使えるし、STTはGroqのようなものを使えばほとんど無料同然で使えそうでした。
その方向で個人用のmacOSアプリをSwiftで作りました。
コア動作: ホットキーを押して話すと STT → LLM補正 → 元のカーソル位置に自動貼り付け。
タイピングに比べて3〜5倍速く、録音中に別のウィンドウを見ていても最初のフォーカス位置を記憶して正確にそこへ挿入します。
既存の音声タイピングアプリとの違い
既存アプリは STT → 貼り付け で終わりますが、WhispreeはSTTの後ろにLLM補正レイヤーが付きます。市販のアプリには韓国語専用のものがありませんでした。
"バリデーションしなきゃいけないんだ" → "validation しなきゃいけないんだ"
"ラックト コンポーネント" → "React コンポーネント"
"GitHubにパル上げておいた" → "GitHubにPRを上げておいた"
作ってみたらかなり満足度が高くて、使い続けながら機能を追加していきました。
Structured Mode
AIに話して入力し続けていると、自分が思っていた以上にまとまりなく話していることに気づきました。「それで」「えっと」みたいなものもたくさん入るので。そこでLLMが後処理して箇条書きに構造化してくれるといいと思って作りました。
企画を一気に吐き出したいときにホットキーを押してバーッと話すと、整理されたプロンプトが入ります。
Visual Context
話した内容だけでは文脈がわからないので、LLMが見当違いな補正をすることがありました。そこで録音中に見ている画面を自動でキャプチャすることにしました。
- 最初はフォーカスされた画面だけを渡していましたが、実際にはほかのタブも見回しながら録音していました
- そのため、すべてのタブをキャプチャする方向に拡張しました
- タブを切り替えると前のタブを即時キャプチャ、1つの画面で1.5秒止まるとその時点をキャプチャ
- スクリーンショットを直接プロンプトに貼り付ける機能も追加しました
Quick Fix (Ctrl+Shift+D)
間違った単語を補正辞書にその場で登録します。すると認識率が上がります。これも単語辞書機能を作って、面倒だったのでホットキー化しました。
ほぼ無料
- STT: Groq API(無料)
- LLM補正: Codex CLIの認証トークンをそのまま使います。OpenAIアカウントさえあれば追加費用はほぼありません
- ローカル専用も可能: もしCodex購読アカウントがなければ、ローカルモデルを使えます。ただしQwenの軽量モデルを使うか、STTだけ使うほうがDXは良いと思います...
プロバイダー & モード
- STT: WhisperKit / Groq / MLX Audio 3種
- LLM: ローカル6種(Qwen, GLM) + OpenAI 5種
- 補正モード: Standard / Filler Removal / Structured / Custom の4種類
- アプリ内のCan I Run機能で自分の端末の互換性グレードを確認可能
インストール
brew tap Arsture/whispree && brew install --cask whispree
macOS 14+ (Sonoma)、Apple Silicon専用です。最初は自分だけで使うつもりだったのでmacOSで作っており、まだほかのプラットフォームはサポートしていません。
名前も最初はFreeWhisperでした。自分だけ無料で使うつもりだったからです。その後オープンソースとして公開しようとすると、FreeWhisperはちょっとダサく感じました。APIキーを借りて使うという点から「NotMyWhisper」も考えました。少しILLITの『借りてきた猫』みたいな感じで良かったんです。でも使い続けているうちに「これは他人のwhisperじゃなくて自分のwhisperでは?」という感覚になって、結局Whispreeになりました。
MITライセンスのオープンソースです。フィードバック歓迎です。
15件のコメント
久しぶりにまた使ってみているのですが、この間にかなり進化しましたね。
ただ、1つ改善してほしい点があります。
ビジュアルコンテキスト機能はとても良いです。ですが、録音が終わるたびにキャプチャされた画面が表示されるのは少し煩わしいです。単に ESC を押すだけでキャンセルはできますが、最初から表示されないようになってほしいです。
録音時にキャプチャした画面を貼り付けるためのものだとしたら、終了後に改めてキャプチャ画面を探して表示する機能で補完するのはいかがでしょうか。
録音中に左側のOptionキーを長押しすると、コンテキストは渡されますが、貼り付けは無効にできます!
もしかして、おっしゃっているのはこの機能のことでしょうか??
いいえ。私は純粋に文字起こし機能だけを愛用しています。ですが、録音が終わるたびにキャプチャ画面の一覧が表示されるのが不便なので、オフにできればと思っています。
Optionキーを押せば表示されなくはなりますね。ですが、私の利用パターンではこれも不便な点があります。同じような不便さを感じている方は多いと思います。メインのオプションに反映してもらえないでしょうか?
ああ、そのメインオプションでおそらくデフォルトではオフになっているはずですが、以前のバージョンだと反映されていない可能性があると思います!
Whispreeアプリ -> LLM -> スクリーンショットコンテキスト -> エージェントに渡す を Off にすると、明示的に無効化できます!
使い方のパターンでご不便に感じている点については、ここでは写真添付のようなものができないためか、こちらでも明確には理解できませんでしたT_T
もしよろしければ、GitHub issue に上げていただけますか? そうすれば、できる限りコンテキストを理解したうえで反映してみます!
ありがとうございます。今日から表示されなくなったので、なぜだろうと思っていたのですが、機能をアップデートしてくださっていたのですね。
迅速なフィードバックありがとうございます。
Handyを使っていて物足りない点がありましたが、これは良さそうですね。当分はこちらに切り替えて使ってみます。
ありがとうございます!フィードバックはいつでも大歓迎です!
いいですね:) 応援しています
ありがとうございます :)
ショートカット設定にバグがあるようです
えっ、もしよければどんなバグなのかお聞きしてもいいですか?
ショートカットの設定自体ができず、リセットするとショートカットが完全になくなってしまいます。
もしかすると、Accessibility権限は設定されていますでしょうか?
まだ設定されていない場合は、AccessibilityにWhispreeアプリを追加してから、もう一度ショートカットの設定をお試しいただき、その結果をお知らせいただけますと幸いです!
一度使ってみましたが、素晴らしいですね。応援しています。
ありがとうございます!