翻訳が4分たっても終わらない。原因は書き忘れた一行だった
Androidでオフライン翻訳が4分たっても終わらなかった原因と、11秒まで縮めた過程を書きました。スレッド数・発熱・メモリなど、実機で測った数字をそのまま載せています。
スマートフォンの中だけでAIの翻訳を動かす、という作り方をしています。サーバーへ送らないので電波が要らない代わりに、すべての計算をその小さな端末にやらせることになります。
これがAndroidでは、想像よりずっと大変でした。最初に動かしたとき、一文の翻訳が4分たっても終わりませんでした。同じものをiPhoneに載せると数秒で返ってきます。同業の方には笑い話ですが、当時は本気で行き詰まりました。
この記事は、その4分を11秒まで縮めるまでの記録です。推測は書きません。実機で測った数字だけを書きます。
原因は書き忘れた設定が一行。直したら約20倍になりました。
計算を分ける数を6から4に減らしたほうが速くなりました。
発熱で速度が落ちます。止めても3分は戻りません。
なぜスマホの中だけで動かすのか
ふつうの翻訳アプリは、話した声をインターネットの向こうのサーバーへ送り、そこで計算して結果を受け取ります。サーバーは強力なので速く、端末は何もしなくて済みます。かわりに電波が無ければ何もできません。
私たちは逆にしました。翻訳も、声の聞き取りも、読み上げも、全部その端末の中でやります。地下でも機内でも山の宿でも止まらないかわりに、性能の低い端末でも実用的な速さを出さなければいけません。
ここからが本題です。
同じアプリなのに、iPhoneとAndroidで速さがまるで違う
iPhoneには、こうした計算のために作られた専用の回路が載っています。アプリからそこを使わせてもらえるので、同じ処理でもずっと速く終わります。
Androidにも似た回路を持つ機種はありますが、どの機種でも同じように使える形にはなっていません。機種ごとに事情が違うので、いまのところは普通の計算回路(CPU)に任せています。中身はまったく同じものを入れているのに、待ち時間だけが数倍変わります。
この差は、今後Android側の仕組みが揃えば縮まります。ただ、それを待つあいだも使ってもらう必要があるので、CPUのままどこまで速くできるかを詰めることになりました。
4分が11秒になった、書き忘れた一行
最初に動かしたとき、一文の翻訳が4分たっても終わりませんでした。メモリが足りないのか、端末が非力なのかと疑って、あちこち測りました。どれも違いました。
原因は、計算部分を組み立てるときの設定を一行書き忘れていたことでした。その一行が無いと、いまどきのスマホが持っている「まとめて計算する機能」がまるごと無効になります。全部を一つずつ、順番に計算していたわけです。
一行足して測り直したら、11秒になりました。4分と11秒のあいだには、その一行しかありませんでした。
当時いちばん怖かったのは、原因を「端末が非力だから」と決めつけかけたことです。そう結論していたら、対応機種を切り捨てる判断をしていたはずです。測る前に決めない、というのはこのとき身に沁みました。
計算を分ける数は、多いほど速いわけではない
次に試したのは、計算を何人がかりでやらせるか(スレッド数)です。素直に考えれば、多いほど速くなりそうです。
実際に測ると違いました。6から4に減らしたほうが速い機種がありました。人数を増やすと、渡し合いや待ち合わせの手間が増えます。それが計算そのものより重くなる境目があります。
しかもこの境目は機種ごとに違います。同じ設定が全部の端末に効かない、というのがAndroidのいちばん厄介なところです。
文の渡し方でも、体感は変わる
速さは計算の力だけで決まるものではありませんでした。どこで文を区切って渡すかでも変わります。
長い文章を一気に投げると、全部終わるまで何も返ってきません。句点で区切って渡すと、話している途中から訳が返りはじめます。総時間はほとんど同じでも、待たされている感じがまるで違います。
接客の現場では、この体感差のほうが実際には効きます。
10分続けると、2〜3割遅くなる
もうひとつ、机の上では気づけなかったことがあります。発熱です。
連続して翻訳させると本体が熱くなり、10分ほどで速度が2〜3割落ちます。端末が自分を守るために計算を抑えるためです。しかも止めてもすぐには戻りません。3分ほど休ませる必要がありました。
これはアプリ側で消せる問題ではないので、隠さずに画面で知らせる方向にしました。機械なのに、そこは人間と同じだと思いました。
速さと正しさは、だいたいいつも喧嘩している
翻訳の中身を軽くすれば速くなります。写真を圧縮するのに近い作業で、数字の細かさを落としていきます。
ただし落としすぎると、人の名前から順に壊れていきます。地名や固有名詞は、文脈で補えないので真っ先に崩れます。「速いけれど名前を間違える」翻訳は、接客では使えません。
どこで手を打つかは、結局ひとつずつ試して聞き比べるしかありませんでした。ここは今も続けています。
よくある質問
いいえ。いまは実用的な速さで動いています。この記事は、そこへ至るまでに何を測って何を直したかの記録です。
故障ではありません。端末が自分を守るために計算を抑える仕組みです。少し休ませると元に戻ります。
機種によって速さは変わりますが、動く範囲を広く取るように調整しています。実際の使用感は無料の範囲で試せます。
この記事のアプリは、無料ではじめられます。
iPhone・Androidどちらでも使えます。
こちらの記事もどうぞ
海外旅行で言葉が通じないとき|黙ってしまう前にできること 旅先で困るのは英語力の不足ではなく、確認できないまま進んでしまうことです。
スマホは翻訳し続けると熱くなる|10分で2〜3割遅くなる実測 長時間の連続通訳では、端末の熱が現実的な上限になります。実際に測った数字です。
避難所で外国人住民に案内が届かない|電波が消えた夜に、自主防災でできること 災害のとき、電波はいちばん先に消えます。その夜に翻訳アプリが動かない理由と、動く選択肢をまとめました。
外国人保護者との面談で通訳が来ない|学校で子どもの話を外に出さずに伝える方法 外国人保護者との面談は、通訳の順番待ちと個人情報の2つで止まります。その日のうちに、外に出さずに話す方法です。