$30 off During Our Annual Pro Sale. View Details »

XRミーティング 20220817

XRミーティング 20220817

XRミーティング 20220817「HoloLens 2 で音声認識を使ったリアルタイム翻訳をやってみた試行錯誤」の登壇資料です。

◆スライド内の素材は以下を使用させていただいております。ありがとうございます!

・シルエットデザイン http://kage-design.com/
・human pictogram 2.0 http://pictogram2.com
・ICOOON MONO http://icooon-mono.com/
・Adobe Stock https://stock.adobe.com/jp

1ft-seabass
PRO

August 17, 2022
Tweet

More Decks by 1ft-seabass

Other Decks in Technology

Transcript

  1. XRミーティング 20220817 HoloLens 2 で音声認識を使った リアルタイム翻訳をやってみた試行錯誤 ワンフットシーバス 田中正吾

  2. 私の話はスライドを後ほど共有します。 話す内容に注力いただいて大丈夫です!

  3. 田中正吾(たなかせいご) 屋号:ワンフットシーバス 2004年よりフリーランス。以後、FLASH制作を 中心にインタラクティブコンテンツを主に行い現 在に至る。 最近ではWEBフロントエンドをベースにしなが らも、情報とインターフェースが合わさるアプ ローチという視点でIoTやMixed Realityといった 技術も取り入れながら活動しています。

  4. HoloLens 2 https://www.microsoft.com/ja-jp/hololens/hardware

  5. HoloLens 2 で音声認識を使った DeepL経由リアルタイム翻訳つくりました

  6. HoloLens 2 には音声認識機能があり トークを日本語テキストに変換できます 音声認識機能 (インターネット経由) 音声データ マイク入力 テキスト 空間に

    テキスト表示
  7. こんな機能です https://docs.microsoft.com/en-us/dotnet/api/microsoft.mixedreality.toolkit.input.dictationhandler?v iew=mixed-reality-toolkit-unity-2020-dotnet-2.8.01

  8. 音声認識した日本語を DeepL の翻訳 API を通して 英語に翻訳して表示しています 日本語 音声認識 (インターネット経由) 英語

    中継サーバー DeepL API
  9. ということで、ひとまず リアルタイム翻訳のデモしてみます

  10. いろいろ試行錯誤したことを話します 参考資料・UI の考察・つくりやすくする中継サーバーの話 など

  11. 音声認識の導入はこちらの記事が とても参考になりました!感謝です! https://bluebirdofoz.hatenablog.com/entry/2021/08/24/080140

  12. 最近 1 on 1 デモもしてうまく動いたので よりよい UI(使い勝手)の考察

  13. 翻訳開始は Click と Focus を用意していた

  14. MRTK の Touch End と OnClick で 遠近両方で指がクリックしたときに動作

  15. Click は録音開始が明確にできる わざわざ押すのでユーザーにやや手間はかかる 不特定多数の方に操作してもらう場合は、操作の説明と慣れが大事

  16. Focus の場合

  17. MRTK の OnFocusOn で ポインターが触れたときに動作 ホントは「目線がフォーカスしたら発動」を期待したが、手からの操作ポインターが触れたときの操作だった

  18. ということで、操作面をデモしてみます

  19. 会話時などを考えると、より邪魔をしにくい よりよい UI を考えたくなる 以前、目線 Gaze を追う仕組みを使ったことがあるので、目線を合わせる間、翻訳しつづける UI いいかも

  20. つくりやすくする中継サーバーの仕掛け

  21. いろいろ翻訳 API につなぎたいけど、Unity 側の JSON 処理や HTTP やりとり苦労しがち

  22. JsonUtility クラスで JSON 形式に変換できるが ひな形となるクラスを用意する必要がある

  23. データが分かっている前提で このようなクラスをつくればよい、が。 構造が違ったりデータが無かったりすると手厳しいエラー。とうぜん違う API では違う指定をする。 Web API にありがちな状態により応答データが変わることに対応しにくかったり柔軟性にやや難。 (いや、もちろんやるとなれば、がんばってつなぐんですけども!)

  24. Unity と中継サーバーの連携は固定し汎用化 サーバーが翻訳 API とのつなぎをがんばった サーバーはローコードツール Node-RED を使用し柔軟性が高められた。Unity の変更量をなるべく減らした。 日本語

    音声認識 (インターネット経由) 英語 自前 Node-RED DeepL API
  25. Node-RED の中身 HoloLens 2 から来た音声認識テキストを DeepL API に http request

    ノードでつないで 返ってきた結果をシンプルに HoloLens 2 に返答する仕組み
  26. DeepL の他に IBM Watson の翻訳 API もつないで 翻訳の性質を試すことができて楽しい ゆくゆくは使用量による課金や翻訳辞書のともなう翻訳もありそうだし設定することは多そう (時間があれば、翻訳

    API ごとの簡単な使用感も話してみる)
  27. より拡張してみた例 今日はデモしないですが、別件でためしてみた話

  28. IoTデバイスへ翻訳済みテキストを 表示するようにもできる M5Stack に MQTT でつないだ例

  29. こんなかんじです

  30. ダッシュボード にも翻訳済みテキストを 表示するようにもできる 登壇場所から距離があるときや、遠隔でリアルタイム翻訳を体験できる

  31. 時間があれば話したいハマりポイント めちゃくちゃ個人的なハマり方ですが!

  32. 音声認識のさまざまなイベントを捉えて 自前のイベントに流すあたりの話

  33. イベント指定時にちゃんと Dynamic string を指定 受け手としてつくった関数が Static Parameters と Dynamic string

    にでてくるまでは親切。 うっかり Static 指定すると予期しない動作(イベント発火するのに引数のデータがないぽい?)に なったのでちゃんと Dynamic string を指定する。あくまで今回の場合はですが。
  34. まとめ ➔ 音声認識して翻訳する仕組みはわりとすんなりできてよ かった。 ➔ 翻訳 API いろいろ試すために中継サーバーにつなぎを任 せたら柔軟性を保ちつつ試せた。 ➔

    使っていただくと UI 面で色々良くしたいことが見えてき たのでやってみたい。 ➔ やってみると結構言語コミュニケーションを補助してくれ そうな可能性を感じるので今後もブラッシュアップしてい きたいです!