LINE Engineering
Blog

200人と同時に通話できるLINEグループ通話の機能とその仕組み

Jungjun Park 2017.02.22

LINEでVoIP Server開発を担当しています。

こんにちは、LINEでグループ通話サービスを開発しているJungjun Parkです。

LINEでは「CLOSING THE DISTANCE」というビジョンを掲げ、様々なサービスを提供しています。今回の記事ではその中から、同時にたくさんの人と通話できるLINEのグループ通話機能と技術についてご紹介します。まず、グループ通話機能について簡単にご説明します。

最大200人と同時に通話できるLINEグループ通話

LINEのグループ通話は、LINEで同時に最大200人と通話できるサービスです。2016年3月にグループ音声通話サービスが公開され、同年12月にはグループビデオ通話をサービス開始いたしました。音声通話とビデオ通話のいずれも、いつでもどこでも無料でご利用いただけます(アクセスするデータ環境によっては、通信料金が発生することもあります)。

LINEでグループ通話をご利用いただくには、以下のようなスペックが求められます。

  • グループ音声通話:LINE iOS 5.11.0以上、LINE Android 5.11.0以上、LINE Desktop(Windows/macOS) 4.5.0以上
  • グループビデオ通話:LINE iOS 6.9以上、LINE Android 6.9.2以上、LINE Desktop(Windows) 5.0.0以上
  • トークルームで通話を簡単スタート

    家族や友だち、会社の仲間などと普段メッセージをやり取りしているトークルームで、複雑な操作なしに通話ボタンをタップするだけで音声とビデオのグループ通話ができます。

    話している人を表示させる

    グループ音声通話では、今話している人が誰なのかをアイコンで表示する機能を提供しています。この機能により、複数の人とトークをしていても誰が話しているかが一目で分かります。

    感情を表現するエフェクト機能

    グループビデオ通話では、自分の顔周辺に感情を表すエフェクトを適用することで会話をさらに盛り上げることができます。Face iconをタップすると様々な感情を表現したエフェクトが表示され、そこから好きなものを選ぶと自分の顔の周辺にエフェクト効果が適用されます。

    二種類のビデオ通話レイアウト

    グループビデオ通話は、特定の相手の映像を拡大できるレイアウトも可能です。矢印アイコンをタップすると、下の図のように大きな映像といくつかの小さな映像からなるレイアウトに切り替わります。

    ここまではグループ通話機能に関する内容でした。続いて、様々な機能を実現するために採用された技術についてご紹介します。今回はClient/Server network model、Role based server layering、VQE(Voice Quality Enhancement)、Multi-layer video streamについてです。

    Client/Server network model

    ユーザが利用しているデータネットワークによって異なりますが、3GやLTE環境ではユーザのトラフィック量に応じて通信料がかかります。そのため、モバイルサービスにおいてはユーザのトラフィックを最小化するための工夫が必要です。

    大勢のユーザが同時に会話するグループ通話では、おおむね以下の3つのClient/Server network modelがよく使われます。

    Full mesh

    グループ通話に参加したクライアント同士で全てつながっていて、その中でのみ音声や映像データのやり取りが行われる方式です。P2Pファイル共有と類似した方式で、サーバーに大量のトラフィックが発生することがなくサーバートラフィック費用は軽減されます。

    ただし、クライアントから見るとトーク中のユーザ数に比例してトラフィックが増加するという問題があります。たとえば、200人と通話しているとすると1つのクライアントは199人からの音声・映像データを全て受信することになり、データ使用量が1対1の通話の199倍に増加してしまいます。こうした問題のため、モバイルサービスには不向きな方式です。

    End system mixing

    上記のようなFull meshの問題点を補うために登場したのが、End system mixingという方式です。

    基本的にはFull meshと似ていますが、PCのようなハイスペックなクライアントがサーバーのように使われます。他のクライアントはサーバー役のクライアントにアクセスし、そのサーバー役のクライアントがユーザ全員の音声を1つのストリームにミキシングする方式です。そうするとサーバー役のクライアントにはトラフィックが集中しますが、他のクライアントにおいては、ユーザがいくら増えてもトラフィックは増加しません。

    とはいえ、モバイル環境の場合クライアントのアクセスは有線インターネット環境でのように安定的とは限りません。サーバー役クライアントのアクセス状態が安定している必要があるので、やはりモバイル環境には向かない方式です。

    Centralized server

    Centralized server modelは、トラディショナルなClient/Server方式です。全てのクライアントがサーバーにアクセスし、サーバーから音声を1つのストリームにミキシングする方式です。当然、サーバーのトラフィックは増加しますが、ユーザのトラフィックは、参加者が増えても増加しません。

    繰り返しになりますが、モバイルサービスにおける最重要ポイントはユーザのトラフィックを最小化することです。そこでLINEのグループ通話では、サーバートラフィックが増大しますがCentralized server network modelで開発を行いました。

    Role based server layering

    LINEのグループ通話は、世界の様々な国で利用されています。地域に関係なく最高の通話品質を提供すべく、LINEは各地のIDCに対してグループ通話サービスを提供しています。

    このような分散アクセス環境と多人数のユーザを処理するため、グループ通話サーバーのレイヤーは以下のような構成となっています。

    グループ通話サーバーは、通話を開始して通話ルームの状態や参加者を管理するApplication server layerと、音声データを処理するVoice/Video server layerに大きく分けられます。

    通話品質と密接に関連しているVoice/Video server layerはさらに、地域分散のため、クライアントがアクセスするFrontEnd serverと、あるトークルームの音声を一つにミキシングし映像データを処理するMIX serverに分けられます。

    Network latencyはあらゆるインターネットサービスにおいて重要ですが、通話の場合は声を速やかに届ける必要があるので、さらに重要です。LINEのグループ通話では、Network latencyの最小化に向け、各地でサーバーを運用しています。

    グループ通話の際には、最寄りの地域のFrontEnd serverにアクセスされるようにして最適の通話品質の提供に取り組んでいます。なお、各地域のサーバーは専用のケーブルでつながっていて、地域の異なるユーザ同士に対しても安定的な通話品質を提供しています。

    VQE(Voice Quality Enhancement)

    ノイズ(Noise)とエコー(Echo)は、通話中にユーザが不満を感じる一番代表的な要因かも知れません。

    ノイズとは、相手のマイクに周囲の雑音が入ってくる現象です。エコーとは、相手のスピーカーで出力された自分の声が再び相手のマイクに入り込み、音が反響する現象のことです。これらの現象は、固定電話を含むすべての通話において共通して発生します。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)を構築しました。市販されている数多くの端末に対してこのようなチューニング作業を実施しており、端末メーカーとも協力して問題の解決に取り組んでいます。

    Multi-layer Video Stream

    LINEのグループ通話は、3種類の画面サイズで映像を提供しています。映像を複数の解像度で提供するためにクライアントから数種類の映像を同時にサーバーに送る方法を使用すると、ユーザのトラフィックが数倍に膨らんでしまいます。一方、クライアントに最高解像度の映像を送ってもらい、サーバーが途中でトランスコードして複数の解像度の映像を生成する方法もあります。ただ、トランスコードはCPUを大量に消費する作業なので、通常のサーバー環境では複数のトランスコードを同時に実施できないという問題があります。

    このような問題を解決するために、LINEのグループ通話はMulti-layer video stream方式で開発を行いました。

    Multi-layer video streamはビデオフレームをマルチレイヤーで構成する方式で、トランスコードなしでレイヤーを組み合わせるだけで複数の解像度の映像を生成することができます。

    • Low resolution layer→最低解像度
    • Low resolution layer + Medium resolution layer→中間解像度
    • Low resolution layer + Medium resolution layer + High resolution layer→最高解像度
    • カメラで映像を録画するクライアントは、すべてのレイヤーを含むMulti-layer video streamをサーバーに送信します。そしてサーバーは、当該ユーザの映像を視聴するクライアントに対し、要求されたサイズに合わせてレイヤーを組み合わせて送信します。このようなレイヤーの組み合わせはトランスコードではないので、多数のユーザとの通話を問題なく処理できます。

      最後に

      家族や友だち、会社の仲間などと簡単に楽しく会話できるグループ通話は、様々なプラットフォームにてご利用いただけます。Mac向けのグループビデオ通話もいち早く提供できるよう、作業を進めているところです。今後も多様なプラットフォームでの最高の通話品質提供を目指して取り組んで参ります。
Jungjun Park 2017.02.22

LINEでVoIP Server開発を担当しています。

Add this entry to Hatena bookmark

リストへ戻る