Windowsでもsuperwhisperが使いたい!音声要約アプリ「NotoNote」を公開しました
TL;DR
- Windows用superwhisperクローン「NotoNote」を公開しました!
- 音声の書き起こしをLLMで変換することで、洗練された文章を音声で入力できます!
- オープンソースです!(スター歓迎🙏)
みなさまは音声入力を使っておりますでしょうか。音声入力のメリットは、キーボードよりも圧倒的に入力が早いところです。個人差はありますが、筆者においては音声入力がキーボード入力よりも早く大量の文章を作成できる手段であると感じています。
しかし、音声入力では、そのまま声を解釈すると、生の音声に含まれる「えー」といったやフィラーや言い直しなどがそのまま反映されてしまい、そのままドキュメントやブログに使用できる文章を入力するには言い間違いなどのノイズを含まない、ひと繋ぎの発話をする技術が必要です。
そういった音声入力にまつわる問題をAIで解決したのがsuperwhisperです。
spuerwhisperはAIを利用した高品質な書き起こし/整形によって、音声から「完成した文章」を精度高く生成する事ができます。
また、「モード」を切り替えることによって、メッセージやドキュメントなど、コンテキストにマッチした文章を生成する仕組みがあります。「カスタムモード」という機能もあり、ユーザーが指定した形式や指示、フォーマットに基づいて文章を作成することができます。
superwhisperについて、詳しくはこちらの記事をご参照ください。
superwhisperにはWindows版がない
superwhisperの体験が非常に良かったため、日常生活に取り入れてみたいと考えました。しかし、私が普段使用しているのはMacではなくWindowsです。執筆時には、superwhisperはMac版しか存在しませんでした。
そこで、.NET開発の練習も兼ねて、.NETのデスクトップアプリケーションとしてsuperwhisperのクローンアプリを作成してみることにしました。というのも、私はUnityというC#を採用した開発環境には馴染があったのですが、C#の大元とも言える.NETが展開している開発環境に馴染みがなく、最新の言語機能にキャッチアップできていないなどの課題意識がありました。この機会に.NETが提供するフレームワークや開発環境に触れ、C#を取り巻くエコシスエコシステムについて理解を深めたい魂胆がありました。
作成したアプリケーションの紹介
使い方
事前に有効なクレジットのあるOpenAI APIのAPI Keyを用意する必要があります。もしOpenAI API Keyを持っていない場合は、https://platform.openai.com/account/api-keys から作成できます。クレジットは$1もあれば十分です。API Keyは設定画面の入力欄にセットしてください。
基本的な操作フローは以下となります。
- 文章を入力したい位置にカーソルを置きます。
- ホットキー(デフォルト:
Ctrl+Alt+S
)を押して録音を開始します。 - 入力したい内容の発話が終了したら、再度ホットキーを押します。
- 音声は自動的に処理され、カーソルがある位置に入力されます。
- 入力や音声の処理を中断したい場合は、Escapeキーを押してください。
- 異なるコンテキストに沿った入力文章を作成したい場合は、プロファイルを切り替えてください。
- プロファイルはホットキー(デフォルト:
Ctrl+Alt+D
)を使って変更することができます。 - 異なるプロファイルで生成したテキストの整形や要約などをやり直したい場合は、プロファイルを変更してから右下にあるリジェネレートボタンを押してください。変更したプロファイルを使って文章の生成をやり直します。
- プロファイルは設定画面でカスタムできます。
使用例
このアプリケーションの使用例として、私が特に気に入っている使い方が2つあります。
-
読書メモ
「要約」プロファイルに設定し、本を読みながら解釈したことをそのまま発音・録音すると、整理された読書メモがノートアプリに書き出されます。
読書メモをキーボードで入力しようとすると、両手を本から離してどこかに置く必要があり、本が閉じてしまったりと少々のやりにくさがありますが、音声入力なら片手で本を持ちながら読書メモをとることができます。
-
日記
今日あった出来事をマイクの前で話すと、その内容が綺麗に整えられたテキストとして出力されます。日記を代筆してもらっている感覚に近いかもしれません。文章を推敲する手間なく日記を書けるので、日記を習慣化する手助けにもなると思います。
技術スタック
NotoNoteで使われている技術スタックについて紹介します。
- デスクトップアプリケーションのフレームワークとしてWPFを採用
- アーキテクチャにはMVVMパターンを採用
- MVVMライブラリにはMVVM Toolkitを採用
- 主な技術スタック
-
Open.WinKeyboardHook
- ホットキー入力の監視に使用
- Win32APIのWrapperとして機能する
-
NAudio
- 入力音声をWAVファイルとして録音
-
OpenAI Wisper
- WAVファイルをテキストに書き起こし
-
OpenAI ChatGPT-4o mini
- 書き起こしたテキストの処理に使用
-
Open.WinKeyboardHook
WisperとChatGPT-4o miniは、利用料金が非常に安価で、開発中に行った試行でも課金額は1ドルにも達していません。コストパフォーマンスが良好で、性能、精度、変換スピード、レスポンスもそれなりに高く感じています。
ちなみに、ChatGPT-4o mini Transcribeというマルチモーダルな書き起こしAPIが存在します。このAPIでは、音声ファイルとテキストを受け取ることができます。このAPIにシステムプロンプトと録音した音声を送信して試してみましたが、期待した結果を得ることができなかったため、このAPIは採用しておりません。
他に使用しているライブラリとしては、LiteDB、Statelessが挙げられます。
LiteDBはNoSQLデータベースで、手っ取り早くデータを保存する用途には便利でした。プロファイルやAPIキーなどのユーザー設定情報を保存する用途に使用しています。
Statelessは軽量なステートマシン実装です。画面遷移やアプリケーションの状態をコントロールに使用しています。
使用モデルについて
使用するモデルは appsettings.json
によって拡張が可能です。OpenAI互換のTranscribe/ChatCompletion APIをサポートしておりますので、GeminiのOpenAI互換APIや、ローカル環境で実行できるwhisper.cppやollamaに音声やテキストの処理を移譲することができます。
まとめと展望
私はこのアプリケーションを日常的に使用しており、非常に満足しています。この記事もNotoNoteで下書きを行い、その後手作業で加筆修正して作成しました。
課題としては、音声をテキストに変換する処理を待つよう設計した結果、次の音声がすぐに録音できず、煩わしさを感じることが挙げられます。変換処理を高速化するか、音声の変換処理中でも録音できるようにするなど、なんらか対処したいところです。
また、Gemini対応についても検討しています。Geminiには無料枠があり、課金に抵抗のある人にも触ってもらいやすいのではないかな、と考えています。
便利な使い方やプロンプトを見つけた際には、ぜひコメントなどで教えていただけると嬉しいです。お待ちしております🙇♂️
Discussion
細かい話ですが、MVVM Toolkit(CommunityToolkit.Mvvm)はMVVMパターンを実現するためのライブラリで、UIフレームワークではないですね。
※どちらかと言えば特定のUIフレームワークに依存しないのがMVVM Toolkitの特徴です。
なるほど、UIフレームワークは「UIを構成するための再利用可能なコンポーネント群やライブラリなどをまとめたソフトウェアフレームワーク」を指す用語であり、MVVM Toolkitはそれに当たらないのですね。
ご指摘ありがとうございます!修正します!
素晴らしいソフトを開発いただきありがとうございます!
windowsでSuperWhisper的なソフトを使いたく情報を探していて出会いました。
ただ、残念なことに私のwindows環境では起動させることはできませんでした。
念の為状況を報告しておきます。
環境
現象
windows 診断レポート
診断?問題レポート?的な表示がありますがすぐに消えます。ご不便をおかけして申し訳ありませんでした...。詳細なご報告ありがとうございます🙏
初回起動に関する不具合を発見し、修正しましたので、ご確認いただけますと幸いです。