概要
同じシーンに OVR Lipsync を適用したキャラが複数いる状態で、それぞれのキャラに別々のマイクの音声を割り当てる、を実現出来そうなヤツ。
※まだ試してない。 試した。
指定したのマイクの音声を拾う方法
以下より。
サンプルをちょっと編集。
[SerializeField] string deviceName = "マイクのデバイス名をここに";
void Start()
{
var audio = GetComponent<AudioSource>();
if(null == audio)
{
return;
}
audio.clip = Microphone.Start(deviceName, true, 10, 44100);
audio.loop = true;
/* https://support.unity3d.com/hc/en-us/articles/206485253-How-do-I-get-Unity-to-playback-a-Microphone-input-in-real-time-
*
* To control latency you will also need to call Microphone.GetPosition(); and choose your desired latency sample rate.
* If you want no latency you can set this to “0” samples before the audio starts to play.
*/
// 指定したサンプル数だけディレイさせる。0 なら即時。
//while (!(0 < Microphone.GetPosition(deviceName))){ }
//Debug.Log("start playing... position is " + Microphone.GetPosition(deviceName));
audio.Play();
}
デバイス名一覧をインスペクターに表示する。
Inspector 用のエディター拡張を作るほどでも無いので、表示された一覧からコピペする。
#if UNITY_EDITOR
public string[] microphoneDeviceNames;
void Reset()
{
LoadMicrophoneDeviceNames();
}
void OnValidate()
{
LoadMicrophoneDeviceNames();
}
[ContextMenu("Load Microphone Device Names")]
void LoadMicrophoneDeviceNames()
{
microphoneDeviceNames = Microphone.devices;
}
#endif
UnityEngine.Microphone リファレンス
--