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
Amazon Chime SDK を用いて 音声通話機能をアプリに組み込む
Search
Kohei Ito
September 28, 2024
Technology
0
200
Amazon Chime SDK を用いて 音声通話機能をアプリに組み込む
Izumo Developers' Guild #1 登壇資料
Kohei Ito
September 28, 2024
Tweet
Share
More Decks by Kohei Ito
See All by Kohei Ito
知識ゼロからAWS認定を全冠したときにもらった質問への回答集
zetton110
0
80
Other Decks in Technology
See All in Technology
BidiAgent と Nova 2 Sonic から考える音声 AI について
yama3133
2
150
Redshift認可、アップデートでどう変わった?
handy
1
130
Claude Codeを使った情報整理術
knishioka
20
12k
松尾研LLM講座2025 応用編Day3「軽量化」 講義資料
aratako
15
4.9k
スクラムを一度諦めたチームにアジャイルコーチが入ってどう変化したか / A Team's Second Try at Scrum with an Agile Coach
kaonavi
0
130
AWSと生成AIで学ぶ!実行計画の読み解き方とSQLチューニングの実践
yakumo
2
330
【Agentforce Hackathon Tokyo 2025 発表資料】みらいシフト:あなた働き方を、みらいへシフト。
kuratani
0
110
ECS_EKS以外の選択肢_ROSA入門_.pdf
masakiokuda
1
120
20251225_たのしい出張報告&IgniteRecap!
ponponmikankan
0
110
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.6k
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
1
870
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
88
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Utilizing Notion as your number one productivity tool
mfonobong
2
190
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
2
78
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
34
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
100k
The Limits of Empathy - UXLibs8
cassininazir
1
200
Typedesign – Prime Four
hannesfritz
42
2.9k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
230
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
44
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
590
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.9k
Transcript
Amazon Chime SDK を用いて 音声通話機能をアプリに組み込む 株式会社ヌーラボ 伊藤 浩平 Izumo Developers' Guild
#1 (2024.9.28)
自己紹介 • 名前 伊藤 浩平 • 所属 株式会社ヌーラボ サービス開発部 • 業務でやっていること
- プロジェクト管理ツール Backlog の Git ホスティング機能の開発 - ビジネスチャットツール Typetalk の保守/運用 • その他 - 島根県出雲市出身 - 子二人
Amazon Chime SDK について • Amazon Chime SDK について -
Amazon Chime の機能を部分的にアプリへ組み込むためのライブラリ - Amazon Chime と同じ通信基盤を利用できるため、信頼性が担保できる • できること - PSTN Audio - SIP Trunking - メッセージング - Web RTCとライブ文字起こし - PSTN Audio 付き WebRTC
Amazon Chime SDK について • ChimeSDKの公式デモアプリを使っている様子 S3、Amazon Transcribe(文字起こし)、Amazon Translate(翻訳)といった他の
サービスを組み合わせることで機能が拡張できる
Amazon Chime SDKをアプリへ組み込む ⚫技術検証でチャットツールに音声通話機能を追加したので紹介 - 本機能は社内のβ環境でのみ利用可 とりあえずデモ見せマス 画像生成プロンプト ”デモがあると嬉しいおじさん ”
システム構成(後ほど説明します)
処理の流れ (後ほど説明します)
1. 音声通話を実施する 2. 会議の状態変更をアプリへリアルタイムに伝える 1-①. 最寄りの Media Region を取得する 1-②.
Chimeへ会議データを作成(登録) 1-③. Chimeへ会議に紐づく出席者を作成(登録) 1-④. WebRTC Session を開始/切断する 1-⑤. 会議から出席者を削除する 以下に沿って各処理を説明します。
1. 音声通話を実施する 2. 会議の状態変更をアプリへリアルタイムに伝える 1-①. 最寄りの Media Region を取得する 1-②.
Chimeへ会議データを作成(登録) 1-③. Chimeへ会議に紐づく出席者を作成(登録) 1-④. WebRTC Session を開始/切断する 1-⑤. 会議から出席者を削除する 以下に沿って各処理を説明します。
1-① 最寄りの Media Region を取得する - フロントエンドから以下の公開APIを叩き、利用 者にとって最寄りのAWSリージョンを取得する <Media Regionとは>
Amazon Chime SDKがメディアデータを処理および転送するための 物理的なAWSリージョン - 利用者に地理的に近いメディアリージョンを指定することで、音 声やビデオ会議を行う際に、データの転送レイテンシを最小化 し、通信の品質を向上させる - 指定可能なリージョンは限定される https://nearest-media-region.l.chime.aws/ 1. 音声通話を実施する
1-② Chimeへ会議データを作成(登録) - CreateMeeting API を呼ぶ - リクエスト - ClientRequestToken:
- 一意のリクエスト識別子 - 各リクエストは異なる値を持つ必要あり - MediaRegion - 手順1-①で取得した値 - レスポンス - MeetingId - Chime で発行される 一意の会議ID 参考) Amazon Chime SDK API Reference - CreateMeeting 1. 音声通話を実施する
1-③ Chimeへ会議に紐づく出席者を作成(登録) - CreateAttendee API を呼ぶ - リクエスト - MeetingId
- 手順①-2で取得した値 - レスポンス - AttendeeId - Chime で発行される 参加者の一意の識別 子 - JoinToken - 参加者が会議に参加するためのトークン。ク ライアントアプリケーションで会議へのアクセ スを認証するために使用されます。 参考)Amazon Chime SDK API Reference - CreateAttendee 1. 音声通話を実施する
1-④ WebRTC Session を開始する - ChimeSDKのライブラリの作法に従えば簡単に セッションを開始できる (具体的な実装は割愛します。気になる方は参考のドキュメ ントを見てみてください。) -
ざっとした流れ - これまでに取得したデータをもとに MeetingSessionConfigurationを作成 - 入出力デバイス(マイク /スピーカー)と接続 - Meeetingセッションの開始 1. 音声通話を実施する 参考)amazon-chime-sdk-js APIOverview
1-⑤ 会議から出席者を削除する - DeleteAttendee API を呼ぶ - Request Syntax -
DELETE /meetings/MeetingId/attendees/AttendeeId HTTP/1.1 - URI Request Parameters - MeetingId : - 手順②で取得したID - AttendeeId: - 手順③で取得したID 1. 音声通話を実施する 参考)Amazon Chime SDK API Reference - DeleteAttendee
1-⑤ 会議から出席者を削除する - DeleteAttendee API を呼ぶ - Request Syntax -
DELETE /meetings/MeetingId/attendees/AttendeeId HTTP/1.1 - URI Request Parameters - MeetingId : - 手順②で取得したID - AttendeeId: - 手順③で取得したID 会議が24時間非アクティブであればChime側で自動的に削 除される (DeleteMeeting APIを呼べば会議の削除もできますが、今回は すぐに削除する必要もないため呼んでません) 1. 音声通話を実施する
Media Region Send media data ① Backend から ChimeSDKのAPIを叩き、 会議・出席者の登録を行う
② ①で帰ったデータをもとに、 Frontend からWebRTC Session を開始する 1. 音声通話を実施する
1. 音声通話を実施する 2. 会議の状態変更をアプリへリアルタイムに伝える 1-①. 最寄りの Media Region を取得する 1-②.
Chimeへ会議データを作成(登録) 1-③. Chimeへ会議に紐づく出席者を作成(登録) 1-④. WebRTC Session を開始/切断する 1-⑤. 会議から出席者を削除する 以下に沿って各処理を説明します。
2. 会議の状態変更をアプリへリアルタイムに伝える Event Bridge に Chime イベントを捕捉するルールを 追加し、それをトリガーにRedisを更新 Redis の
pub/sub+WebSocket で Frontend へ変更を伝播させシー ムレスに画面を更新する 今回はRedis使ってま すが、DynamoDB + DynamoDB Streams でやってもよさそうです
会議への参加(AttendeeJoin)/ 退出(AttendeeLeft) のイベントを契機にデータの更新処理を実行 2. 会議の状態変更をアプリへリアルタイムに伝える
まとめ ”Amason ChimeSDK はいいぞ🎵” - アプリへリアルタイムコミュニケーション機能を 簡単に実装できる - Amazon Chime
と同じ通信基盤を利用でき、信頼性が高い - AWS他サービスとの連携により機能の拡張性が高い