LINE Engineering
Blog
200人と同時に通話できるLINEグループ通話の機能とその仕組み
LINEでVoIP Server開発を担当しています。
こんにちは、LINEでグループ通話サービスを開発しているJungjun Parkです。
LINEでは「CLOSING THE DISTANCE」というビジョンを掲げ、様々なサービスを提供しています。今回の記事ではその中から、同時にたくさんの人と通話できるLINEのグループ通話機能と技術についてご紹介します。まず、グループ通話機能について簡単にご説明します。
LINEのグループ通話は、LINEで同時に最大200人と通話できるサービスです。2016年3月にグループ音声通話サービスが公開され、同年12月にはグループビデオ通話をサービス開始いたしました。音声通話とビデオ通話のいずれも、いつでもどこでも無料でご利用いただけます(アクセスするデータ環境によっては、通信料金が発生することもあります)。
LINEでグループ通話をご利用いただくには、以下のようなスペックが求められます。
家族や友だち、会社の仲間などと普段メッセージをやり取りしているトークルームで、複雑な操作なしに通話ボタンをタップするだけで音声とビデオのグループ通話ができます。
ここまではグループ通話機能に関する内容でした。続いて、様々な機能を実現するために採用された技術についてご紹介します。今回はClient/Server network model、Role based server layering、VQE(Voice Quality Enhancement)、Multi-layer video streamについてです。
大勢のユーザが同時に会話するグループ通話では、おおむね以下の3つのClient/Server network modelがよく使われます。
ただし、クライアントから見るとトーク中のユーザ数に比例してトラフィックが増加するという問題があります。たとえば、200人と通話しているとすると1つのクライアントは199人からの音声・映像データを全て受信することになり、データ使用量が1対1の通話の199倍に増加してしまいます。こうした問題のため、モバイルサービスには不向きな方式です。
基本的にはFull meshと似ていますが、PCのようなハイスペックなクライアントがサーバーのように使われます。他のクライアントはサーバー役のクライアントにアクセスし、そのサーバー役のクライアントがユーザ全員の音声を1つのストリームにミキシングする方式です。そうするとサーバー役のクライアントにはトラフィックが集中しますが、他のクライアントにおいては、ユーザがいくら増えてもトラフィックは増加しません。
とはいえ、モバイル環境の場合クライアントのアクセスは有線インターネット環境でのように安定的とは限りません。サーバー役クライアントのアクセス状態が安定している必要があるので、やはりモバイル環境には向かない方式です。
繰り返しになりますが、モバイルサービスにおける最重要ポイントはユーザのトラフィックを最小化することです。そこでLINEのグループ通話では、サーバートラフィックが増大しますがCentralized server network modelで開発を行いました。
このような分散アクセス環境と多人数のユーザを処理するため、グループ通話サーバーのレイヤーは以下のような構成となっています。
グループ通話サーバーは、通話を開始して通話ルームの状態や参加者を管理するApplication server layerと、音声データを処理するVoice/Video server layerに大きく分けられます。
通話品質と密接に関連しているVoice/Video server layerはさらに、地域分散のため、クライアントがアクセスするFrontEnd serverと、あるトークルームの音声を一つにミキシングし映像データを処理するMIX serverに分けられます。
Network latencyはあらゆるインターネットサービスにおいて重要ですが、通話の場合は声を速やかに届ける必要があるので、さらに重要です。LINEのグループ通話では、Network latencyの最小化に向け、各地でサーバーを運用しています。
グループ通話の際には、最寄りの地域のFrontEnd serverにアクセスされるようにして最適の通話品質の提供に取り組んでいます。なお、各地域のサーバーは専用のケーブルでつながっていて、地域の異なるユーザ同士に対しても安定的な通話品質を提供しています。
ノイズとは、相手のマイクに周囲の雑音が入ってくる現象です。エコーとは、相手のスピーカーで出力された自分の声が再び相手のマイクに入り込み、音が反響する現象のことです。これらの現象は、固定電話を含むすべての通話において共通して発生します。LINEは、このような問題に対応するためにVoice quality enhancement(以下、VQEという)というソフトウェアモジュールを実装しました。
(Improving Call Quality On Popcorn Buzz, A Multi-user Call Serviceの記事にもLINEのVQEの紹介があります)
複数のユーザが多種多様な端末を使って参加するグループ通話の特性上、一人の参加者から混入する小さなノイズやエコーも積み重なると時に大きな支障をもたらします。そのため、LINEのグループ通話ではVQEを利用してノイズとエコーを最大限に除去しています。
しかし、市販されているモバイル端末は種類が多く、音響的特性もそれぞれ異なります。現在、LINEのグループ通話はおよそ2万種以上の端末で利用されています。このように様々な端末においても最適な通話品質を提供できるよう、LINEでは多くの時間と労力を注いでいます。
人間の聴覚システム(auditory system)が適用されたHead and torso simulator(HATS)を使い、ITU-T P.311/341の標準規格を満たす無響室(anechoic chamber)を構築しました。市販されている数多くの端末に対してこのようなチューニング作業を実施しており、端末メーカーとも協力して問題の解決に取り組んでいます。
このような問題を解決するために、LINEのグループ通話はMulti-layer video stream方式で開発を行いました。
Multi-layer video streamはビデオフレームをマルチレイヤーで構成する方式で、トランスコードなしでレイヤーを組み合わせるだけで複数の解像度の映像を生成することができます。
カメラで映像を録画するクライアントは、すべてのレイヤーを含むMulti-layer video streamをサーバーに送信します。そしてサーバーは、当該ユーザの映像を視聴するクライアントに対し、要求されたサイズに合わせてレイヤーを組み合わせて送信します。このようなレイヤーの組み合わせはトランスコードではないので、多数のユーザとの通話を問題なく処理できます。
LINEでVoIP Server開発を担当しています。