# Web のオーディオ

> Information about audio capabilities in Web.

このページでは、Web プラットフォームのオーディオ機能に関する情報のみを提供しています。Unity プロジェクトでオーディオを使用する方法については、[オーディオの概要](/engine/6000.0/manual/audio/overview.md) を参照してください。

Unity はプラットフォームのオーディオ管理に [FMOD](https://www.fmod.com) を使用するため、Web プラットフォームでは、基本機能のみを含む限られたオーディオ機能がサポートされます。FMOD はスレッドに依存しますが、WebGL API はこれをサポートしていません。このため、Unity では、ブラウザーでオーディオの再生とミキシングを処理できる、内部の Web Audio API に基づいた実装を使用しています。

**注意**Google Chrome の新しい自動再生ポリシーでは、特定の条件下でのオーディオとビデオの自動再生を禁止しています。例えば、ゲームがロードされた直後に背景音楽が自動的に再生されるように設定されている場合でも、ウェブサイトをクリックするかタップしない限り、自動的には再生されません。このポリシーを有効または無効にする方法の詳細については、[Chromeの自動再生ポリシー](https://developer.chrome.com/blog/autoplay/) に関する Google Chrome のドキュメントを参照してください。

## 対応可能なクラス##supported-classes

Unity Web は以下の API クラスをサポートしています。

| **クラス**                                                                                                    | **WebGL サポート状況**                                                                                                                   |
| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| **[AudioSource](/engine/6000.0/script-reference/unity-engine/audio-source.md)**                            | WebGL はいくつかの API をサポートしています。具体的なサポート内容については、[AudioSource](/engine/6000.0/script-reference/unity-engine/audio-source.md) を参照してください。 |
| **[AudioListener](/engine/6000.0/script-reference/unity-engine/audio-listener.md)**                        | すべての API に対応しています。                                                                                                                 |
| **[AudioClip](/engine/6000.0/script-reference/unity-engine/audio-clip.md)**                                | WebGL はいくつかの API をサポートしています。具体的なサポート内容については、[AudioClip](#audioclip) を参照してください。                                                     |
| **[AudioMixer](/engine/6000.0/script-reference/unity-engine-audio/audio-mixer.md)**                        | WebGL はいくつかの API をサポートしています。具体的なサポート内容については、[オーディオミキサー](#audio-mixer) を参照してください。                                                   |
| **[SystemInfo.supportsAudio](/engine/6000.0/script-reference/unity-engine/system-info/supports-audio.md)** | ブラウザーは WebGL のオーディオサポートを提供しています。このため、`SystemInfo.supportsAudio` は常に true です。                                                       |
| **[Microphone](/engine/6000.0/script-reference/unity-engine/microphone.md)**                               | 不対応。                                                                                                                               |

## AudioSource##audiosource

[AudioSource](/engine/6000.0/script-reference/unity-engine/audio-source.md) API は、以下のような基本的な位置に関するオーディオ再生をサポートしています。

* ポーズと再開
* ロールオフ
* ピッチ設定
* ドップラー効果対応

Unity WebGL は、以下の AudioSource API をサポートします。

| **設定**                                                                                                             | **説明**                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
| **[Clip](/engine/6000.0/script-reference/unity-engine/audio-source/clip.md)**                                      | 次に再生するオーディオクリップを決定します。                                                                                                    |
| **[dopplerLevel](/engine/6000.0/script-reference/unity-engine/audio-source/doppler-level.md)**                     | AudioSource のドップラースケールを設定します。                                                                                             |
| **[ignoreListenerPause](/engine/6000.0/script-reference/unity-engine/audio-source/ignore-listener-pause.md)**      | AudioSource が、`AudioListener.pause` を無視して、オーディオの再生を継続できるようにします。                                                           |
| **[ignoreListenerVolume](/engine/6000.0/script-reference/unity-engine/audio-source/ignore-listener-volume.md)**    | エンドユーザーの AudioSource の音量を無視します。                                                                                           |
| **[isPlaying](/engine/6000.0/script-reference/unity-engine/audio-source/is-playing.md)**                           | `AudioSource.clip` が再生されている場合に true を返します。                                                                                |
| **[loop](/engine/6000.0/script-reference/unity-engine/audio-source/loop.md)**                                      | アプリケーションで `AudioSource.clip` をループさせることができます。                                                                              |
| **[maxDistance](/engine/6000.0/script-reference/unity-engine/audio-source/max-distance.md)**                       | `AudioSource.clip` の減衰が止まる、または聞き取れなくなる最大距離を設定します。                                                                         |
| **[minDistance](/engine/6000.0/script-reference/unity-engine/audio-source/min-distance.md)**                       | AudioSource.clip の音量がこれ以上上がらなくなる最小距離を設定します。最小距離を超えると、音が減衰し始めます。                                                           |
| **[mute](/engine/6000.0/manual/audio-source-mute.md)**                                                             | AudioSource をミュートします。                                                                                                     |
| **[pitch](/engine/6000.0/script-reference/unity-engine/audio-source/pitch.md)**                                    | `AudioSource.clip` のピッチを設定します。WebGL は正のピッチ値のみをサポートしています。                                                                  |
| **[playOnAwake](/engine/6000.0/script-reference/unity-engine/audio-source/play-on-awake.md)**                      | Awakeで AudioSource を再生します。                                                                                                |
| **[rolloffMode](/engine/6000.0/script-reference/unity-engine/audio-source/rolloff-mode.md)**                       | 距離による AudioSource の減衰量を設定します。                                                                                             |
| **[time](/engine/6000.0/script-reference/unity-engine/audio-source/time.md)**                                      | 再生位置を秒単位で設定します。                                                                                                           |
| **[timeSamples](/engine/6000.0/script-reference/unity-engine/audio-source/time-samples.md)**                       | 再生位置をパルス符号変調 (PCM) サンプルで設定します。                                                                                            |
| **[velocityUpdateMode](/engine/6000.0/script-reference/unity-engine/audio-source/velocity-update-mode.md)**        | AudioSource の更新を固定更新ループで行うか、動的更新ループで行うかを設定します。                                                                            |
| **[volume](/engine/6000.0/script-reference/unity-engine/audio-source/volume.md)**                                  | オーディオソースの音量を設定します (0.0 - 1.0)。                                                                                            |
| **[Pause](/engine/6000.0/script-reference/unity-engine/audio-source/pause.md)**                                    | `AudioSource.clip` を一時停止します。                                                                                              |
| **[Play](/engine/6000.0/script-reference/unity-engine/audio-source/play.md)**                                      | `AudioSource.clip` を再生します。                                                                                                |
| **[PlayDelayed](/engine/6000.0/script-reference/unity-engine/audio-source/play-delayed.md)**                       | `AudioSource.clip` を、秒単位で指定した遅延時間を付けて再生します。                                                                               |
| **[PlayOneShot](/engine/6000.0/script-reference/unity-engine/audio-source/play-one-shot.md)**                      | [AudioClip](/engine/6000.0/script-reference/unity-engine/audio-source/clip.md) を再生し、volumeScale で AudioSource 音量をスケールします。 |
| **[PlayScheduled](/engine/6000.0/script-reference/unity-engine/audio-source/play-scheduled.md)**                   | 指定した時間にオーディオソースを再生します。                                                                                                    |
| **[SetScheduledEndTime](/engine/6000.0/script-reference/unity-engine/audio-source/set-scheduled-end-time.md)**     | スケジュールされた `AudioSource.clip` が終了する時間を設定します。                                                                               |
| **[SetScheduledStartTime](/engine/6000.0/script-reference/unity-engine/audio-source/set-scheduled-start-time.md)** | スケジュールされた `AudioSource.clip` の開始時間を設定します。                                                                                 |
| **[Stop](/engine/6000.0/script-reference/unity-engine/audio-source/stop.md)**                                      | `AudioSource.clip` の再生を停止します。                                                                                             |
| **[UnPause](/engine/6000.0/script-reference/unity-engine/audio-source/un-pause.md)**                               | 一時停止中の `AudioSource.clip` の一時停止を解除します。                                                                                    |
| **[PlayClipAtPoint](/engine/6000.0/script-reference/unity-engine/audio-source/play-clip-at-point.md)**             | `AudioSource.clip` をワールド空間の指定された位置で再生します。                                                                                 |

## AudioClip##audioclipscrollpoint-id=audioclip-/

Unity WebGL は、ほとんどのブラウザーでサポートされている AAC 形式の [AudioClip](/engine/6000.0/script-reference/unity-engine/audio-clip.md) ファイルをインポートします。Unity WebGL は、以下の AudioClip API をサポートします。

| **プロパティ**                                                                              | **説明**                                              |
| -------------------------------------------------------------------------------------- | --------------------------------------------------- |
| **[length](/engine/6000.0/script-reference/unity-engine/audio-clip/length.md)**        | オーディオの長さ (秒単位)。                                     |
| **[loadState](/engine/6000.0/script-reference/unity-engine/audio-clip/load-state.md)** | AudioClip に関連付けられたオーディオデータの現在の読み込み状況を返します。          |
| **[samples](/engine/6000.0/script-reference/unity-engine/audio-clip/samples.md)**      | サンプルの AudioClip の長さ。                                |
| **[loadType](/engine/6000.0/script-reference/unity-engine/audio-clip/load-type.md)**   | クリップのロードタイプです。AudioClip のロードタイプは、Inspector で設定できます。 |

| **方法**                                                                                       | **説明**                                 | **その他の情報**                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **[AudioClip.Create](/engine/6000.0/script-reference/unity-engine/audio-clip/create.md)**    | 指定した名前と長さの AudioClip を作成します。           | Unity WebGL は、`AudioClip.Create` を部分的にサポートしています。ブラウザーは動的ストリーミングをサポートしていません。そのため、`AudioClip.Create` を使用するには、Stream を false に設定してください。                                          |
| **[AudioClip.SetData](/engine/6000.0/script-reference/unity-engine/audio-clip/set-data.md)** | AudioSource.Clip のサンプルデータを設定します。       | Unity WebGL は、`AudioClip.SetData` を部分的にサポートしています。この方法は、**Load Type** が **Decompress on Load** に設定されている圧縮オーディオファイルに対してのみ使用できます。詳細については、[圧縮オーディオ](#compressed-audio) を参照してください。 |
| **[AudioClip.GetData](/engine/6000.0/script-reference/unity-engine/audio-clip/get-data.md)** | AudioSource.clip からサンプルデータを含む配列を取得します。 | Unity WebGL は、`AudioClip.GetData` を部分的にサポートしています。この方法は、**Load Type** が **Decompress on Load** に設定されている圧縮オーディオファイルに対してのみ使用できます。詳細については、[圧縮オーディオ](#compressed-audio) を参照してください。 |

**注意**Linux でオーディオクリップをサポートするには、[ffmpeg](https://ffmpeg.org/) パッケージがインストールされていることを確認してください。

## オーディオミキサー##audio-mixerscrollpoint-id=audio-mixer-/

Unity Web は、[オーディオミキサー](/engine/6000.0/manual/audio/mixer.md) アセットの一部の機能をサポートします。

Web 上のオーディオミキサーでは以下を行うことができます。

* オーディオミキサーアセットを作成する。
* 階層に AudioMixerGroup を追加する。
* 各グループの音量を調整する。スクリプトで音量を公開または変更するには、[AudioMixer.SetFloat](/engine/6000.0/script-reference/unity-engine-audio/audio-mixer/set-float.md) を使用します。

**ノート**: 音量は Web 上で変更できる唯一のプロパティです。その他のプロパティやサウンドエフェクトはサポートされません。

## 圧縮オーディオ##compressed-audioscrollpoint-id=compressed-audio-/

Unity の WebGL で圧縮オーディオを使用するには、AudioClip の [loadType](/engine/6000.0/script-reference/unity-engine/audio-clip/load-type.md) を以下のいずれかのオプションに設定します。

* [CompressedInMemory](/engine/6000.0/script-reference/unity-engine/audio-clip-load-type/compressed-in-memory.md)
* [DecompressOnLoad](/engine/6000.0/script-reference/unity-engine/audio-clip-load-type/decompress-on-load.md)

| **圧縮形式**               | **説明**                                                            | **考慮事項**                                                                                                                                                    |
| ---------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **CompressedInMemory** | ディスク上のオーディオを圧縮し、アプリケーションメモリにロードした後も圧縮されたままにします。                   | 圧縮オーディオは待ち時間の原因になる可能性があり、オーディオ再生の精度は低くなります。ただし、圧縮オーディオは、解凍オーディオよりもアプリケーションのメモリ使用量が少なくなります。精度に影響されないオーディオ、例えば背景音楽には `CompressedInMemory` を使用するのがベストプラクティスです。 |
| **DecompressOnLoad**   | CompressedInMemory と同様にディスク上のオーディオを圧縮し、アプリケーションメモリにロードしたときに解凍します。 | 解凍オーディオは、圧縮オーディオと比較してメモリ使用量が大幅に増えますが、待ち時間が短く、オーディオの柔軟性が向上します。精度に影響されるオーディオには `DecompressedOnLoad` を使用します (例えば、キャラクターのセリフやサウンドエフェクトなど)。                      |

## オーディオ再生とブラウザーのセキュリティ##audio-playback-and-browser-security

セキュリティ上の理由から、ブラウザーは、エンドユーザーがマウスのクリック、タッチイベント、キーの押下などでアプリケーションのウェブページを操作するまで、オーディオの再生を許可しません。ロード画面を使用して、エンドユーザーがアプリケーションと相互作用できるようにし、主要コンテンツが始まる前にオーディオ再生を開始します。
