本記事は以下記事で紹介した中の音声ガイダンス機能についての記事になります。 www.hiromukato.com
開発環境
- Unity 2017.2.1p2
- HoloToolkit-Unity-2017.2.1.4.unitypackage (UnityEditor上で動作確認できますが、HoloLensで動作するUnityプロジェクトになっています)
Bing Speech API
テキスト→音声の変換はBing speech APIを利用しています。Bing speech APIの利用については以下の記事にも記載していますのでご参照ください。 www.hiromukato.com
さて、Bing speech APIを利用した日本語音声の読み上げについては以下の記事で紹介されており非常に参考になります。 qiita.com
上記を参考にしながら、以下のような点を変更してみました。
- Inspectorの値を変更するだけで動作確認可能
- WWWをUnityWebRequestに変更
- 認証用リクエストを別メソッドに分離
- 簡単なエラー処理、リトライ処理の追加
- 変換した音声の保存機能追加
Unity プロジェクト
Unity プロジェクトはGitHubにアップロードしています。
TextToSpeech.unityシーンを開きTextToSpeechViewのInspectorにAzureのSubscription Keyを入力することで動作します。
Sentenceに入力した文章を喋り、Langをja-JPからen-USに変更することで英語にも対応します。
以下が実行サンプルです。
Bing text to speech API仕様
以下に簡単にAPIのポイントをまとめておきます。
- text to speech(Voice synthesis)リクエストにはアクセストークンが必要
- アクセストークンは10分間有効
- トークンがないと403 Forbiddenのエラーレスポンスが返る
- アクセストークン取得先は以下
- アクセストークン取得リクエストを送る際にAzureのsubscription keyをヘッダーに付加してPOSTリクエストを送信する
- テキスト→音声変換するためのVoice synthesisエンドポイントは以下
- 必要なHTTPヘッダー
- Content-Type : application/ssml+xml
- X-Microsoft-OutputFormat : raw-16khz-16bit-mono-pcmなど
- Authorization : Authorization token
- ヘッダー詳細
- bodyにはSpeech Synthesis Markup Language (SSML)を記載(SSMLの最大サイズはtagを含め1,024文字)
- アウトプットとしてオーディオストリームとコーデックが返される(音声は15秒以内である必要がある)
- エラーレスポンス詳細