FUTO Swipe: 公開型スワイプ入力モデル
(swipe.futo.tech)- モバイルキーボードのスワイプ入力方式を、公開モデルとアルゴリズムで実装しようとする試み
- 既存の高品質なスワイプ入力は、プライバシーを侵害しうるキーボードアプリやライセンス不明の非公開ライブラリに縛られており、代替が必要だった
- 完全オフラインのAndroidアプリFUTO Keyboardに搭載され、モデルをダウンロードして自分でビルドすることも可能
- 2024年8月からQWERTY英語スワイプを収集して100万件以上を確保し、2025年3月にMITライセンスのデータセットとしてHuggingFaceで公開
- 構成は汎用Encoder、言語別ContextLM、言語・レイアウト別Decoderに分かれ、テストセットではtop-4失敗率約4%、OOV除外時の誤り率1%未満を記録
- 全体モデルは約250万パラメータ規模、アクティブパラメータ約136万の小型モデルで、C++推論ライブラリswipe-libraryを通じて低スペック端末でもミリ秒単位の実行を目指す
公開スワイプ入力モデルで解こうとする課題
- FUTO Swipeは、スワイプ経路を単語予測に変換するモデルとアルゴリズムの製品群
- 現在、完全オフラインのAndroidキーボードアプリ**FUTO Keyboard** で利用できる
- Webページのデモはページサイズを抑えるためサーバー側で実行されるが、実際の製品環境ではオンデバイスで動作するため遅延はさらに低い
- FUTOはこのシステムを主にFUTO Keyboard向けに開発したが、より広いコミュニティでのモデル活用も歓迎している
- 長期投資の成果物であるため、最終ユーザーに見える形でのクレジット表記を求めており、モデルライセンスはFUTO Model Licenseに従う
データセットとモデル構成
- 2024年8月、swipe.futo.orgでQWERTY英語スワイプデータの収集を開始
- ユーザーはモバイルWebページを自発的に訪問し、案内とデータセット情報を確認
- 同意後、主にWikipedia由来の文を単語ごとにスワイプ
- 結果として100万件以上のスワイプが作成され、一部の低品質なスワイプはフィルタリングされた
- 2025年3月、100万スワイプのデータセットをMITライセンスで**HuggingFaceに公開**
- モデルアーキテクチャは役割の異なる3つのモデルに分かれる
- Encoder: レイアウトと言語に依存しない汎用モデルで、一般的なスワイプ入力予測に使われるが、最先端の精度を提供するものではない
- ContextLM: 単一言語向けの非常に小さな言語モデルで、前の単語をもとに不自然な候補を除外して予測品質を高める。学習に必要なのはテキストデータのみ
- Decoder: 言語とレイアウトに特化したモデルで、レイアウト特性を学習して最高水準の精度を出し、現在はQWERTY英語Decoderのみ存在する
性能と実行規模
- 性能指標はベンチマークに大きく依存するため、実際の使用結果は異なる可能性がある
- 3つのモデルとbeam width 300の組み合わせで、テストセットのtop-4失敗率は約4%
- 辞書にない単語を除けば誤り率は1%未満
- FUTOは大手テック企業のキーボードに匹敵する水準と評価している
- モデルはモバイル実行を考慮した小規模設計
- Encoderは635,140パラメータ
- Decoderは追加で304,155パラメータ
- ContextLMは150万パラメータで、このうち110万は埋め込み
- アクティブパラメータは1,364,271、総パラメータは2,494,767
- 低スペック端末でもミリ秒単位で実行可能で、学習にもワークステーションGPU 1台を超える計算資源は必要なかった
推論ライブラリとライセンス
- モデル予測だけでは不十分で、単語候補をスコア化し最も可能性の高い候補を見つける辞書制約付きbeam searchが必要
- そのためC++ライブラリのswipe-libraryを公開
- swipe-libraryは推論全体、デコード、beam searchを処理し、スワイプ経路から単語予測までをつなぐ
- モデルはFUTO Model License、推論ライブラリはGPLで提供される
- FUTOは学習とアーキテクチャをさらに詳しく扱う論文を準備中
2件のコメント
この会社の音声認識キーボードを使っていますが、良いです。
Hacker Newsのコメント
速度の面でスワイプ入力が好き。タップよりたいてい速く、片手でも使いやすいが、似た単語を何度も誤入力しやすく、単文字と重複文字の区別も弱い。
かなり前から、スワイプ専用の新しいキーボード配列を求めていた。Dvorakが英語タイピングの人間工学を最適化したように、スワイプ時の単語の重なりや曖昧さを減らす配列があるといい。
必ずしも26キーである必要はなく、v/w/x/zを1つのキーにまとめて、単文字は長押しで入力させることもできる。逆に
eとeeを分けたり、「前の文字を重複」させる特殊キーが必要かもしれない。問題の大半はQWERTYがスワイプにあまりにも向いていないことから来ているので、英語での精度を今の体感90〜95%ではなく**99.9%**まで引き上げられる最適配列が出るなら、新しい配列を学ぶ気は十分ある。
https://github.com/futo-org/futo-keyboard-layouts/issues/163
モデル構造上、各配列について約5万語の合成スワイプを作ってモデルに通し、認識精度を直接最適化できた。この方法で約80万の配列をテストした。
QWERTYの最大の問題は、あまりに多くの単語が一直線、あるいは鈍角の3文字連続パターンとしてスワイプされること。こうしたパターンは認識しにくく、ユーザーがどの文字を意図したのかをジェスチャーで明確に示すのも難しい。
ニューラルネット型のスワイプモデルは、アルゴリズム的な形状マッチングのようにジェスチャー形状を合わせるのではなく、ユーザーが特定の文字を狙ったという信号をジェスチャーパターンから見つける。
キーボードの形を変えると、ジェスチャーがよりうまく形成されて文字の信号が明瞭になることがある。モデルは形状マッチングと違って時間情報も使うので滞留時間にも反応できるが、滞留は流れを断つため、スワイプ配列では最小限にするのがよいと思う。
現代的な後継もあるようだ: https://play.google.com/store/apps/details?id=inc.flide.vi8
このキーボードをしばらく断続的に使ってきたが、いつもgboardに戻っていた。でも今回のアップデート以降は完全に乗り換えた。本当に良い。
文の途中の単語をランダムに大文字化する問題もあるし、単語候補でも文脈をあまり考慮していないようで、直前の単語の後に来るはずがない単語がよく出る。
まだgboardほどではないが、使い続けるに足るところまでかなり近づいた。
より高性能な端末を使えば、サイトからより大きな音声モデルとより大きな辞書をダウンロードでき、体感差もかなりある。
根本的に惜しいのは、GIF検索の追加に思想的に反対しているような点だが、ときどきあの機能が恋しくなる: https://github.com/futo-org/android-keyboard/issues/293#issu...
すばらしい。FUTOキーボードを2年間使っていて、これまで見つけた無料・プライバシー重視キーボードの中では最高だったが、こうしたキーボードのスワイプはあまりにもひどくて、スワイプを多用する身にはつらかった。
データセットに貢献しようと思って1時間ほどスワイプしたのが実際に役立ったようでうれしい。今試してみると、Googleキーボードと同じくらい良くなった感じがする。
ただ、
what'sではなくwhatsにばかりスワイプされるのはちょっと笑える。いずれ直るといい。ライセンスが気になる人のために言うと、ライブラリはGPLv3なので良いが、AndroidキーボードはFuto Licenseなのでいまひとつ。
https://gitlab.futo.org/keyboard/swipe-library/-/blob/master...
https://github.com/futo-org/android-keyboard/blob/master/LIC...
もしかしてこの条項? 配布するコピーで、ライセンス提供者に支払う機能を削除したり隠したりしてはならない、という部分。
数年前に iOS で Nintype を体験して以来、ほかのスワイプキーボードは使えなくなった。今は標準キーボードでタイピングしていて、両手が使えないときだけたまに1〜2語をスワイプする
スマホを両手で持っているときに、片方の指だけでスワイプするのは不自然で、もっさり感じる。Apple が Nintype を買収するか、あるいは Sherlock して標準キーボードに統合してくれたらよかったのに
Apple が正式にサードパーティ製キーボードを許可する前から使っていた
keyboard 69という名前のバグだらけの Android 向け Nintype ポートを作っていて、それを何年も使っていたユーザー体験は驚くほど素晴らしくて、その後に試したどのスワイプシステムも比べると本当にもっさり感じる。2本指スワイプは人間工学的に最高だけど、残念ながらニッチすぎる革新なんだと思う
新しいスワイプモデルを入れた Futo は、自分が使った Android キーボードの中で初めて GBoard と比べて妥協していると感じないものだ
音声入力が統合されていて、自動修正つきの通常入力も良く、自動修正つきのスワイプも優秀
訂正: 無料・オープンであることが保証されているわけではない。ライセンス構成がややこしい。それでもよく動くので Gboard の代わりに使うつもり
これはかなり大きい。自分が見る限り、初めて実用になる 無料のオープンなスワイプモデル にかなり近い。iOS と Android 以外のプラットフォームでもスワイプ入力を可能にする道を開き、新しい OS 参入者にとって大きな苦痛だった部分を減らしてくれる
ちょうど Microsoft が SwiftKey に広告と Bing 送りの ダークパターンなリダイレクト を入れ始めたので削除したところで、タイミングがいい
バックアップ機能を使えというパネルが何度も再表示されて、あまりにひどかったので結局 GBoard に移った。同じではないけど、慣れつつある
たぶん金のためなんだろうけど、Microsoft のやることすべてが大金を生まなければならないわけではないと思う
良さそうだけど、Futo キーボードの大きな問題は 一度に1言語 しか使えないこと。gboard なら自分が使う3言語をいちいち切り替えなくてもスワイプ入力できる。Futo もそうなってほしい
音声ディクテーション は、これまで使っていた GBoard よりずっと良い。こちらが気にしなくても文頭の大文字化や句読点を処理してくれるし、複数の文を後編集なしで完璧に合わせてくれたうえ、すべてローカルモデルで動く
欠点はリアルタイム更新ではなく、話し終わった後に一括変換される点。1〜2年前に最後に使ったときと比べて、バックスペースのスワイプやスペースバーが過敏すぎないよう修正されたようだし、いくつかカスタマイズもできるようになった