音声入力アプリをVibe codingで作った

AIにプロンプトを書くのが、正直だるくなってきた。

音声入力で高速にVibe codingをする、というSNSのポストもよく見かける それなら自分でも試してみようと思ったのだが、なぜか状況がねじれて音声入力アプリを作ることになった。

Mac OSやiOSに標準で付いている音声入力でも、用途としては十分だと思う。 ただ、自分がやりたかったのは、音声をそのまま文字にするだけではなく、テキストの加工もしたいと思った。

色々な音声入力アプリやサービスを使えばいいのだろうが、サブスクしたくない それなら自分で作ればいい、という結論になった。

仕事でOpenAIのWhisperを教えてもらったことも大きい。

Usual Tone of Voice

https://github.com/pipboy3000/usual-tone-of-voice

アプリの名前は「Usual Tone of Voice」。 名前にVoiceを入れようと考えたとき、頭に浮かんだのがAirのアルバム名だった。 そのまま拝借した。

自分だけが使えればいいので、App StoreやDMGで配布することは考えていない。

操作はシンプルだ。 「⌘⌘」で音声を録音し、もう一度「⌘⌘」で録音を終了する。 whisper.cppで音声をテキストに変換し、OpenAIを有効にしていれば、指定したプロンプトに従ってテキストを加工する。

初回起動時に、whisper.cppで使うモデル(large-v3-turbo-q8_0)をダウンロードする。 それ以降は、ネット接続がなくても音声入力が使える。

雑感

  • 全面的にVibe codingで作っている。使ったのはCodex。gpt-5.2-codex high。AGENTS.mdはまったく設定していないし、作ってもいない。
  • 土曜日に大まかな形ができ、日曜と祝日の月曜に細かく作り込んでいった。
  • 最初は swift run で動く簡単なものだったが、色々あり、最終的にはXcodeをインストールして使うことになった。
  • Whisper自体もプロンプトを受け付けるが、これは正しい単語を使うように誘導する用途らしく、自分の想定とは違った。そのためOpenAIとの連携機能を後付けした。
  • 当初は https://github.com/openai/whisper を使っていたが、途中から https://github.com/ggml-org/whisper.cpp に切り替えた。実用的な速度で変換できるようになり、アプリを作り続けられた。
  • テキスト加工のためにOpenAIのAPIへテキストを送る以上、動作が遅くなるのは承知の上だった。送信するトークンサイズを調整することで、我慢できる実行速度には収まっている。長文だとどうなるかはまだ分からない。
  • アプリのアイコンは https://github.com/betomoedano/snapai で作った。どこまでもVibe codingである。
  • 経緯はどうあれ、自分のアイデアがアプリとして結実するのはやはり嬉しい。