This document is about: VOICE 2
SWITCH TO

Voiceイントロ

はじめに

Photon Voice 2は、Unityアプリケーションに高品質でレイテンシーの低いボイスチャットを簡単に追加することができるSDKです。Photon Realtimeの上に構築されており、マッチメイキングやインタレストグループなどPhoton Realtimeの全ての機能を継承しています。 クライアントはルームに参加し、ルーム内の他のすべてのクライアントが受信できる送信ストリーム(ローカルボイス)を作成します。インタレストグループは、ルーム内のグループメンバーへのストリーミングを制限するために使用されます。

Photon Voice 2はスタンドアロン、または他のPhotonまたはサードパーティー製のコンポーネントと組み合わせて使用できます。Photon Unity Networking (PUN2)およびPhoton Fusion向けには、SDKはインテグレーションモジュールを提供しています。

音声はデフォルトでUnity API経由で取得され、再生されます。またAEC(Acoustic Echo Cancellation)を含むハードウェア音声処理を実現するPhotonネイティブマイクロフォンモジュールで音声を取得することもできます。Photon Voice 2 APIでは、サードパーティ製の入出力モジュールとのカスタム統合が可能です。SDKで提供されるFMOD入出力モジュールは、このような統合の一例です。

サードパーティの音声処理コンポーネント(DSP、リップシンク、音声認識など)を簡単に統合する、シンプルな音声処理APIを利用できます。このような統合の顕著な例として、WebRTC Audioソフトウェア処理コンポーネント はハードウェア音声処理が利用できない場合に役立ち、取得した音声の品質を向上させます。

Discordサーバーに参加し、コミュニティまたは弊社チームメンバーとチャットしてみてください。

対応プラ​​ットフォーム

  • Windows
  • UWP
  • macOS
  • Linux
  • Android(64ビットへの対応についてはこちらをご覧ください。
  • iOS
  • WebGL (実験的、Unity 2021.2以降が必要、Safariには対応していません)
  • PlayStation 4(特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについては こちらをご覧ください。)
  • PlayStation 5 (特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについては こちらをご覧ください。)
  • Nintendo Switch (特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについてはこちらをご覧ください。)
  • MagicLeap(Lumin OS、特別なアドオンが必要です。こちらからダウンロードしてください。Magic Leapについてはこちらをご覧ください。)
  • HoloLens 2 (ARM64には特別なアドオンが必要です。 こちらからダウンロードしてください。)
  • XDKをともなうXbox One (特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについてはこちらをご確認ください。)
  • GDKをともなうXbox One、XboxシリーズXおよびXboxシリーズS (特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについては こちらをご覧ください。)

スクリプトバックエンドの互換性

Photon VoiceはIL2CPPで最適に動作します。 モノラルは完全にはサポートされていません。

インストール手順

Unityの2019.4 LTS以上のバージョンが必要です。

Photon Voice 2は こちらのUnityアセットストアからダウンロードおよびインポートできます。

Photon Voice 2パッケージにはPUN2が含まれます。 PUN 2はPhoton Realtime Unity SDK、Photon Chat、Photon Unityライブラリに依存するため、Photon Realtime Unity SDKを含みます。 必要に応じてプロジェクトからPUN2のクリーンアップ または Photon Chatのクリーンアップ が可能ですが、その他の部分がPhoton Voiceの作動に必要です。

他のPhotonパッケージとの互換性を維持するため、また円滑なアップデートを保証するため、PhotonアセットをルートPhotonフォルダ("Assets\Photon")から移動しないよう推奨します。

Photon Voice 2はPUN Classicと互換性がありません。 Photon Voice ClassicはPUN Classicと共に使用しますが、これらのパッケージは今後なくなる予定です。

クリーンインポート

すでにPUN 2を含むプロジェクトにPhoton Voice 2をインポートする場合、バージョンの不適合によるコンフリクトエラーを防ぐため、事前にPhotonアセットをクリーンアップすることを推奨します:

  • 別のPhotonパッケージ(例:Photon Bolt)を使用していない場合には、"Assets\Photon"フォルダを削除してください。
  • 別のPhotonパッケージをインポート済みの場合には、以下のフォルダを削除してください:
    • "Assets\Photon\PhotonChat"
    • "Assets\Photon\PhotonRealtime"
    • "Assets\Photon\PhotonUnityNetworking"
    • "Assets\Photon\PhotonLibs"

Photon Voice 2のアップデート後、または別のPhotonパッケージをインポート後に何らかの問題が発生し、クリーンインポートをおこないたい場合にも上記の手順に従ってください。

アップデート

Photon Voice 2の上位にPUN 2をインポートすることは推奨しません。 弊社は常にPUN 2のアップデート後にPhoton Voice 2の新しいバージョンをリリースするため、Photon Voice 2から最新のPUN 2を入手できます。

UnityアセットストアからPhoton Voice 2をアップデートする際に問題が生じた場合には、クリーンインポートをおこなってください。

主要コンポーネント

Recorder

Recorder は音声ソースを取得し、音声データを圧縮してルームでブロードキャストするコンポーネントです。

Speaker

Speakerコンポーネントとそのバリエーション(SpeakerAudioFilterRead、SpeakerFMOD)は、受信した音声ストリームを再生します。 デフォルトの実装では、UnityのAudioSourceコンポーネントを使用します。 VoiceConnectionインスタンスは、必要に応じてSpeakerをインスタンス化し、受信した音声ストリームを適切なSpeakerインスタンスにルーティングする役割を担います。

Speakerジッターバッファ

Speakerは、パケット送信時間の変動を補正するためにジッターバッファを使用します。ジッターバッファーのサイズをミリ秒単位で調整するには、Speaker.PlayDelayプロパティを使用します。デフォルト値は200msです。 値が高いほど、音声の録音と再生の間の遅延が大きくなります。一方、値が低すぎると、再生が中断されることがあります。

VoiceConnection

VoiceConnectionインスタンスは、シーンでVoiceクライアントをPhoton Serverに接続するために必要です。 SDKは現在、以下の3つのVoiceConnection実装を提供しています: UnityVoiceClientPunVoiceClientFusionVoiceClient

UnityVoiceClient

Voiceルームの接続のみを保持するVoiceConnectionの実装です。

アプリケーションの設定

  • UnityVoiceClient.UseVoiceAppSettings: trueの場合には、グローバルVoiceAppSettingsオブジェクトの設定が使用されます。そうでない場合には、"App Settings"フォールドアウトでこのUnityVoiceClientに固有の値を設定してください。

ストリーミング

  • UnityVoiceClient.PrimaryRecorder: 設定されるとこのオブジェクトに付属するRecorderが自動的に初期化され、ストリーミングに使用されます。

  • UnityVoiceClient.SpeakerPrefab: 新しい受信ストリームを検出した場合に、スピーカーオブジェクトのインスタンス化に使用されるプレハブです。Speakerコンポーネントを含む必要があります。

使用方法

  1. シーンのオブジェクトに UnityVoiceClientを追加します。
  2. グローバルVoiceAppSettingオブジェクト(この名前のボタンをクリックしてアクセスします)でApp Id Voiceを設定するか、またはUse Voice's App Settingsをチェック解除してUnityVoiceClientで直接App Id Voiceを設定します。
  3. シーンにRecorderを追加し、VoiceConnection.PrimaryRecorderに割り当てます。
  4. Speakerプレハブ(Speakerコンポーネントを持つプレハブ)を追加し、VoiceConnection.SpeakerPrefabフィールドに割り当てます。
  5. Photon Realtime APIを使用してクライアントをルームに参加させるスクリプトを、VoiceConnectionコンポーネントに追加します(たとえば「ConnectAndJoin.cs」ユーティリティスクリプトを参照してください)。
  6. 異なるデバイスでアプリの複数のインスタンスを実行します:インスタンスはチャットルームにいて、互いにコミュニケーションできる状態になっています。
  7. ルームの1つのクライアントでのみ、アプリをテストすることもできます:コードまたはエディターでRecorder.DebugEchoModeフィールドを設定してください。発信ストリームがクライアントに戻され、Speakerインスタンスによって再生されます。

PUNを削除する方法

Photon Voice 2パッケージに含まれるPUN2が不要の場合には、削除することが可能です。 これを行うためのショートカットがEditor上にあります:"Window" -> "Photon Voice" -> "Remove PUN"。

Remove PUN Menu Item

PUNメニュー項目を削除

または、次の手順に従って手動で実行できます:

  1. 「Demos\DemoVoicePUN」フォルダを削除する
  2. 「Photon\PhotonVoice\Code\PUN」フォルダを削除する
  3. 「Photon\PhotonUnityNetworking」フォルダを削除する
  4. 「Project Settings" -> "Player" -> "Other Settings" -> "Scripting Define Symbols」で、「PHOTON_UNITY_NETWORKING」、すべての「PUN_2_X_OR_NEWER」と「PUN_2_OR_NEWER」が削除されている点を確認する

Asset StoreからPhoton Voice 2をインポートすることで、いつでもファイルを元に戻すことができます。

Photon Chatを削除する方法

Photon ChatなしでPhoton Voiceを使用する場合は、Photon Chatをプロジェクト内に保持するか、単に削除することができます。 これを行うためのショートカットがEditor上にあります:「Window" -> "Photon Voice" -> "Remove Photon Chat」

Remove Photon Chat Menu Item

Photon Chatメニュー項目を削除

または「Photon\PhotonChat」フォルダーを削除して、手動で行うことも可能です。

Asset StoreからPhoton Voice 2をインポートすることで、いつでもファイルを元に戻すことができます。

Back to top