はじめに
HoloLens 2 のマイク入力を処理する方法はいくつかありますが、今回は Unity Scripting API の Microphone クラスを使用して、HoloLens 2 のマイク入力を録音する方法について簡単に紹介したいと思います。
HoloLens 2 マイクの音声を録音する方法
UnityEngine には Microphone
の API が用意されています。
Microphone.Start()
メソッドを使用すると、録音を開始することができます。
public static AudioClip Start (string deviceName, bool loop, int lengthSec, int frequency);
using UnityEngine;
public class Example : MonoBehaviour
{
void Start()
{
AudioSource audioSource = GetComponent<AudioSource>();
audioSource.clip = Microphone.Start(Microphone.devices[0], true, 10, 44100);
audioSource.Play();
}
}
引数 | 型 | 概要 |
---|---|---|
deviceName | string | 録音するデバイス名 (マイク) |
loop | bool | ループ録音を行うかどうか、true の場合は lengthSec に到達した時にクリップの最初に戻って録音を継続する |
lengthSec | int | 録音するオーディオクリップの長さ |
frequency | int | 録音するオーディオクリップの周波数 |
Microphone.Start()
で開始した録音は、第三引数で指定した lengthSec
秒経過後、もしくは Microphone.End()
メソッドをコールすることで終了させることができ、録音した音声データは AudioClip
として返却されます。
HoloLens 2 実機で Microphone.devices
を取得した結果
初めて Microphone.Start()
メソッドをコールする場合、第一引数である deviceName
に何を指定すれば良いのか迷ってしまう方もいらっしゃると思いますが、Microphone
クラスには devices
というメンバ変数が用意されており、入力デバイスを取得することができます。第一引数は特別な事情が無い限りは、Microphone.devices[0]
を指定するのが良いかと思います。
ちなみに、利用デバイスを PC 等を想定している場合は、外部マイクを使用している場合2つ以上の入力デバイスが取得できる場合も考えられるので、特定のプラットフォームでのマイクを指定したい場合は、別途条件分岐の処理、プラットフォームごとに処理内容を記述する必要があります。