スライドバーを表示

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」セクションが表示されます。ここでPhoton VoiceアプリケーションのAppIdをできます。次の手順に従って、UnityインスペクタでPhotonServerSettingsを再度開くことができます:「Window」 - >「Photon Unity Networking」 - > 「PhotonServerSettings」

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

  1. PUN関連の設定:
    • AutoConnect: PUNクライアントが「PUNルーム」に参加しているときに、自動でPhoton Voiceクライアントを「Voiceルーム」に参加させる。
    • AutoDisconnect: PUNクライアントが切断されたときに自動でPhoton Voiceクライアントを切断。
    • AutoTransmit: Photon Voiceクライアントが「Voiceルーム」に参加すると同時に、音声の送信を開始。
  2. 作成されるすべての「レコーダ」インスタンスに適用される、マイクと「ローカル」のオーディオ録音設定:
    • SamplingRate: 1秒あたりのオーディオの測定回数。基本的に、これがオーディオの品質を定義します。 可能な値は次のとおりです: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: 情報レベルでUnityコンソールのPhoton Voiceデバッグログを切り替える。
    • DebugLostPercent: 無くなったフレームのシミュレーション比率。

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

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

  • PhotonView
  • PhotonVoiceRecorder

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

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

オーディオソースプレハブは、次の2つの目的で使われます。

  1. 「ローカル」サウンドを録音および送信: これはPhotonVoiceRecorderによって処理されます。記録されたオーディオが送信されているかどうかを確認するには、同じコンポーネントのIsTransmittingプロパティを確認します。
  2. 受信した「リモート」サウンドを再現および再生: これはPhotonVoiceSpeakerによって管理されます。IsPlayingプロパティを使用して、リモートで受信したオーディオが再生されているかどうかを確認します。

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

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

 ドキュメントトップへ