Voice とは?
はじめに
Photon Voice 2は、Unityアプリケーションに高品質かつ低遅延のボイスチャットを簡単に追加できるSDKです。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入出力モジュールはこの一例となります。
シンプルな音声処理APIによって、サードパーティー製の音声処理コンポーネント(DSP、リップシンク、音声認識など)を簡単に組み合わせることができます。代表的な例として、WebRTC Audioソフトウェア処理コンポーネントは、ハードウェア音声処理が利用できない場合でも、取得した音声の品質を向上させることに役立ちます。
Discordサーバーに参加して、コミュニティまたは弊社メンバーと交流しましょう。
対応プラットフォーム
- Windows
- UWP
- macOS
- Linux
- Android(64ビットサポートについてはこちらをご覧ください)
- iOS
- visionOS
- WebGL (Unity 2021.2以降が必要、Safariには対応していません)
- PlayStation 4(特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについてはこちらをご覧ください)
- PlayStation 5 (特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについてはこちらをご覧ください)
- Nintendo Switch (特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについてはこちらをご覧ください)
- MagicLeap(Lumin OS、特別なアドオンが必要です。こちらからダウンロードしてください。Magic Leapについてはこちらをご覧ください)
- HoloLens 2 (ARM64には特別なアドオンが必要です。こちらからダウンロードしてください)
- Xbox One with XDK (特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについてはこちらをご確認ください)
- Xbox One, Xbox Series X and Xbox Series S with GDK (特別なアドオンが必要です。こちらからダウンロードしてください。コンソールへのアクセスについてはこちらをご覧ください)
スクリプティングバックエンドの互換性
Photon Voiceは、IL2CPPに最適化されています。 Monoは完全にはサポートしていません。
インストール手順
Unity 2019.4 LTS以上のバージョンが必要です。
Photon Voice 2は、こちらのUnity Asset Storeからダウンロード/インポートできます。
Photon Voice 2パッケージにはPUN2が含まれます。 そしてPUN 2には、Photon Realtime・Photon Chat・Photon Unityライブラリが含まれます。 必要に応じて、PUN2の削除またはPhoton Chatの削除が可能ですが、それ以外の部分はPhoton Voiceの動作に必要です。
他のPhotonパッケージとの互換性と、スムーズなアップデートを保証するため、Photonアセットはルートフォルダー(Assets\Photon)から移動させないことを推奨します。
Photon Voice 2は、PUN Classicと互換性はありません。 Photon Voice Classicは、PUN Classicと合わせて使用できますが、どちらも今後サポート終了する予定です。
クリーンインポート
既にPUN 2を含むプロジェクトにPhoton Voice 2をインポートする場合、バージョン不整合によるコンフリクトエラーを防ぐため、Photonアセットをクリーンアップすることを推奨します:
- 別のPhotonパッケージを使用していない場合は、
Assets\Photonフォルダーを削除します。 - 別のPhotonパッケージをインポート済みの場合は、以下のフォルダーを削除します:
Assets\Photon\PhotonChatAssets\Photon\PhotonRealtimeAssets\Photon\PhotonUnityNetworkingAssets\Photon\PhotonLibs
Photon Voice 2のアップデート後、または別のPhotonパッケージのインポート後に、問題が発生してクリーンインポートを行いたい場合も、上記の手順に従ってください。
アップデート
Photon Voice 2の後にPUN 2をインポートすることは推奨しません。 弊社は常にPUN 2のアップデート後にPhoton Voice 2の新バージョンをリリースするため、Photon Voice 2から最新のPUN 2を入手可能です。
Unity Asset StoreからPhoton Voice 2をアップデートする際に問題が発生した場合は、クリーンインポートを実行してください。
主要コンポーネント
Recorder
Recorderは音声ソースを取得し、音声データを圧縮し、ルーム内にブロードキャストするコンポーネントです。
Speaker
Speaker(SpeakerAudioFilterRead・SpeakerFMOD)コンポーネントは、受信した音声ストリームを再生します。
デフォルト実装では、UnityのAudioSourceコンポーネントを使用します。
VoiceConnectionインスタンスは、必要に応じてSpeakerインスタンスを作成し、受信した音声ストリームを、適切なSpeakerインスタンスにルーティングする役割を持ちます。
Speakerジッターバッファ
Speakerは、パケット伝送時間のズレを補償するためにジッターバッファを使用します。Speaker.PlayDelayプロパティを使用して、ジッターバッファのサイズをミリ秒単位で調整できます。デフォルト値は200msです。
値が高いほど、音声の録音と再生間の遅延も大きくなります。一方、値が低すぎると、再生が中断されることがあります。
VoiceConnection
VoiceConnectionインスタンスは、VoiceクライアントをPhotonサーバーへ接続するために、シーン上に必要です。
現在、SDKは以下3つのVoiceConnection実装を提供しています:UnityVoiceClient、PunVoiceClient、FusionVoiceClient
UnityVoiceClient
Voiceルーム接続のみを維持するVoiceConnection実装です。
アプリケーション設定
UnityVoiceClient.UseVoiceAppSettings:trueの場合、グローバルのVoiceAppSettings設定が使用されます。そうでない場合は、UnityVoiceClientコンポーネントのApp Settingsに値を設定してください。
ストリーミング
UnityVoiceClient.PrimaryRecorder:有効にすると、このオブジェクトにアタッチされたRecorderが自動的に初期化され、ストリーミングに使用されます。UnityVoiceClient.SpeakerPrefab:新しい受信ストリームを検知した際に、スピーカーオブジェクト生成に使用されるプレハブです。プレハブにはSpeakerコンポーネントを含む必要があります。
使用方法
- シーン上のオブジェクトに
UnityVoiceClientコンポーネントを追加します。 - グローバルの
VoiceAppSettings(この名前のボタンをクリックして選択できます)にApp Id Voiceを設定するか、Use Voice App Settingsのチェックを外して直接App Id Voiceを設定します。 - シーンに
Recorderを追加し、VoiceConnection.PrimaryRecorderフィールドに割り当てます。 - スピーカープレハブ(
Speakerコンポーネントを持つプレハブ)を追加し、VoiceConnection.SpeakerPrefabフィールドに割り当てます。 VoiceConnectionコンポーネントに、Photon Realtime APIを使用してクライアントをルームへ参加させるスクリプト(例:ConnectAndJoin.csスクリプトを参照)を追加します。- 異なる端末で複数のアプリインスタンスを実行します:各インスタンスをルームへ参加させて、互いに通信できる状態にします。
- クライアント1つのみでアプリをテストすることも可能です:コード上/エディター上から
Recorder.DebugEchoModeフィールドを有効にしてください。送信ストリームがクライアントに戻され、Speakerインスタンスから再生されます。
PUNを削除する方法
Photon Voice 2パッケージに含まれるPUN 2が不要な場合、削除することが可能です。
これはエディター上にショートカットがあります:Window -> Photon Voice -> Remove PUN

または、次の手順に従って手動で実行できます:
Demos\DemoVoicePUNフォルダーを削除します。Photon\PhotonVoice\Code\PUNフォルダーを削除します。Photon\PhotonUnityNetworkingフォルダーを削除します。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をプロジェクト内に残しておくか、削除することができます。
これはエディター上にショートカットがあります:Window -> Photon Voice -> Remove Photon Chat

または、Photon\PhotonChatフォルダーを手動で削除することも可能です。
Asset StoreからPhoton Voice 2をインポートすることで、いつでもファイルを元に戻すことができます。
Last updated on
Back to top