音声入力ツール「VoiceInk」を自前ビルドして使う

最近、M4 MacBook Air(32GB RAMモデル)を使い倒しているんですが、やっぱりこのチップのパワーを活かさない手はないですよね。

というわけで、オープンソースの音声入力・文字起こしツール「VoiceInk」を自分のMacでビルドして、安定して動かせるようにするまでの道のりを記録しておこうと思います。

「自前ビルド?」と聞くと難しそうに聞こえるかもしれませんが、一回環境を作っちゃえば自分専用の最強文字起こし機になります。やっていきます。

1. さっそくビルドしていく

まずは開発環境の整理からです。
今回の舞台は M4 MacBook Air。Swift と CoreML、さらに whisper.cpp を組み合わせた構成になっています。

工程としてはざっくり4つ。サクサク進めていきましょう。

1.1. ソースコードを持ってくる

まずは GitHub からコードを落としてきます。
whisper.cpp みたいな、中身が詰まったサブモジュールも一緒に持ってくる必要があるので、--recursive を忘れずに。

git clone --recursive https://github.com/Beingpax/VoiceInk.git

1.2. AIエンジンのビルド

次に、心臓部となる音声認識エンジンをビルドします。
Apple Siliconに最適化された XCFramework を作ってくれるコマンドです。

make whisper

ここは少し時間がかかるので、焦らずに待ちましょう。

1.3. プロジェクトを整える

ビルドしたフレームワークを、Xcodeプロジェクトがちゃんと認識できるように配置し直します。

make setup

1.4. ローカル専用ビルドを実行!

最後に、自分専用の署名を乗せたバイナリを生成します。
MakefileLocalBuild.xcconfig といった設定ファイルがリポジトリにあらかじめ用意されているため、このコマンドを叩くだけで自動的に ~/Downloads フォルダへアプリ本体が書き出されるようになっています。手作業で出力先を設定する必要はありません。

make local

これで、まずはアプリ自体が動くようになります。

2. 【最重要】「ビルドのたびに権限を聞かれる問題」をまるっと解決する

さて、ここからが個人的に一番大事なところです。

VoiceInk を自前でビルドして使っていると、
「ビルドし直すたびに、アクセシビリティ権限の許可を求められる」
という、とっても面倒な現象が起きます。

これ、macOS のセキュリティ(TCC)が「前のアプリと今回のアプリ、中身がちょっと違うよね? 怪しいからもう一回許可して!」って言ってくるのが原因なんです。

2.1. 要は「身分証明書」が必要なわけです

この問題を解決するのが 「Apple Developer Team ID による正規署名」 です。

ざっくりいうと、アプリに「不変のアイデンティティ(身分証明)」を叩き込むわけです。

  • チームID (開発者固有の識別番号)
  • バンドルID (アプリ固有の識別文字列)

この2つをセットにして署名することで、macOS は
「あ、これ前回と同じ人が作ったあのアプリの最新版だね。さっき許可したから、今回もそのまま通していいよ!」
と認識してくれるようになります。

これで、再起動や再ビルドのたびにポップアップが出てくるストレスから解放されます。よかった。

3. 自分好みにカスタマイズしてみた

せっかく自前でビルドしているので、使い勝手も調整しました。

3.1. アップデートはどうするの?

公式アプリじゃないので「自動アップデート」は効きません。
最新の機能を取り込みたいときは、

  1. git pull で最新コードにする
  2. make local を叩く(署名設定は LocalBuild.xcconfig に保存してあるので勝手に適用されます)

これだけでOKです。

4. まとめ

M4チップの強力なパワーを活かした VoiceInk は、まさに自分専用のセキュアな文字起こしツールになりました。
一度署名のフローを固めてしまえば、あとはコードを自由にイジっても権限設定に悩まされることはありません。

こうやってOSSのコードを自分でイジって、手に馴染むようカスタマイズしていくプロセスはやっぱり面白いですね。

もし「自分でビルドするのは面倒だな…」という方は、公式のサービス(tryvoiceink.com)の利用も検討することをお勧めします。
こちらはサブスクではなく買い切り(One-Time Purchase)となっており、一度課金すれば今後のアップデートやサポートが継続的に受けられるという大きなメリットがあります。

OSSのコードをそのままビルドしてタダ乗りさせてもらうのも一つの手ですが、「これだけ素晴らしいアプリを作ってくれた開発者に敬意を表し、今後の開発を応援する」 という意味でも、公式版を購入する価値は大いにあると思います。

ちなみに、最近は Aqua Voice のような強力なAI音声入力ツールもありますが、あっちは処理の一部をクラウド(OpenAIのAPI等)に投げるため、厳密な機密情報を扱う場合は少し気を遣う場面があります。
その点、VoiceInk(特にローカルで whisper.cpp を回す構成)は、音声を自分のMacから一切出さずに「完全オフライン」で処理を完結させることができます。オープンソースで中身が透明なことも相まって、この「圧倒的なセキュアさ」が個人的には最大の魅力だと感じています。

今後やっていきたいこと:

  • [ ] 更なるプロンプトの調整
  • [ ] M4のニューラルエンジンを極限まで使い切る設定の模索

以上、VoiceInk のビルド記録でした!