はじめに
「ほんやくコンニャク」のように、相手の言葉を即座に理解し、自分の言葉を相手の言語で伝える。
そんな体験をMac上で、しかも完全オフラインで実現するために開発した「FFTrans HUD」の技術スタックと実装の工夫について共有します。
1. リアルタイム文字起こし・翻訳のアーキテクチャ
本アプリは、Appleのフレームワークと最新のOSSモデルを組み合わせ、100%ローカル環境で動作するように設計されています。
-
音声認識 (ASR): Apple純正の
speechAnalyzerを採用。高い認識精度を確保しつつ、デバイス内処理を実現しています。 -
翻訳 (Translation): 同じくAppleの
Translation APIを使用。 -
音声区間検出 (VAD):
SileroVADを導入することで、ノイズに強く、自然な文の区切りで文字起こしを確定させています。文字起こしの経過表示はしていますが、言語によって語順が異なることを考慮し、目先の速さを追い求めず、VADが確定してから翻訳することで、誤解を生みやすい誤訳や不自然な翻訳文を提示しない工夫をしています。 -
言語識別 (LID):
ECAPA-TDNN (EcapaTdnnLid107)を内包し、ソース言語の自動識別を可能にしました。
2. Apple Siliconへの最適化と驚異的な低負荷
「常時稼働」を実現するため、パフォーマンスと電力効率には徹底的にこだわりました。
- CoreMLの活用: 各種モデルをApple Silicon(M1〜M4)に最適化されたCoreMLで動かすことで、平常動作時の消費電力を1W程度に抑えています。これは動画を再生するよりも圧倒的に軽い負荷です。
- メモリ管理: 認識ログはメモリ上にのみ保持し、アプリ終了時に破棄する設計にすることで、プライバシー保護と高速なアクセスを両立させています。
3. 実装上の技術的課題と解決策
翻訳読み上げ (TTS) とエコーキャンセル
Version 1.5.0では、翻訳結果を即座に合成音声で出力する機能を実装しました。
-
エコーキャンセルの工夫:
AVSpeechSynthesizerでの読み上げ時に、マイクがその音声を拾ってループするのを防ぐため、inputNodeのsetVoiceProcessingEnabledを有効化し、システム音声側ではexcludesCurrentProcessAudioを制御しています。 -
AEC強化への布石:
AVSpeechSynthesizerは通常、speakでそのまま読み上げに入ってしまいますが、それだと将来的にAECを強化したい場合にFar-End信号を渡すことができなくなるため、FFTrans HUDでは音声をバッファリングして再生しています。再生中止を即時に行えるという意味でも有用です。 - 読み上げキューの実装: リアルタイム処理では次々にテキストが生成されるため、文章を一度バッファし、キューイングして順次読み上げる仕組みを構築しました。
カスタム辞書の即時反映アルゴリズム
一般的な文字起こしツールと異なり、本アプリでは「過去のログに対する辞書の遡及適用」が可能です。
ログビューアで固有名詞を辞書登録すると、メモリ内に保持している「文字起こし時点の情報」を元に、読み連結トークンを前後の品詞や句読点を考慮しつつ、長さによってはファジーマッチングさせることで、表示済みのログに対しても即座に表記揺れまで配慮した修正が反映されます。
4. プライバシーとセキュリティの設計
ビジネスや機密情報を扱う現場での利用を想定し、徹底した「閉じられた設計」を貫いています。
- サンドボックス動作: macOSのSandbox内で動作し、権限を最小限に制限しています。
-
オフライン認証: 14日間の試用期間を除き、購入後のライセンス認証もローカルファイル(
hud-lsa.dat)のみで行う「100%オフライン認証」を採用しています。
おわりに
Apple Siliconという強力なハードウェアと、成熟してきたオンデバイスAIのフレームワークを組み合わせることで、かつての空想科学は現実のものになりつつあります。
FFTrans HUDは、これからも「音声を、直感で伝わる情報へ」変えるための進化を続けていきます。
技術リファレンス
- 対応OS: macOS 26.0 (Tahoe) 以降
- 主要ライブラリ: FluidAudio(SileroVAD), ECAPA-TDNN
- 公式サイト: Symphonics - FFTrans HUD