オフラインで音声認識、翻訳ができるプロトを作ってみました。
音声認識にはWhisper、翻訳はtransformers.jsを使っています。
オフラインですけどモデルは最初にロード、キャッシュされるのでそこだけはネット接続が必要ですけどね。
音声や翻訳内容が外部に出ないのでセキュリティ面で安心です。
Whisperはtinyではちょっと使いものにならないレベルですがbaseやsmall(こっちのほうが大きい)ならまあまあ使えます。
iPhoneやAndroidでも動作します。
transformers.jsはモデルがかなり巨大ですからiPhoneでは残念ながらブラウザがハングしてしまいました。Androidはギリギリ動きます。
Whisperでも英語への翻訳は一応できるのでiPhoneの時はそれで代用するようにしてます。
transformers.jsの翻訳は多少意訳っぽい傾向はありますが、まあそこそこ使えるレベルですし、動作もわりと速いです。
双方ともwasmだけでなくwebgpuにも対応してますが、まだブラウザ側が不安定で現状ではwasm
を使うほうが安心です。
リアルタイムの継続認識には対応しませんし、js版は言語識別にもまだ非対応ですが、一番の課題だった翻訳がオフラインでできるようになったのはかなりの進化です。
音声合成も当然オフラインでできるので外部への情報漏洩を避けたい場面ではかなり使えそうな感じになってきたと言えるでしょう。