2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[MR Dev Tips #2] HoloLens 2 マイクの音声を録音する方法

Last updated at Posted at 2023-07-26

はじめに

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);
sample.cs
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 を取得した結果

image.png

初めて Microphone.Start() メソッドをコールする場合、第一引数である deviceName に何を指定すれば良いのか迷ってしまう方もいらっしゃると思いますが、Microphone クラスには devices というメンバ変数が用意されており、入力デバイスを取得することができます。第一引数は特別な事情が無い限りは、Microphone.devices[0] を指定するのが良いかと思います。

image.png

ちなみに、利用デバイスを PC 等を想定している場合は、外部マイクを使用している場合2つ以上の入力デバイスが取得できる場合も考えられるので、特定のプラットフォームでのマイクを指定したい場合は、別途条件分岐の処理、プラットフォームごとに処理内容を記述する必要があります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?