11
11

More than 5 years have passed since last update.

UnityとBluemix Watsonでドラえもんのひみつ道具「ほんやくコンニャク」を作る

Last updated at Posted at 2017-01-15

追記(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を提供していたので使ってみた。

やりたいこと

日本語で喋ると英語(またはその多言語)に翻訳されて喋ってくれる。

必要な機能

  1. 話した言葉をテキストに変換
  2. 特定の言語から、別の言語への翻訳
  3. 翻訳された言葉を音声として出力

やってみる

前提

ユーザ登録

各ツール・プラグイン等

  • Unity 5.5.0p3
  • Watson Developer Cloud Unity SDK v0.12.0

プラットフォーム

  • 開発&リリース
    • macOS
    • Windows

実行環境

マイクのついたPCであること

内容

Unityの基本的な部分

  1. Unity Projectの作成
    • 2Dで作成する(3Dの必要はないため)
  2. Watson SDKのimport

Watson資格情報の設定

  1. Watsonサービスの立ち上げ
    • Speech to Text スクリーンショット 2017-01-14 00.45.00.png
    • Text to Speech スクリーンショット 2017-01-14 00.43.43.png
  2. 資格情報のコピー(作成していない場合は作成)

    • Speech to Text、Text to Speechのサービスから資格情報を開き、{から}までをコピー スクリーンショット 2017-01-14 00.47.16.png 補足)右上のファイルアイコンのクリックでもクリップボード上にコピー可
  3. UnityにWatsonの資格情報を設定

    • Unity EditorのメニューからWatson - Configuration Editorを選択 スクリーンショット 2017-01-13 00.07.30.png
    • 以下のWindowが開かれる スクリーンショット 2017-01-14 00.49.01.png
    • 「PASTE CREDENTIALS BELOW」の下のテキストエリアに、先ほどコピーした資格情報をそのまま貼り付け、「Apply Credentials」をクリックする
    • すると、以下のように資格情報を登録したサービスがグリーンに変化する(=資格情報の登録完了) スクリーンショット 2017-01-14 00.51.53.png

Watson APIの実装

  1. 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.
        
  2. Speech to TextとText to Speech呼び出し用スクリプトの作成

翻訳の実装

  1. Simple Jsonをimport
    • Google Translateを用いるために利用(APIの結果がjson形式で返ってくるため)
    • SimpleJSON.zipからダウンロードして解凍後、SimpleJson.unitypackageをimportする
  2. Google Translate2の入出力を行うためのスクリプト作成

UIの作成とイベントの紐付け

  1. 各種スクリプトの追加

    • 適当なGameObjectの作成(例ではScriptsと名称変更)
    • GameManager.cs、WatsonManager.cs、GoogleTranslate.csを作成したGameObjectに追加
    • 音声の出力のため、Audio Sourceも合わせて追加
    • 例)
      スクリーンショット 2017-01-15 22.25.29.png
  2. 音声録音開始ボタンの作成

    • UI - Buttonを選択してボタンを追加(適当に装飾)
    • クリックイベントにGameManager.SpeechStartOnClickを追加
    • 例)
      スクリーンショット 2017-01-15 22.19.14.png
  3. 音声録音終了ボタンの作成

    • UI - Buttonを選択してボタンを追加(適当に装飾)
    • クリックイベントにGameManager.SpeechEndOnClickを追加
    • 例)
      スクリーンショット 2017-01-15 22.32.51.png
  4. 発声した言葉をテキストとして表示するフィールドの作成

    • UI - Textを選択してテキストを追加(適当にサイズ、フォントを修正)
    • 例) スクリーンショット 2017-01-15 22.37.20.png
  5. 翻訳された言葉をテキストとして表示するフィールドの作成

    • UI - Textを選択してテキストを追加(適当にサイズ、フォントを修正)
    • 例) スクリーンショット 2017-01-15 22.39.03.png
  6. 上記で作成した4つのコントロールを、GameManagerに紐付け

    • 例)
      スクリーンショット 2017-01-15 22.41.28.png

実行

  1. 実行ボタンを押す
    スクリーンショット 2017-01-15 22.46.23.png

  2. 録音開始ボタンを押す
    スクリーンショット 2017-01-15 22.48.08.png

  3. 何か話す

    • 注意)長文は控える
      • GoogleTranslate.csが対応していない(適当に作ったので、最初の一文しか翻訳取得しない)
      • 音声データのやりとりが発生するので、リターンが遅くなる
  4. 録音停止ボタンを押す
    スクリーンショット 2017-01-15 22.48.16.png

  5. 話した言葉と、翻訳された言葉が、画面に表示される

以上

補足

上記で紹介したUnity C#スクリプトは、https://gist.github.com/sear-azazel にUPしている。

注釈


  1. 出展:http://www.doraemondb.com/ddb/index.php?item=ほんやくこんにゃく 

  2. Bluemixにも翻訳サービスLanguage Translatorがあるが、現時点で日本語対応していないため、こちらを用いる 

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11