追記(2017年3月3日)
Language Translatorが日本語対応したみたいです
前置き
Bluemixとは
- IBMが提供するPaaS(Platform as a Service)。
- 迅速かつ簡単にクラウド上でアプリケーションを作成、デプロイ、管理することができる。
- 数多くのアプリやサービスが提供されており、自然言語を解釈するWatsonなどが有名。
Watsonとは
- IBMが提供するBluemixのサービスの枠組みの一つ。
- 自然言語解析を主な機能として、複数のサービスを提供している。
- Speech to Text : 音声言語をテキストへ変換
- Text to Speech : テキストを音声へ変換
- Natural Language Classifier: 質問テキストに対する自然言語の分類
- Language Translator : 多言語への翻訳
ほんやくコンニャクとは1
- これを食べると、日本語が外国語に、外国語が日本語に聞こえる。
- また本来食べる事の出来ないロボットにも、対象の上に乗せれば自動的に翻訳してくれる。
- 会話だけでなく、外国語で書かれた文章を読む事も可能。
- さらに外国人だけではなく、宇宙人、動物、ロボットの言葉、古い言語なども翻訳出来る。
- 映画「のび太の日本誕生」では、お味噌味が登場した。
- 『ほんやくコンニャクアイス味』もある。
経緯
Bluemix Watsonが(というよりもIBMが)UnityのSDKを提供していたので使ってみた。
やりたいこと
日本語で喋ると英語(またはその多言語)に翻訳されて喋ってくれる。
必要な機能
- 話した言葉をテキストに変換
- 特定の言語から、別の言語への翻訳
- 翻訳された言葉を音声として出力
やってみる
前提
ユーザ登録
- Bluemix(IBM ID)をすでに登録済み(トライアルでも可)であること
- 登録していない人は https://console.ng.bluemix.net/registration から登録
各ツール・プラグイン等
- Unity 5.5.0p3
- Watson Developer Cloud Unity SDK v0.12.0
プラットフォーム
- 開発&リリース
- macOS
- Windows
実行環境
マイクのついたPCであること
内容
Unityの基本的な部分
- Unity Projectの作成
- 2Dで作成する(3Dの必要はないため)
- Watson SDKのimport
- watson-developer-cloud/unity-sdk からWatson SDKをダウンロード
- 現時点での最新版はここ:releases/tag/0.12.0
- 解凍後のフォルダ名Watsonに変更し、Assetsフォルダに配置
Watson資格情報の設定
- Watsonサービスの立ち上げ
-
資格情報のコピー(作成していない場合は作成)
-
UnityにWatsonの資格情報を設定
Watson APIの実装
-
SpeechToText.csの修正
- 提供されているSDKでは日本語対応していないため、日本語対応する(半ば強制的に)
- 対象ファイル
- Assets/Watson/Scripts/Services/SpeechToText/SpeechToText.cs
-
修正内容
- 下記文字列の一括置換
- 検索文字列:en-US
- 置換文字列:ja-JP
-
例)
SpeechToText.cs(修正前)private string m_RecognizeModel = "en-US_BroadbandModel"; // ID of the model to use.
SpeechToText.cs(修正後)private string m_RecognizeModel = "ja-JP_BroadbandModel"; // ID of the model to use.
- 下記文字列の一括置換
-
Speech to TextとText to Speech呼び出し用スクリプトの作成
- WatsonManager.csをコピーして、適当な場所に配置する
翻訳の実装
- Simple Jsonをimport
- Google Translateを用いるために利用(APIの結果がjson形式で返ってくるため)
- SimpleJSON.zipからダウンロードして解凍後、SimpleJson.unitypackageをimportする
- Google Translate2の入出力を行うためのスクリプト作成
- GoogleTranslate.csをコピーして、適当な場所に配置する
UIの作成とイベントの紐付け
-
各種スクリプトの追加
-
音声録音開始ボタンの作成
-
音声録音終了ボタンの作成
-
発声した言葉をテキストとして表示するフィールドの作成
-
翻訳された言葉をテキストとして表示するフィールドの作成
-
上記で作成した4つのコントロールを、GameManagerに紐付け
実行
-
何か話す
- 注意)長文は控える
- GoogleTranslate.csが対応していない(適当に作ったので、最初の一文しか翻訳取得しない)
- 音声データのやりとりが発生するので、リターンが遅くなる
- 注意)長文は控える
話した言葉と、翻訳された言葉が、画面に表示される
以上
補足
上記で紹介したUnity C#スクリプトは、https://gist.github.com/sear-azazel にUPしている。
注釈
-
Bluemixにも翻訳サービスLanguage Translatorがあるが、現時点で日本語対応していないため、こちらを用いる ↩