はじめに
最近、AIにいろいろ質問するようになりました。会社ではもちろんのこと、自宅でも使うようになっています。筆者の場合、趣味がプログラミングということもあり、これまで、ちまちまとGoogleで検索しながらコピペで実装していたものを、Codexというエージェントをつかって、色々調べてもらったりするようになりました。便利になったと、本当に思います。
しかし、とても便利なのですが、画面をずっと見ていると、目が少し疲れます。また、年なのか、ウトウトしてしまうことがあるのですね。一つは年のせい。もう一つは、応答の遅さでしょうか。いえ、けして遅いといっているのではなく、すごく眠りのリズムとあうのです。Codexに指示を出し、3-4分Codexが考え、答えを出す頃には、こっちは眠りでガクッとなっていると。そうすると、次の指示を出すのがまた数分後となり、対話が進まないのです。まあ、最近は時間に追われることがないので、それでも問題はないのですがね。
とはいえ、やっぱりCodexが答えを返したら、こちらも即座に応答したい。そんなことを考えていたら、Codexの応答をきっかけに、音声合成で読み上げる仕組みを作っている方が多数いることを知りました。
本稿は、それを参考に、筆者が持つMFCの知識で簡易な読み上げアプリを作ったので、その紹介をしたいと思います。MITライセンスで公開していますので、ライセンスの条件に従えば、無料で利用でき、商用利用も可能です。ぜひ、Codexの利用中にうとうとしてしまう方に使ってみていただきたいと思っています。
Codex音声読上げアプリ「CodexParakeet」
拙作、「CodexParakeet」は、Windows上で動作する、Codex応答読み上げアプリです。Codexから返ってきた回答を、VOICEVOXの声で流暢に読み上げてくれます。作業をしながら、Codexの回答を耳で聞けるようになるということです。
アプリ紹介ページはこちらです。
本アプリの特徴は、次のとおりです。
- Codex CLIの回答を日本語音声で読み上げる
- Codexのターミナルごとに最大3話者まで割り当てる
- 画面上のターミナル位置に応じて、音声の方向を変える(音像定位)
- かわいらしいインコのキャラクターが、音声に合わせて口を動かす
現在利用できる声は、WhiteCUL、春日部つむぎ、ずんだもんです。
日本語にしか対応していませんが、とにかくVOICEVOXの流暢な発声でCodexの応答が返ってくるというのは、とても刺激的な体験と言えます。
特に、本アプリの特徴である「画面上のターミナル位置に応じて、音声の方向を変える」は、一度体験していただきたいです。画面上にCodexのターミナルを2つ、3つ配置していたとしても、声を聴くだけで、どの方向にあるターミナルからの応答なのか、おおよそ掴めるのです。
そう言えば、筆者は数十年前、今の会社に入社した際、音像定位なんていう夢のような技術を研究していたものでした。それがいまやこんなパソコンのアプリで簡単にできてしまうのですから、技術の発展は驚くべき速さです。
また、音像定位だけでなく、ターミナルごとに音声合成の話者を切り替えています。この定位と話者の切り替えにより、カクテルパーティー効果のような聞き分けやすさが生まれるのです。要は、特定のウインドウに意識を向けておくと、そのウインドウからの音声にだけ敏感に反応できるのです。人間ってすごいですね。
仕組み
本アプリの大まかな流れは次のとおりです。
-
config.toml内に、あるスクリプトをフックとして仕掛けておきます。Codexから応答が返るたびに、そのスクリプトが呼び出されます。 - Codexから応答が返ると、スクリプトが取得したスレッドIDから、呼び出したCodexのウインドウ位置を特定します。その位置とスレッドIDを、応答文と共にCodexParakeetへ送ります。
- CodexParakeetはVOICEVOX COREを使い、応答文を音声に変え、その音声に音像定位を適用します。
- その音声がスピーカーから再生されます。
この「Codexのウインドウ位置を特定」というのが曲者でして、Codexクライアントによっては、うまく位置が取得できないのです。現在うまく動作するクライアントは、OpenAI製のCodex アプリと、MSYS2 です。この当たり、改善できる方がいましたら、お力をお借りしたいです。
導入方法
導入は少し手順がありますが、Release版を使えば、基本的にはファイルを配置してCodex CLIの設定を追加するだけです。
ソースコードや詳しい紹介は、こちらの公式ページにもまとめています。
使ってみた所感
最初は、Codexがしゃべるというだけで少し不思議な感じがしました。でも、実際に使ってみると、画面を見続けなくてよいのが思った以上に便利です。別の作業をしながら回答を聞けるので、Codexとのやり取りが少し身近になった気がします。
インコのキャラクターが口を動かすので、音声だけよりも楽しいです。長い回答のときは、インコが一生懸命しゃべっているように見えます。これがどのような効果に繋がるかわかりませんが、まあ、楽しいってことは良いことですよね。
終わりに
本稿で、拙作「CodexParakeet」の紹介をさせて頂きました。ソースコードも公開していますので、是非改良したら教えて下さい。
