スライドバーを表示

Photon Voice For PUN

入門

Photon Voice For PUNは、PUNに音声やオーディオストリーミングを追加するアドオンです。PUNに依存し、個別のPhoton Realtimeアプリケーションが必要です。

Photon Voice For PUNは、PUNがすでに存在し設定されているUnityプロジェクトにインポートする必要があります。

「Voice Room」はPhoton Voiceクライアントが参加するルームのことをいいます。PUNクライアントが参加するルームとの混同を避けるために、この文書で使用されます。一方、「PUNルーム」はPUNクライアントが参加するルームを指します。

PUNクライアントがJoined状態である場合(「PUNルーム」に)、Photon Voiceをクラウドから接続または切断することが可能です。それ以外では、ユーザーが明示的にPhoton Voiceアプリケーションとインタラクトする必要はありません。Photon Voiceクライアントが自動的に接続ワークフローを処理します。参加している「PUNルーム」と同じ名前の「Voiceルーム」に参加するか、作成します。

設定

プロジェクトにPhoton Voiceをインポートしたら、PUN設定のすぐ下のPhotonServerSettingsに「Photon Voice Settings」セクションが表示されます。ここでAppIdを入力して、Photon VoiceアプリケーションのRegionを選択することができます。次の手順に従って、インスペクタでPhotonServerSettingsを再度開くことができます:「Window」 - >「Photon Unity Networking」 - > 「PhotonServerSettings」またはキーボードのショートカット Ctrl+Shift+Alt+P。

高度なオーディオおよび音声に関する設定を微調整するには、シーン内のオブジェクトにPhotonVoiceSettingsスクリプトが添付されていることを確認してください。使用可能な設定は次の通りです:

  1. PUN関連の設定:
    • AutoConnect: PUNクライアントが「PUNルーム」に参加しているときに、自動でPhoton Voiceクライアントを「Voiceルーム」に参加させる。
    • AutoDisconnect: PUNクライアントが切断されたときに自動でPhoton Voiceクライアントを切断。
    • AutoTransmit: Photon Voiceクライアントが「Voiceルーム」に参加すると同時に、音声の送信を開始。
  2. 作成されるすべての「レコーダ」インスタンスに適用される、マイクと「ローカル」のオーディオ録音設定:
    • SamplingRate: 音声が秒毎に測定される回数の頻度。基本的に、これがオーディオの品質を定義します。 可能な値は次のとおりです:8、12、16、24および48 kHz。デフォルトは24 kHz。
    • Delay: ミリ秒単位の発信オーディオストリームエンコーダの遅延(時間によるバッファサイズ)。可能な値は5、10、20、40、80、120ミリ秒。デフォルトは20ミリ秒。
    • Bitrate: 一定の時間(秒)で処理されるデータ量(ビット数)。基本的に、これが圧縮品質を定義します。デフォルト値は30000のb/s。
  3. 作成されるすべての「スピーカー」インスタンスに適用される「リモート」のオーディオストリーミングの設定:
    • PlayDelayMs: ミリ秒単位でのプレイバック遅延。着信パケットの遅延の変動を補償するために使用。
  4. 音声検出機能(作成されるすべての「レコーダ」インスタンスに適用される):
    • VoiceDetection: 音声検出 機能をトグル。
    • VoiceDetectionThreshold: 音声検出が有効になっている場合、送信を開始するために超過する最小の信号レベル。0.01がデフォルトおよび推奨値。
  5. その他:
    • DebugInfo: 情報レベルでユニティコンソールのPhoton Voiceデバッグログを切り替える。
    • DebugLostPercent: 失われたフレームのシミュレーション比。

「オーディオソース」プレハブ

Photon Voice for PUNでは、各「オーディオソース」オブジェクトがプレハブに代表されるべきです。 必要最低限​​のプレハブには、同じGameObjectに添付された2つのスクリプトコンポーネントが含まれるべきです。

  • PhotonView
  • PhotonVoiceRecorder

PhotonVoiceRecorderスクリプトを追加した後、AudioClipコンポーネントとPhotonVoiceSpeakerスクリプトが追加されます。どちらも、同じルームに参加している他のクライアントから受信したリモートオーディオを再現するために不可欠です。

プレハブは、実行時、PUNを使用してルームに参加した後のみにインスタンス化するべきです。 シーンオブジェクトのインスタンスは対応されていません。そのため、シーン内にPhotonVoiceRecorderインスタンスを持たせないでください。

オーディオソースプレハブは、二つの異なる目的で使用されます。

  1. 「ローカル」サウンドを録音および送信: これはPhotonVoiceRecorderによって処理されます。
  2. 受信した「リモート」サウンドを再現および再生: これはPhotonVoiceSpeakerによって管理されます。

このオーディオソースプレハブは、2つの異なる方法で使用できます。

  1. ボイスチャット:
    PhotonVoiceRecorderにオーディオクリップが割り当てられていない上、マイクデバイスが検出された場合、音声は録音され他の全ての参加プレイヤーに送信されるます。複数の録音デバイスが利用可能な場合、PhotonVoiceRecorder.MicrophoneDeviceプロパティで使用するデバイスを設定する必要があります。
  2. オーディオクリップのストリーミング: このオプションは、Photon Voiceの送信をテストするために導入されたものですが、他​​の目的のために使用することもできます。 同じルームに参加している他のプレイヤーにオーディオクリップを放送するためには、Unityが対応しているオーディオメディアファイルをPhotonVoiceRecorder.AudioClipに割り当てる必要があります。 これはUnity Editorからインスペクタにドラッグ&ドロップして行うことができます。オーディオクリップを毎回再生したい場合は、PhotonVoiceRecorder.Looptrueに設定してください。

音声検出

音声検出は、録音された音をフィルタリングし、信号レベルが所定の閾値を超えた場合にのみ送信するオプション機能です。つまり、話すのをやめると声の送信は自動的に一時停止し、再び話し始めると再開されます。必要のないノイズの送信を防ぎ、バンド幅の消費量を減らすのに役立ちます。

VoiceDetectionThresholdのデフォルト値は0.01です。音声検出キャリブレーションとノイズレベルの測定値を用いた実験の結果、これが一般的な環境での推奨値です。

音声キャリブレーション

音声検出がオンになっていても声の録音に問題が発生した場合は、音声キャリブレーションが必要かも知れません。 Photon Voiceには時間を制限する自動キャリブレーションモードがあります。 キャリブレーションモードを開始するには、`PhotonVoiceRecorder.VoiceDetectorCalibrate(period)``を呼びます。 デフォルトのキャリブレーション期間は2000ミリ秒ですが、いつでも変更することができます。 キャリブレーションを使用して、Photon Voiceは自動的に沈黙と音量のしきい値を調整します。

Push-to-Talk

Photon Voiceにプッシュ・ツー・トーク機能を持たせるのは簡単です。 手動で音声録音と送信をトグルする必要があります。 これは、マイクのミュートをオン・オフに切り替えるようなものです。 プッシュ・ツー・トークを開始するには、単にPhotonVoiceRecorder.Transmittrueに設定します。 停止するには、値をfalseに設定します。 ユーザ入力(UIボタンまたはキーボードショートカット)にプロパティを結合することによって使用できます。

既知の問題

Android 6.0の権限

Androidプラットフォーム用に構築する際、通常、ほとんどの権限はマニフェストファイルにUnityが自動的に追加します。 Photon Voiceが必要とする2つの権限は以下のとおりです。

  • android.permission.INTERNET: Unityのプレーヤー設定にで自動的に追加。
  • android.permission.RECORD_AUDIO: UnityのマイクAPIが使用されたときに自動的に追加。

しかし、Android Marshmallowには新たに導入された許可モデルによる問題があるようです。 生成されたAPKにはandroid.permission.RECORD_AUDIO許可が無く、アプリケーションは声を録音することができません。 このような問題を回避するには、Android SDKのレベル23をターゲットするとき、最新のUnityバージョンにアップデートしてください。

 ドキュメントトップへ