Kranky Geek AI RTC Show (2018) の簡易レポート

# これは何？

WebRTC 界隈では、世界で一番熱いカンファレンス（だと思ってる）、[Kranky Geek AI RTC Show](https://www.krankygeek.com/) に参加してきたので、それの超簡易レポートを紹介します。

それぞれのセッション動画は、[YouTube](https://www.youtube.com/playlist?list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b) で公開されていますので、気になるセッションがあったら是非チェックしてみてください。

今回のテーマは、AI。WebRTC は、単純なビデオ通話のフェーズから、AIの活用により、よりリッチなものへと変遷してきています。例えば、Face Detectionと連動してロボットの自動操作をしたり、Speech to Text などとからませることで、コンタクトセンターのサービス改善を行ったり、WebRTC通信をディープラーニングで分析することで通信品質の向上を図ったり・・・・

今回の Kranky Geek では、そんな熱い内容が目白押しでした。

# Multiparty Voice and Video for Gamers

まずは、[Discordのセッション](https://www.youtube.com/watch?v=cZanvUiGHI0&index=3&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) 。280万の同時接続ユーザー、26.6GBpsという大規模 WebRTC 配信をどうやって実現しているかという話。結論から言うと、WebRTCの PeerConnectionは使わず、トランスポートを独自実装してるそうです。確かにSFU接続に限定するのであれば、あんな面倒なICEは不要だし、簡易化することで障害時の対応も簡単（サーバーをrebootするだけ。WebRTC の PeerConnection だとこうはいかない）。なるほどなー

# Adding smarts to a video chat camera

[Facebook からは Facebook Portal](https://www.youtube.com/watch?v=LmZV1l65NB4&index=4&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) の話。タブレット形式の簡易ロボットデバイスですが、顔を自動検出してトラッキングしながらカメラのアングルを変えてくれる。で、これをどうやっているかとか、Live Video とカメラの動き（via DataChannel）を、どう同期しているか。FaceBook Messenger と連携するために、どう Simulcast を使っているか。といった話

# Open source tools for cloud-based video and vision processing

[Intel のセッション](https://www.youtube.com/watch?v=zt1oiG3Yen0&index=5&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s)。Open Source公開してるコーデックの紹介。Xeonプロセッサにかりかりにチューニングすることで、H.265については従来のエンコーダー（x265）に比べ170倍近く高速化させたとのこと。WebRTC + AI となると、サーバーサイドでごにょごにょしたくなってきますし、高速で使いやすいコーデックが提供されるっていうのはいいことだなと思いました。

# More than speech: leveraging paralinguistics for improved analytics

[Voicebase のセッション](https://www.youtube.com/watch?v=WURDqnOXG1I&index=6&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) 。ボイス分析として、paralinguistics （声のトーンなどから会話のコンテキストを取ること。例えば「いいです」という言葉は、その時の声の調子により承認・拒絶・確認（語尾が上がっていたら「いいです？」という確認の意味になる）も一緒にやろうね。VoiceBaseはその辺りサポートしてるよという話

# Voicebot Architectures for Contact Center Transformation & Connecting a real time voice to cloud speech to text engines

[IBM](https://www.youtube.com/watch?v=tUyQhtwuINQ&index=7&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) と、 [NEXMO](https://www.youtube.com/watch?v=bxZzEpS6Uxs&index=8&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) のセッション。ともに、コンタクトセンターソリューション的な話です。IBM のほうは、 Watsonを使った VoiceBot の話。NEXMOのほうは、いかに 3rd party API（音声認識とか） と連携しつつ、IVRを作り上げるかというもの。NEXMO のvoice APIをハブとして、さまざまな 3rd party APIとオーケストレーションを組み上げ、コンタクトセンターソリューションを作り上げていくと言うのは面白いトピック。この時、Watsonはパートナー的な立場ですが、WatsonもWebRTCインタフェース作ったり、自分たち自身がハブとなって、他のAPIとオーケストレーション組めるようになってきてたり。この辺の分野も熱いですねー。個人的にはサーバーサイドオーケストレーションによりWebRTCサービスを Enrich するというのは、これから熱い分野だなーと思っています。

# Making sense of jargon with custom language models

[DialPad](https://www.youtube.com/watch?v=ekntgaWG-30&index=9&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) のセッション。音声認識のカスタムエンジンの作り方。音声認識の分野では、利用カテゴリーが特化してる場合は、それに特化した学習データ（コーパス）を使うことが重要なので、その辺の話。

# Applying Machine Learning to optimize end-to-end RTC Networks & Stream quality measurement with Machine Learning

[CallStats.io](https://www.youtube.com/watch?v=4VeUiPbXf7c&index=10&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) と [RingCentral](https://www.youtube.com/watch?v=QlJSBPpTx34&index=11&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) のセッション。ML/AI を使って、WebRTCの通信品質をどう分析するかという話。getStatsなんかのデータから、CallStats.io は、クラスター分析を使いトラブルシューティングをするという話。RingCentralのほうは、統計データと MOS 評価値から DNN （Deep Neural Network) を回して、ネットワークメトリクス（ロスやジッターなど）と音声品質の関係を分析、カスタマーサポートに活用しているとのこと

# WebRTC 1.0 and Audio in Chrome

[Google](https://www.youtube.com/watch?v=gV354kWh08o&index=13&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) のセッション。WebRTC 1.0のステータスレポートや、ChromeでのAudio モジュールがサンドボックス分離されたよという紹介。最後に Justin から WebRTC NV(Next Version) の話。特に Low level API の提供について語ってくれました。冒頭の Discord の話もそうですが、Zoom.us なんかも Web Assembly を用いた独自 WebRTC システムを組んだりと、いわゆる WebRTC のハイレイヤーアプローチ（ICEとかSRTPなんかをブラックボックスとして扱う）では満足できないユースケースが出てきている。ここで、WebRTC としても、 Low level API を公開していき、Web Assembly なんかと組み合わせることで多様なユースケース requirement にスピーディーかつ柔軟に対応できるようにしていきたい・・・といった話でした。個人的には、こういった考え方は大好きなので、聞いててワクワクしました。

# Deep Learning for Mobile Platforms: Performance and Complexity Analysis & Exploring On-Device Machine Learning for RTC applications

[Agora.io](https://www.youtube.com/watch?v=Y7p0ye0mrBE&index=12&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) と、[HouseParty](https://www.youtube.com/watch?v=rEsC8pLaVSE&index=14&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) による、Deep Learning を用いた映像補正の話。低ビットレート（例えば360P）で配信した映像をクライアントサイドで Deep Learning のエッジ補正を行うことで 720P 相当の映像にする・・・みたいな話でした。転送レートを下げれると、クライアントサイドのCPU消費やパケット量削減、SFUなんかにとってもサーバーコストの削減につながるので、こういうアプローチは面白いなぁと思いました。僕は、この辺専門じゃないのであれだったのですが、Deep Learning処理でモバイルデバイスのパフォーマンスを過度に消費しては身も蓋もないので、如何に処理を軽くしたまま、エッジ補正の精度をあげるか？といった話でした。

# Mixed Reality meets WebRTC for Remote Assistance (HoloLens)

[最後に Microsoft](https://www.youtube.com/watch?v=8sRluA_hrtc&index=15&list=PL4_h-ulX5eNfaM0QM5r-PewWaY_zgLH7b&t=0s) のセッション。HoloLensを用いた VR 的な話。ミソとしては、UWPに WebRTC （libwebrtc ベースだそうです・・・・Edgeとは違うんだよ！UWPチームはEdgeチームとは違うからね！というのをアピールしてましたw）があるんで、それを使えば Unity連携させたり、 HoloLensのアプリとか作れるよと言うもの。ここでも、Facebook 同様 Synchronization の話出てきましたね。ヘッドセットと連動してリモートロボットを動かすようなユースケースだと、映像と頭の動きが同期してないと VR 酔いしてしまうので。今後 VR ユースケースはどんどん進展していくでしょうし、この辺の Synchronizatin の話は要注目です。

# まとめ

Kranky Geek の話をチェックすると、WebRTC の業界トレンドを知ることができてホント楽しいです。毎年参加していると、「業界として、進化しているんだなー」というのを感じますし（2年前は「モバイルでのWebRTCの使い方」ってトピックだったんで、この2年間で随分進化したな＆ビジネスとして回って来たなと率直に思いました）。
映像・音声と AI 処理は相性のいい分野ですので、WebRTCとAIが結びつくのは必然かなと思いますが、一言でAIといっても、その活用の仕方は様々。今回の Kranky Geek からはそれを垣間見ることができました。来年も楽しみです。