MRTK(2.7.2)のExampleを試す その1 Demos-Audio
今回は、MRTK ver.2.7.2のExampleを見て、これまであまり使用してこなかったMRTKの機能を確認します。
第一回はDemos-Audioを使用します。
前提
今回の前提は以下です。
Unity 2019.4.17f1
MRTK 2.7.2
準備
まずは、Package ManagerのMixed Realiy Toolkit Examples
でインポートしたいサンプルを選択します。
Demos - Audio
のImport into Project
を選択しインポートします。
※ 私の場合一度インポートしているので表示はInport again
になっています。
Project
ウィンドウからAsset/Samples/Mixed Reality Toolkit Examples/2.7.2/Demos - Audio/ Scenes
を開くとサンプルシーンを確認できます。
一つずつ確認していきます。
Audio Lo-Fi Effect Examples
このサンプルは、AudioLoFiEffect.cs
でLo-Fi効果をAudio出力に反映させるサンプルです。
赤い球体から音声が出力されており、球体をタップするたびにLo-Fi効果の種類が変化します。
AudioSource
から出力される音声に対して周波数制限を行って、聞こえる音を変更することができます。
このサンプルで使用される主なMRTKコンポーネントはMixedRealitySeneContent -> SoundEmitter
にアタッチされているAudioLoFiEffect.cs
です。
AudioLoFiEffect.cs
AudioLoFiEffect.cs
ではAudioSource
から出力される音声を、ラジオのように音声の周波数範囲を制限することができます。
Inspector上から、周波数範囲制限としてAudioLoFiSourceQuality
で定義される下記の5種類を設定できます。
NarrowBandTelephony
: 300 Hz - 3.4 kHzWideBandTelephony
: 50 Hz - 7 kHzAmRadio
: 40 Hz - 5 kHzFmRadio
: 30 Hz - 15 kHzFullRange
: 10 Hz - 22 kHz
依存コンポーネントとしてAudioSource
, AudioLowPassFilter
, AudioHighPassFilter
がアタッチされますが、MRTKで提供されているAudioInfluencerController.cs
も同時にアタッチすることが推奨されています。
AudioInfluencerController.cs
AudioSource
の出力に対してMicrosoft.MixedReality.Toolkit.Audio.IAudioInfluencer
のアタッチされたコンポーネントを用いて影響を与え、コントロールするためのコンポーネントです。
Inspector上から制御できる要素は下記のとおりです。
UpdateInterval
: AudioSourceに対して操作をする間隔(デフォルト値 : 0.25 s)MaxDistance
: ユーザとIAudioInfluencer
を検索するための最大距離 (デフォルト値 : 20 m)maxObjects
: 対象とするIAudioInfluencer
の最大値 (デフォルト値 : 10個)audioSource
: 操作対象となるAudioSource
をアタッチする
AudioOcclusionExamples
このサンプルでは青色の球体から音声が出力されており、青いパネル(左)の前で聞くといつものように、後ろで聞くと若干くぐもった壁にさえぎられているように聞こえます。
このサンプルで使用される主なMRTKコンポーネントは青いパネルであるMixedRealitySeneContent -> SoundOccluder
にアタッチされているAudioOccluder.cs
です。
AudioOccluder.cs
このスクリプトでは音声に対して、カットする周波数と通す音量の割合を設定して、遮られているかのような効果を音声に与えることができます。
IAudioInfluencer
が継承されており、先ほどのAudioInfluencerController
を用いて音声に効果を与えることができます。
Inspector上から制御できる要素は下記のとおりです。
- CutoffFrequency : 10 Hz - 22 kHzの間でカットする周波数を設定する。設定値より高音をカットする。(デフォルト値 : 5kHz)
- VolumePassThrough : 透過する音量を0 ~ 100%の間で設定する。(デフォルト値 : 100%)
TextToSpeechExamples
このサンプルは、先日翻訳機で使用したTextToSpeech
を用いたサンプルです。
赤い球体をそれぞれクリックすることで、違う種類の音声ソースでの合成音声を試すことができます。
設定した文字列を合成音声で音声出力させることができます。
TextToSpeech.cs
このスクリプトでは、TextToSpeech::StartSpeaking(string)メソッドを使用することで、任意の文章(英文)を合成音声にしゃべらせることができます。
Inspector上から制御できる要素は下記のとおりです。
- AudioSource : 音声出力に使用する
AudioSource
を設定します。 - Voice : TextToSpeechVoiceで定義された4つの合成音声(Default(system voice), David, Mark, Zira)から音源を指定できます。
WindowsMicrophoneStreamDemo
このサンプルでは、マイクの入力の大きさによって、Spatial Awareness
のメッシュの明るさが変化します。
このサンプルでは、特定のMRTKコンポーネントを使用しておらず、MicrophoneAmplitudeDemo.cs
中でWindowsMicrophoneStream
からのマイク入力結果を使用して判定しています。
WindowsMicrophoneStream::Initialize()で初期化し、WindowsMicrophoneStream::StartStream()で録音を開始します。
WindowsMicrophoneStream::ReadAudioFrame()でそのフレームにおける音声情報を取得できます。
MRTKのコンポーネントにフォーカスしたDemos-Audioとしては以上です。
次回は、Demos - Boundaryを取り扱います。