# オーディオデータへのアクセス

> Access and analyze audio data using Vivox Audio Taps.

一部のユースケースでは、Audio Tap によって提供される生オーディオデータを分析すると役立つ場合があります。[`OnAudioFilterRead`](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnAudioFilterRead.html) メソッドを実装する MonoBehaviour C# スクリプトを作成し、Audio Source ゲームオブジェクトに追加することができます。Audio Tap を含んでいる Audio Source のコンポーネントチェーンに追加されると、C# スクリプトは、Audio Tap によって提供されるすべてのオーディオを受信します。以下は、オーディオデータを受信するように設定された `AudioAnalyzer` というクラスの例です。

```cs
using UnityEngine;
public class AudioAnalyzer : MonoBehaviour
{
    private void OnAudioFilterRead(float[] data, int channels)
    {
        // Do something with the audio contained in the data array
    }
}
```

以下の画像を見ると、Audio Source のコンポーネントチェーン内で Vivox Channel Audio の後に `AudioAnalyzer` クラスがあることがわかります。これにより、Audio Analyzer スクリプトで Vivox Channel Audio Tap のオーディオを利用できるようになります。


**Audio Tap コンポーネントが表示された Unity エディターの Inspector (インスペクター) ウィンドウのスクリーンショット。:**
![Audio Tap コンポーネントが表示された Unity エディターの Inspector (インスペクター) ウィンドウのスクリーンショット。](/api/media?file=/vivox-unity/media/images/audio-analyzer-inspector.png)

Audio Source ゲームオブジェクトにコンポーネントが追加される順番が重要であることに注意してください。異なるクラスの 2 つの `OnAudioFilterRead` の 実装をゲームオブジェクトに追加した場合、それらは上から下へ順番に呼び出されます。これは Audio Tap には当てはまりません。Audio Tap のオーディオは、チェーン内での位置に関係なく、チェーンの一番最初に提供されるためです。

ネイティブコードから生オーディオデータにアクセスするには、[Unity のネイティブオーディオプラグイン SDK のドキュメント](https://docs.unity3d.com/Manual/AudioMixerNativeAudioPlugin.html) を参照してください。

## 共存するオーディオシステム##co-existing-audio-systems

Unity と Vivox は、共存するオーディオシステムを持ちます。

ゲームに Audio Tap を追加すると、タップのオーディオは Vivox の独立したオーディオシステムではなく、Unity のオーディオエンジンを通じて再生されます。この場合、Vivox でオーディオをレンダリングするように設定したデバイスが、Unity で使用するように設定されているデバイスと同じでない可能性があります。タップのオーディオのレンダリングは Unity が引き継ぐため、Unity でレンダリングに使用されるデバイスが想定どおりのデバイスであることを確認する必要があります。

Participant Tap のみを使用する場合、チャンネルオーディオの出力は引き続き Vivox のオーディオシステムから再生されますが、オーディオソースを通じて再生される Participant Tap は Unity のオーディオシステムを使用します。

> **Note:**
>
> Vivox は、Audio Tap の使用状況や Unity のマイク設定に関係なく、常に独自の選択したキャプチャオーディオデバイスを使用します。
