利用技術
Twilio
- Programable Video:オンラインビデオ
- Sync:Documentで、あっちむいてほいの開始、結果を通知
- Assets:Websサイト配信
AWS
- API Gateway:スナップショットから顔の向きを判定するAPI
- Lambda:顔の向きを判定する処理を実装
- Rekognition:画像分析サービス。スナップショットから顔の向きを判定
処理フロー
オンラインビデオに参加
Twilio Assetsで配信されるページへアクセスし、入室ボタンをクリックします。
あっちむいてほい開始ボタンをクリック
参加者のうち1人が開始ボタンをクリックします。Twilio Sync(Documents)を使って、参加者全員に開始を通知します。
あっちむいてほいをする
開始が通知されると、全員の画面に「あっち」「むいて」「ほい」と表示された後、上下左右いずれかの向きに指が指されます。(向きはプログラムでランダムに決められます) 向きが表示されると自動で画面のスナップショットが撮影されます。
顔の向きを判定する
スナップショットはbase64形式に変換され、AWS API Gatewayへ投げられます。 AWS内ではLambdaを通して、画像解析サービスであるRekognitionを使って顔の向きを判定します。結果はYaw/Roll/Pitchで返ってくるため、それぞれの値の大きさから上下左右を判定しています。(それぞれの関係は、Azureのページが分かりやすかったです。)
Azureにも同様のサービスがありますが、使ってみた範囲ではAWSの方が精度が高かったです。判定に時間がかるのが難点ですが。
結果を表示する
指を指した向きと顔の向きを比較し結果を表示します。また、Twilio Syncを用いて他のユーザーの結果へ結果を通知します。