Unity로 対話型音声認識Apriを作れるフレームワークをつくった

macOS, Windows両方으로 움직이는 구、Unity로 対話型의 音声認識아프리가스ぐ에 만드는 루후레무와크を作りました.

리포지토리의 링크: https://github.com/HassoPlattnerInstituteHCI/SpeechIOForUnity
유니티 패키지: https://github.com/HassoPlattnerInstituteHCI/SpeechIOForUnity/releases/tag/v1.0

つかいかた


SpeechOut/SpeechIn を宣言し、以下のように書くだけ.


SpeechOut speechOut = new SpeechOut();
SpeechIn  speechIn  = new SpeechIn(OnRecognized);

void Start(){
    Dialog();
}

async void Dialog(){
    await speechOut.Speak("Hello!");
    await speechIn.Listen(new string[] { "Hello", "Hi", "Hey" });
    await speechOut.Speak("How are you doing?");
    await speechIn.Listen(new string[] { "I'm fine", "Nah", "I'm Sick" });
    //...
}


ぜつくったか



macOS, Windows を使う学生을 위해、Unityを扱う授業로 音声認識を使 た対話型아프리를 만들려고.
主に非同期処理の async/await ベースで、逐次処理をわかりやすく書けるように、また速度や"間"などの츄닝닝

授業 授業 は Mac, Windows ➢ Wind作たせらを動作させられないこここよよよををを作りました.

授業のためとはいえ、一般的에使いやすいツールだと思います.

OS네이티브의 音声認識・音声合成



macOS側



macOSネイティブのオフライン音声認識ツールとしては、 NSSpeechRecognizer が、音声合成ツールとしては、コマンドラインツールとして say があります.このうち、 say に関してはUnity上の System.Diagnostics.Process から呼び出すことで実行できます(この点、Argsをいじるだけで声質とか速度を変えられるの로사이코)

一方の NSSpeechRecognizer はOSネイティブAPIとして提供されている機能ている機能てている機能なので、実行する偿みたまから すばもしくは Objective-C
今回のフレームワークでは別途 NSSpeechForUnity として、 Swift を呼び出す NSSpeechRecognizer コードを書き、外部ライブラリとして Objective-C ファイルを書き出し、それをUnityのPluginとすることで実行しています.

윈도우즈



Wind .dll(을)를 빌드로 하는 프로제크트(을)를 작성、そ의 .dll을(를) Unity의 플러그인(으)로 마스.


以上2つのOSに関して独自にライブラリを書き出すことによって実現しましたが、Unity上で非同期の動作を実現させるため、それぞれの処理がきちんと終わったかどうかを常に監視するためのコードを書く必要があります.たとえばSAPI 、内部のStateを逐一変えて、Unity側から監視することで、UnityのAsync/Awaitが進行するように若干HardCodedな感じではありますが、リアルタイムアプリケーションのための非同期処理を実現しています.


윈도우 보이스 프로젝트 応用



対話型アプリケーションのためとは言いましたが、VRアプリケーションなどのための目と手が離せない際のデバッグ(イベントが起こったときにどのフラグが立ったか喋って教えてくれる)や、視覚障害者向けアプリなど、様々な用途が考えられます.「デバッグのときになにか喋ってくれたら便利だな」とか、「アクセシビリティ機能の充実したアプリを作りたいな」などというときにはぜひ使ってみてください.

좋은 웹페이지 즐겨찾기