LGBTアプリの海外展開に自動翻訳機能を活用

 

 

エンジニアの安田です。

 

 

Athlete」はLGBT向けのアプリで一定数の国内シェアはありますが絶対数は少ないため全世界でユーザーの確保を目指しています。

 

このたび、「Athlete」へ自動翻訳機能を入れることになり、少しずつリリースして反応を見るため、Phase1~5まで細分化してみました。(本機能は既に実装済みで、着実に利用者数は増えています。)

 

 

[Phase1]
– とりあえず世界各国にアプリをばらまいてみよう!! –
アプリタイトル・アイコンなど静的コンテンツのみの英語バージョンを作成してストアへ提出しました。
このフェーズでは海外へ向けて展開するためのノウハウの蓄積に注力していきました。

しかしこれだけではまだまだコンテンツを楽しめない・・

 

 

 

 

[Phase2]

– タイムライン機能の翻訳機能 –
投稿のあったタイムラインのテキストの自動翻訳機能を組み込みました。
翻訳に対応しているのは日本語と英語の2カ国となります。(現在は世界数十カ国に対応)
翻訳するためには翻訳するための解析データが必要なりますのでこれを1から作るのは非効率..
ということでMicrosoftさんのサービス「Translator Text API」を採用することにしました!

こちら、文脈をみて自然な翻訳へと学習させることもできます。


検証の結果、機能の安定性・使いやすさ・精度・価格と問題点は特になく継続して利用させていただいています。

※ 実は最終Phaseとして音声翻訳も検討しており「Translator Speech API」というサービスも用意されているのですがこちらは使わず前述の「Translator Text API」で良いのでは!? と考えています。
アプリの音声入力を利用してテキスト化されたものを「Translator Text API」へ翻訳依頼というフローです。

 

Translator Speech API」で実装する場合は..

 dev.microsofttranslator.comへwebsocket(WSS)接続しAPIが受け取れるオーディオフォーマットとしてストリームを送信する必要があります。

 

 

  • 原文と翻訳文の表示に変更

 

 

 

 

 

[Phase3]

– プロフィールページの翻訳 –
ここまできてようやく、気になったお相手のプロフィールが読めるようになりました!
この時点で翻訳機能を別サービス化にしてリファクタリングを行なっています。

ここで翻訳対象となるのは「趣味」と「メッセージ」です。

 

 

  • プロフィール翻訳前

 

 

  • プロフィール翻訳後(英語→日本語)

 

 

 

 

[Phase4]

– そしてチャットページ翻訳へ –
本アプリのチャットページのやりとりはリアルタイムなコミュニケーションが求められるため
この部分で自動翻訳の最適化に悩まさせられました。(SocketとHTTP通信が混在している)
チャットのログについては配列化してまとめて翻訳結果を得ています。
実際うけとるチャットは即時翻訳。

 

 

  • チャット一覧

 

 

 

  • チャットページ(英語ユーザー)

 

 

 

 

  • チャットページ(日本ユーザー)

 

 

 

翻訳結果はRESTAPI,XMLで受け取りますが気になる遅延はほぼなく、レスポンスの早さにはAzure様に感謝です!

当初は日本語・英語のみでしたが、現在は世界60ヶ国以上の言語に対応しています。

 

 

 

[Phase5]

– 音声入力自動翻訳 –

海外アプリでは最早常識!?

一足遅れですが、こちらもやっていきます。

チャットのテキストだけではなくビデオ通話中の音声も対応します。

 

 

 

 

[Implementation]

今回の実装内容となります。

 

まず単文の翻訳から。

 

とてもシンプルですね。

対象の文章と言語(ja/enなど)のパラメーターを渡すだけ。

(JSONで返してもらえると嬉しかったですが..)

 

Exceptionについては

  • パラメーターの間違い
  • 翻訳対象と言語設定の間違い
  • アクセストークンが無効になっている
  • 翻訳できない

などの場合に発生します。

 

 

そして複数翻訳のパラメータ部分

 

XMLの複数ノードで結果を受け取ります。

翻訳対象のリストと結果のレスポンスの順序が同じため、どの文に対する翻訳かは当然分かります。