サブグループの例:通訳
ここでは、グループ通話(カンファレンス)で通訳サービスを提供する方法について見てみましょう。
要求事項
この例の要求事項は、次のとおりです。
- 通訳者が通訳のためにグループ通話に参加する
- すべての参加者が一緒に会話できる
- 通訳者が通訳中には一般参加者のボリュームを下げる
アプリケーションの設計
この例では、アプリケーションを以下のように設計しています。
-
通訳する言語ごとにサブグループを作成します。
-
通訳者は、通訳のためにその言語のサブグループに加入します。
- T-JP:英→日の通訳。Jpのサブグループに加入する
- T-EN:日→英の通訳。Enのサブグループに加入する
-
参加者は聞きたい言語のサブグループを選択します。
- J1、J2:日本語を使う参加者。Jpのサブグループに加入する
- E1、E2:英語を使う参加者。Enのサブグループに加入する
-
peerUpdateの属性値をNONEに設定します。
- 通訳するサブグループの言語は既に定義されている
-
videoUpdateの属性値をFALSEに設定します。
- 通訳ルームではビデオを使用しない
-
オーディオの送受信は、必ず下表のように設定しなければなりません。
オーディオ送信 オーディオ受信 通訳 言語ごとのサブグループ メインルーム 言語ごとの参加者 メインルーム 言語ごとのサブグループ + メインルーム
オーディオの流れ
通訳が必要なオーディオの流れと順序は、次のとおりです。
- 日本語を使う参加者が日本語で発話する
- すべての参加者(通訳を含む)がこれを聞き取る
- 通訳のT-ENが英語で通訳し、通訳された英語のオーディオがEnのサブグループに流れる
- 英語を使う参加者(E1、E2)だけが英語のオーディオを聞き取る
PlanetKit APIの流れ
以下のような状況において、適切なサブグループAPIの呼び出しの流れと実際に通訳サービスを実装する際にサブグループに加入する方法を見てみましょう。
- 参加者全員が通訳ルームに参加
- 英語を使う参加者E1、E2および英語通訳のT-ENは準備完了
参加者J2が通訳サービスを利用する方法は、次のとおりです。
- 日本語を使うJ2がJpサブグループに加入します。
- Jpのサブグループにオーディオを送信した人はまだいないため、J2に送られるものはありません。
- J2は「Jp」を引数として
SetTagMyAudioOfMainRoom()
を呼び出し、メインルームに送信するオーディオストリームにタグを付けます。- これは、Jpサブグループに自分のオーディオを送信するように変更することなく、オーディオストリームがJpサブグループに属することを意味する
- 日本語通訳のT-JPは、「Jp」を引数として
ChangeMyAudioDestination()
を呼び出し、自分のオーディオストリームをJpサブグループに送信するように変更します。- T-JPがJpサブグループにオーディオを送信する
- T-JPのオーディオは、J2を含むすべてのJpサブグループメンバーに転送されます。
- J2は、T-JPの日本語通訳を聞くために、「Jp」を引数として
SetPeersAudioAutoVolumeControl()
を呼び出します。- E1とE2のオーディオは、メインルームに送られる
- E1とE2はそれぞれ別のサブグループにいるが、T-JPは彼らのオーディオを聞くことができる
- J2もE1とE2のオーディオが聞き取れる
- T-JPはこれを日本語に通訳する
- T-JPのオーディオがJpサブグループに属するJ2に転送される
- J2は、T-JPが通訳したオーディオとボリュームが下がったE1、E2のオーディオを聞き取る