MonobitVoiceWrapper コンポーネント

目次

  概要
  コンポーネントのアタッチ方法
  コンポーネント外観、およびその項目内容
  拡張機能で用意されたコールバックメソッドについて
  OnBeginEncode メソッド
  OnPreEncode メソッド
  OnEndEncode メソッド
  OnSendVoice メソッド
  OnRecievedVoiceWrapper メソッド
  OnBeginDecode メソッド
  OnPreDecode メソッド
  OnEndDecode メソッド


概要

Monobit Voice について、音声検出時にコールバック処理を行なうための拡張コンポーネントです

  MonobitVoiceWrapper コンポーネントは、MonobitVoice の拡張コンポーネントです。
  ボイスチャット中の音声入力、音声出力における各種制御を実行または終了する際に、コールバック処理を行なえるようにしています。

  このコールバック処理を利用して、音声検出時に任意の処理を実行させることが出来ます。


コンポーネントのアタッチ方法

MonobitVoice の代替に MonobitVoiceWrapper コンポーネントをアタッチする

  MonobitVoiceWapper コンポーネントを導入するためには、MonobitVoice コンポーネントを削除したうえで、
  改めて MonobitVoiceWrapper コンポーネントをアタッチするだけです。

  まずは ボイスチャット用コンポーネントの導入方法について の手順に合わせて、MonobitVoice コンポーネントをアタッチします。

  この状態から、 MonobitVoice コンポーネントのみをリムーブします。

  Inspector 上の MonobitVoice コンポーネントパネルの右上にあるボタンをクリックし、
  ポップアップメニューから「Remove Component」をクリックしてリムーブします。

  リムーブした MonobitVoice コンポーネントの代わりに、 MonobitVoiceWrapper コンポーネントをアタッチします。
  Inspector 下部の「Add Component」をクリックします。

  Add Component のプルダウンメニューから、Monobit Voice Chat > Monobit Voice Wrapper を選択します。

  これで、Monobit Voice Wrapper のアタッチが完了します。


コンポーネント外観、およびその項目内容

MonobitVoiceWrapper コンポーネントの Inspector 設定項目について

  MonobitVoiceWrapper コンポーネントの、Unity の Inspector 外観は以下のようになっており、
  Inspector 上で設定できる項目は、MonobitVoice コンポーネント と全く同一です。


拡張機能で用意されたコールバックメソッドについて

MonobitVoiceWrapper.cs に記述されている各種コールバックメソッド

  このコンポーネントで追加されるスクリプト本体は、Assets/Monobit Unity Networking/Samples/Scripts/VcWrapper/MbVoiceWrapper.cs にあり、
  その中で以下のコールバックメソッドを用意しています。
コールバックメソッドの種類 概要
OnBeginEncode メソッド マイク音声について、Opus によるエンコード処理を実行する際、最初にコールバックされるメソッドです。
OnPreEncode メソッド マイク音声について、Opus によるエンコード処理を開始する際にコールバックされるメソッドです。
実行手続きとしては OnBeginEncode メソッド の後にコールバックされ、
この時点でマイク音声について、Opus エンコードのために最適化されたサンプリングレートに置き換えられています。
OnEndEncode メソッド マイク音声について、Opus によるエンコード処理を完了した際にコールバックされるメソッドです。
OnSendVoice メソッド Opus によってエンコード済みの音声データについて、送信処理を開始する際にコールバックされるメソッドです。
OnRecievedVoiceWrapper メソッド サーバを介して、デコード前の音声データを受信した際にコールバックされるメソッドです。
OnBeginDecode メソッド 受信した音声データについて、Opus によるデコード処理を実行する際、最初にコールバックされるメソッドです。
OnPreDecode メソッド 受信した音声データについて、Opus によるデコード処理を完了させ、
かつスピーカー再生処理を開始する際にコールバックされるメソッドです。
OnEndDecode メソッド 受信した音声データについて、スピーカー再生処理を完了した際にコールバックされるメソッドです。


OnBeginEncode メソッド

機能

  マイク音声について、Opus によるエンコード処理を実行する際、最初にコールバックされるメソッドです。

注意事項

  メソッド内部で、必ず MonobitVoice.OnBeginEncode メソッドをコールして、return を返すようにしてください。

引数

変数名 内容
int channels 音声データのチャンネル数を示します。
マイク音声をベースにしているため、原則的に1(モノラル音声)が入っています。
int samplingRate 音声データのサンプリングレートを示します。
ここでの値は、マイクデバイス自体のサンプリングレートそのもので、接続機器により変動します。

戻り値

内容
bool 必ず MonobitVoice.OnBeginEncode メソッドの結果を返してください。

記述例

// エンコード前のコールバック
public override bool OnBeginEncode(int channels, int samplingRate)
{
    /*
     * この場所に、独自のコールバック処理を記述してください
     */

    // 最後に MonobitVoice.OnBeginEncode() をコールし、その結果を return で返してください。
    return base.OnBeginEncode(channels, samplingRate);
}


OnPreEncode メソッド

機能

  マイク音声について、Opus によるエンコード処理を開始する際にコールバックされるメソッドです。

  実行手続きとしては OnBeginEncode メソッド の後にコールバックされ、
  この時点でマイク音声について、Opus エンコードのために最適化されたサンプリングレートに置き換えられています。

注意事項

  メソッド内部で、必ず MonobitVoice.OnPreEncode メソッドをコールして、return を返すようにしてください。

引数

変数名 内容
float[] voice Opus エンコードのために最適化された音声データ本体です。
int channels 音声データのチャンネル数を示します。
マイク音声をベースにしているため、原則的に1(モノラル音声)が入っています。
int samplingRate 音声データのサンプリングレートを示します。
ここでの値は、Opus によって最適化されたもので、
MonobitVoiceWrapper コンポーネントに設定された Band Width に依存します。
Band Width の設定項目 samplingRate の値
FullBand 48000
SuperWideBand 24000
WideBand 16000
MediumBand 12000
NarrowBand 8000

戻り値

内容
bool 必ず MonobitVoice.OnPreEncode メソッドの結果を返してください。

記述例

// エンコード開始コールバック
public override bool OnPreEncode(float[] voice, int channels, int samplingRate)
{
    /*
     * この場所に、独自のコールバック処理を記述してください
     */

    // 最後に MonobitVoice.OnPreEncode() をコールし、その結果を return で返してください。
    return base.OnPreEncode(voice, channels, samplingRate);
}


OnEndEncode メソッド

機能

  マイク音声について、Opus によるエンコード処理を完了した際にコールバックされるメソッドです。

注意事項

  メソッド内部で、必ず MonobitVoice.OnEndEncode メソッドをコールして、return を返すようにしてください。

引数

変数名 内容
- - -

戻り値

内容
bool 必ず MonobitVoice.OnEndEncode メソッドの結果を返してください。

記述例

// エンコード完了コールバック
public override bool OnEndEncode()
{
    /*
     * この場所に、独自のコールバック処理を記述してください
     */

    // 最後に MonobitVoice.OnEndEncode() をコールし、その結果を return で返してください。
    return base.OnEndEncode();
}


OnSendVoice メソッド

機能

  Opus によってエンコード済みの音声データについて、送信処理を開始する際にコールバックされるメソッドです。

注意事項

  メソッド内部で、必ず MonobitVoice.OnSendVoice メソッドをコールするようにしてください。

引数

変数名 内容
bool debugMode デバッグモードとして、自身のマイク音声を自身のスピーカーで再生させる場合、trueが入ります。
この設定項目は、MonobitVoiceWrapper コンポーネントに設定された Debug Mode に依存します。
object[] header 送信されたデータについて、受信側で Opus によりデコードするために必要な、以下の情報を含むパラメータです。
  ・ Opusのバージョン
  ・ 送信シーケンスの通し番号
  ・ 送信データのエポックタイム
  ・ Opusエンコード時のサンプリングレート
  ・ 音声データのサンプリング数
byte[] voice Opus によりエンコードされた音声データ本体です。

戻り値

内容
- -

記述例

// 送信処理開始前のコールバック
public override void OnSendVoice(bool debugMode, object[] header, byte[] voice)
{
    /*
     * この場所に、独自のコールバック処理を記述してください
     */

    // 最後に MonobitVoice.OnSendVoice() をコールしてください。
    base.OnSendVoice(debugMode, header, voice);
}


OnRecievedVoiceWrapper メソッド

機能

  サーバを介して、デコード前の音声データを受信した際にコールバックされるメソッドです。

注意事項

  メソッド内部で、必ず MonobitVoice.PlaybackVoiceData メソッドをコールするようにしてください。

引数

変数名 内容
object[] header 送信側で OnSendVoice メソッド を実行したときの header パラメータと同一で、以下の情報を含みます。
  ・ 送信側で使用した、Opusのバージョン
  ・ 送信側で定義した、送信シーケンスの通し番号
  ・ 送信側で計測した、送信データのエポックタイム
  ・ 送信側で設定した、Opusエンコード時のサンプリングレート
  ・ 送信側で設定した、音声データのサンプリング数
object[] voice 送信側で OnSendVoice メソッド を実行したときの voice パラメータと同一で、
Opus によりエンコードされた音声データ本体です。

戻り値

内容
- -

記述例

// 受信データ取得時のコールバック
void OnRecievedVoiceWrapper(object[] parameters, byte[] voice)
{
    /*
     * この場所に、独自のコールバック処理を記述してください
     */

    // 最後に MonobitVoice.PlaybackVoiceData() をコールしてください。
    PlaybackVoiceData(parameters, voice);
}


OnBeginDecode メソッド

機能

  受信した音声データについて、Opus によるデコード処理を実行する際、最初にコールバックされるメソッドです。

注意事項

  メソッド内部で、必ず MonobitVoice.OnBeginDecode メソッドをコールして、return を返すようにしてください。

引数

変数名 内容
int channels 送信側から設定値として送られてきた、音声データのチャンネル数を示します。
マイク音声をベースにしているため、原則的に1(モノラル音声)が入っています。
int samplingRate 送信側から設定値として送られてきた、音声データのサンプリングレートを示します。
ここでの値は、Opus によって最適化されたもので、
送信側の MonobitVoiceWrapper コンポーネントに設定された Band Width に依存します。
Band Width の設定項目 samplingRate の値
FullBand 48000
SuperWideBand 24000
WideBand 16000
MediumBand 12000
NarrowBand 8000

戻り値

内容
bool 必ず MonobitVoice.OnBeginDecode メソッドの結果を返してください。

記述例

// デコード前のコールバック
public override bool OnBeginDecode(int channels, int samplingRate)
{
    /*
     * この場所に、独自のコールバック処理を記述してください
     */

    // 最後に MonobitVoice.OnBeginDecode() をコールし、その結果を return で返してください。
    return base.OnBeginDecode(channels, samplingRate);
}


OnPreDecode メソッド

機能

  受信した音声データについて、Opus によるデコード処理を完了させ、かつスピーカー再生処理を開始する際にコールバックされるメソッドです。

注意事項

  メソッド内部で、必ず MonobitVoice.OnPreDecode メソッドをコールして、return を返すようにしてください。

引数

変数名 内容
float[] decodeVoice Opus によるデコード処理を完了させた音声データ本体です。
int channels 送信側から設定値として送られてきた、音声データのチャンネル数を示します。
マイク音声をベースにしているため、原則的に1(モノラル音声)が入っています。
int samplingRate 送信側から設定値として送られてきた、音声データのサンプリングレートを示します。
ここでの値は、Opus によって最適化されたもので、
送信側の MonobitVoiceWrapper コンポーネントに設定された Band Width に依存します。
Band Width の設定項目 samplingRate の値
FullBand 48000
SuperWideBand 24000
WideBand 16000
MediumBand 12000
NarrowBand 8000

戻り値

内容
bool 必ず MonobitVoice.OnPreDecode メソッドの結果を返してください。

記述例

// 再生開始コールバック
public override bool OnPreDecode(float[] decodeVoice, int channels, int samplingRate)
{
    /*
     * この場所に、独自のコールバック処理を記述してください
     */

    // 最後に MonobitVoice.OnPreDecode() をコールし、その結果を return で返してください。
    return base.OnPreDecode(voice, channels, samplingRate);
}


OnEndDecode メソッド

機能

  受信した音声データについて、スピーカー再生処理を完了した際にコールバックされるメソッドです。

注意事項

  メソッド内部で、必ず MonobitVoice.OnEndDecode メソッドをコールして、return を返すようにしてください。

引数

変数名 内容
- - -

戻り値

内容
bool 必ず MonobitVoice.OnEndDecode メソッドの結果を返してください。

記述例

// 再生完了コールバック
public override bool OnEndDecode()
{
    /*
     * この場所に、独自のコールバック処理を記述してください
     */

    // 最後に MonobitVoice.OnEndDecode() をコールし、その結果を return で返してください。
    return base.OnEndDecode();
}