Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebRTC と Wasm の関係を振り返ってみた
Search
tetter
October 22, 2024
Technology
730
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WebRTC と Wasm の関係を振り返ってみた
WebRTC Meetup Tokyo #28
登壇資料
[History]
・2024/10/24: tnohoさんから教えていただいたWasmのメリットを追記しました
tetter
October 22, 2024
More Decks by tetter
See All by tetter
TPAC 2025 の WebRTC トピック共有
tetter27
0
150
MediaStream を利用した画像処理 2つのパターン
tetter27
0
570
WebRTC でスマートカメラを開発するチュートリアルやってみた
tetter27
0
700
TPAC 2023 のトピック厳選紹介
tetter27
0
560
WebRTC の現状と未来
tetter27
1
2.5k
Other Decks in Technology
See All in Technology
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1.3k
アジャイルな経理と Claude Code と経営の未来
kawaguti
PRO
3
160
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
240
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.3k
脆弱性対応、どこで線を引くか
rymiyamoto
1
420
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
1
2.5k
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
550
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
8
1.9k
Kiro Ambassador を目指す話
k_adachi_01
0
110
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
170
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
13
4.7k
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
170
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Raft: Consensus for Rubyists
vanstee
141
7.5k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Typedesign – Prime Four
hannesfritz
42
3.1k
Mind Mapping
helmedeiros
PRO
1
250
Facilitating Awesome Meetings
lara
57
7k
The Invisible Side of Design
smashingmag
302
52k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
Odyssey Design
rkendrick25
PRO
2
700
New Earth Scene 8
popppiees
3
2.3k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Transcript
WebRTC と Wasm の関係を振り返ってみた tetter WebRTC Meetup Tokyo #28 OCT,
22, 2024 # for Beginners + Intermediates
自己紹介 2 NAME: - tetter (Tetta Maeda) FEATURES: - WebRTC
Meetup 運営 - moq-wasm (MOQTライブラリ) 書いてる - ワイン資格の勉強中 @tttr_mt tetter27 2017 2018 2022 前職 (通信事業会社) Android 〃 EdgeAI NTTコミュニケーションズ株式会社 WebRTC CARRIER:
10周年イベントを振り返ってみて 3 - 思った以上に盛り上がり、最高のイベントでした https://www.youtube.com/watch?v=dyAj05V9ViQ
10周年イベントを振り返ってみて 4 - 今後の WebRTC Meetup に期待すること → https://www.youtube.com/watch?v=dyAj05V9ViQ AI
x WebRTCの新たな 使い方を発表してほしい AI を含めた技術を民主化 できるように標準化貢献 目指してほしい サーバサイドの AI 処理が注目されるかも
10周年イベントを振り返ってみて 5 - 今後の WebRTC Meetup に期待すること → AI との組み合わせ
https://www.youtube.com/watch?v=dyAj05V9ViQ じゃあキーワードは AI ってことで
6
おしながき 7 - 最近の AI x WebRTC 事情 - Wasm
(WebAssembly) って? - WebRTC と Wasm の歴史 - WebRTC x AI (Wasm ベース) の利用方法
最近の AI x WebRTC 事情 8
最近の AI x WebRTC 事情 9 - サーバサイド - クライアントサイド
最近の AI x WebRTC 事情 10 - サーバサイド - クライアントサイド
サーバサイド処理での WebRTC 活用 11 STT (Speech-to-Text) LLM TTS (Text-to-Speech) クライアント
サーバー WebRTC WebRTC 連携 サーバー (Optional) - 処理に利用するデータ・処理済みのデータをリアルタイムに伝送 例) リアルタイム LLM システムの構成
例①) OpenAI GPT-4o で AI との対話 12 - LiveKit とパートナーシップを組んで
Realtime API をリリース https://blog.livekit.io/openai-livekit-partnership-advanced-voice-realtime-api/
https://www.youtube.com/watch?v=a05X3rAfYLs 例②) NVIDIA ACE でアニメーション生成 13 - 自然なリップシンクがされたアバターアニメーションを生成 - UE5
向けの API が公開されており、UE5 pixel streaming (WebRTC) で映像・音声を送信してリアルな NPC と対話できる - オンデバイス処理の対応予定もある https://www.youtube.com/watch?v=psrXGPh80UM
最近の AI x WebRTC 事情 14 - サーバサイド - クライアントサイド
Wasm との組み合わせの代表例 15 - メディア加工 - 仮想背景 - ノイズキャンセリング -
コーデック - Lyra - Opus1.5 etc.
例) Opus 1.5 (Deep REDundancy) 16 - パケロスが多い環境でも音声品質を保てる技術 - 元の技術
DRED は mlcodec WG で標準化中 (i-d は現在 01) https://opus-codec.org/demo/opus-1.5/ PLC MOS Packet Loss Concealment MOS =
Wasm (WebAssembly) って? 17
Wasm (WebAssembly) って? 18 - ブラウザ上で動作する第4のフォーマット - 複雑な処理をブラウザ上でも高速に実行できる Web ブラウザ
ソースコード 変換 Webアプリケーション ダウンロード 主にJSから機能を利用
なぜ早い? 19 - JavaScript と違って変数の型が確定している - バイナリ化されるのでファイルが比較的軽量になる - 起動時のダウンロード〜コンパイルを並列処理できる -
SIMD やスレッド処理を活用しやすく作られている
Wasm におけるその他の側面 20 - すでに50以上の言語・フレームワークを Wasm へ変換できる - 安定していて活用例が多いのは C/C++,
Rust, Go あたり - 元の言語のライブラリをブラウザへ持ち込んで動作させられる - C/C++ ライブラリなど豊富な資産をそのまま活用できる - ブラウザ外で動かすためのインタフェース 「WASI」 も標準化中 - コンテナのような立ち位置としても注目度が高い https://github.com/appcypher/awesome-wasm-langs
WebRTC と Wasm の歴史 21
注意事項 22 - 当初どちらにも関わっておらず、ソースはインターネット only です - (資料の最後に参考文献を載せます)
2010 WebRTC と Wasm の歴史 23 現在 JITコンパイラが登場し、ブラウザ高速化時代スタート 2011 SIPの課題が報告される・
WebRTCのI-D初提出 2017 主要4ブラウザがWebRTCに対応 主要4ブラウザがWasmに対応 2020 2021 WebRTC 1.0の標準化が完了 Google MeetがWasmで仮想背景機能を提供 WebRTC NVに向けた標準化が進行中 Wasm2.0・WASIの標準化が進行中 2013 ORCA CGがORTCのI-Dを提出 Wasm 1.0 (MVP) の標準化が完了・WASI仕様策定開始 Google MeetがWasmで仮想背景機能を提供 NativeClient (NaCl) プロジェクトが登場 Emscriptenが登場 asm.jsが登場 2008 2019 2012 2015 Wasmとして標準化を目指すことが宣言される 2022 Wasm2.0のdraft初提出
2010 WebRTC と Wasm の歴史 (黎明期) 24 JITコンパイラが登場し、ブラウザ高速化時代スタート 2011 SIPの課題が報告される・
WebRTCのI-D初提出 2013 Wasmとして標準化を目指すことが宣言される NativeClient (NaCl) プロジェクトが登場 Emscriptenが登場 asm.jsが登場 2008 2012 2015 - IP上での通話はSIPが覇権を握っていた - ただし、SIPにはいくつかの課題があった - 独自実装が多くなり互換性が乏しい - 関連仕様が多すぎる - HW依存でイノベーションサイクルが遅い - SIPの祖を中心にWebベースで作り直しを計画 - 早くもChromeとFirefoxが対応 - Chrome, Firefox, SafariがそれぞれJITコンパイラを提供し てからJavaScriptの実行速度が急激に加速 - ただし、JavaScriptは動的型付け言語なので高速動作を意図 して設計されていなかった - 様々な高速化手法が生み出され、それらを元に Wasmの標準 化が開始される
WebRTC と Wasm の歴史 (標準化期) 25 2017 主要4ブラウザがWebRTCに対応 主要4ブラウザがWasmに対応 2020
2021 WebRTC 1.0 の標準化が完了 2013 ORCA CG がORTCのI-Dを提出 Wasm 1.0 (MVP) の標準化が完了・WASI仕様策定開始 Google MeetがWasmで仮想背景機能を提供 2019 Google MeetがWasmで仮想背景機能を提供 - 標準化開始以前から GoogleとMozillaが月次MTGを実施し、 コードを共有しながら開発していた - C/C++でasm.js同等の機能を実現することを MVPとし、まずは そこを目指した - ChromeとFirefoxのSDP実装が異なり、2018年まで続く 互換性の問題の発端となった - (Chrome: Plan B, Firefox: Unified Plan) - Extensible Web (拡張可能なWeb) の考え方にも繋がる ORTCが登場し、Microsoftが賛同 - 仕様策定に時間がかかり過ぎていたため、まずは基本的な ユースケースを満たせる範囲を 1.0として一旦標準化するこ とに *1 *1 後にORTC CGへと名称変更 *2 現在の仕様からは'1.0'表記は削除されている *2 - 2020年にはSIMDなどの追加機能が使えるようになり、画像 加工などにも利用しやすくなった
WebRTC と Wasm の歴史 (現在) 26 現在 WebRTC NV に向けた標準化が進行中
- Wasmを便利に使用するためのあらゆる機能が 2.0仕様として 提案されており、機能毎にフェーズを設定しながら標準化・実装 が進められている - WASIはPreview 2が安定化したのでPreview 3を目指す - 標準化時点で間に合わなかった様々なユースケースへの対 応に向けて新機能の提案・標準化・実装が進められている - 低レイヤ化においてWasmが重要な位置づけとされている - MoQが出てきたこともあり、 WebRTC側でどこまで対応して いくのかはとても気になる * * 現在は'WebRTC Extended Usecases'という名前に変更されている Wasm2.0・WASIの標準化が進行中 2022 Wasm2.0のdraft初提出
WebRTC x AI (Wasm ベース) の利用方法 27
WebRTC x AI (Wasm ベース) の利用方法 28 - WebRTC サイド
- Wasm サイド
WebRTC x AI (Wasm ベース) の利用方法 29 - WebRTC サイド
- Wasm サイド
映像・音声の入出力手段 30 ① Canvas ② MediaStreamTrackGenerator / Processor ③ Encoded
Transform ④ RTP Transport MediaStream (映像 / 音声) 送信 RTPパケタイズ エンコード 暗号化 ① ② ③ ④ WebRTC * 図は送信側のみだが、受信側でも対応する箇所で入出力可能
① Canvas 31 - 全主要ブラウザで利用できる - 一度 Canvas へ出力して処理し、MediaStream へ入力する
- requestAnimationFrame でループすれば全フレーム処理できるが バックグラウンドで停止するのが難点 MediaStream (映像 / 音声) 送信 RTPパケタイズ エンコード 暗号化 WebRTC <canvas> 処理
② MediaStreamTrackGenerator / Processor 32 - Chrome, Edge で利用可能 (Safari
は Processor のみ対応中) - バックグラウンドで停止しない & 全フレーム処理できるのが利点 MediaStream (映像 / 音声) 送信 RTPパケタイズ エンコード 暗号化 WebRTC Stream API TransformStream ( )
③ Encoded Transform 33 - Safari, Firefox では新仕様、Chrome, Edge では旧仕様を利用可能
(新仕様: RTCRtpScriptTransform, 旧仕様: createEncodedStreams) - エンコード後のデータを取り出して処理が可能 MediaStream (映像 / 音声) 送信 RTPパケタイズ エンコード 暗号化 WebRTC Stream API TransformStream ( )
④ RTP Transport 34 任意のエンコード 送信 暗号化 WebRTC RTP Transport
任意のRTPパケタイズ 任意の処理 - 昨年提案されたばかりの WebRTC における全く新しい API - Chrome のみがテスト実装中 - Chromium build >= 129.0.6658.0 - 起動時に`--enable-blink-features=RTCRtpTransport` で利用可能 - 映像処理、エンコード、輻輳制御など何から何まで自由 大・低レイヤ時代の幕開け?
WebRTC x AI (Wasm ベース) の利用方法 35 - WebRTC サイド
- Wasm サイド
Wasm で AI したいなら 36 主な方法3選: 1. C/C++, Rust などで
AI 処理を実装して Wasm 変換する 2. TensorFlow.js や ONNX.js などの AI フレームワークを活用する 3. MediaPipe を活用する
- Web アプリから利用できるバックエンドが提供されている - モデルファイルを用意することで AI 処理を実行可能 - 選択可能なエンジン: JavaScript,
Wasm, WebGL 補足: AI フレームワークの活用 37 https://opensource.microsoft.com/blog/2021/09/02/onnx-runtime-web-running-your-machine-learning-model-in-browser/ onnx.jsの例
EOF 38
参考文献 39 - WebRTC: - 歴史で振り返るWebRTC - TPAC 2015 WebRTC
WG 最新レポート - ORTC.org - SDP の Unified Plan と Plan B - WebAssembly: - WebAssemblyの歴史について - The History of WebAssembly - design