前回の記事
Teams会議から音声をリアルタイムに取得するための背景や基本情報は下記の記事にまとまっています。ここでは、Microsoftのドキュメントから「アプリケーションホスト型メディア」を中心に紹介します。
アプリケーションホスト型メディアって?
Microsoftが作り出した言葉でしょうか。原文では「Application-hosted mdeia」となっていて、日本語訳は機械翻訳みたいですね。。。この名前からは何が出来るのか良く分からないけど、「Teams会議から音声をリアルタイムに取得するための機能」って理解をしておきます。
本記事の執筆時点(2021年5月)だと、「アプリケーションホスト型メディア ボットの要件と考慮事項」の最終更新日が2018/11/16で、かなり古い情報です。
概要が記載された「通話とオンライン会議ボット」は最終更新日が2021/4/28となので、Microsoftで更新されている分野のようですが、アプリケーションホスト型メディアについてはドキュメント更新が実施されていないようです。
また日本語翻訳についても、ところどころ機械翻訳で意味が通じないところがあります。本記事は筆者が日本語と英語のドキュメントを読み解いた理解を記載しています。
アプリケーションホスト型メディアは、Teams Bot(チャットボット)の構造を基本にしているようなので、Azure Bot Serviceを利用しています。また、Teamsから音声を取得するにはAzure Graph APIを使っているようです。

アプリケーションホスト型メディアの要件
公式ドキュメントから引用して、要件を整理してみました。

サーバについては、AKS(Azure Kubernetes Service)で実装しているサンプルがあったので、AKSでもDeploy出来そうです。
パフォーマンスに関する考慮
当たり前ですが、音声をリアルタイム処理するので、VMのスペックには注意をしなくてはいけないようです。また、同時に処理できる音声はCPUコアごとに1or2みたいなので、同時接続数を設計したり、リアルタイム処理に入るまえの段階で同時接続数をコントロールする必要がありそうです。
VMインスタンスのサイジングについても、下記の記載があるようです。
リアルタイム メディア ボットをホストする VM インスタンスには、少なくとも 2 つの CPU コアが必要です。 Azure では、Dv2 シリーズ仮想マシンをお勧めします。 他の Azure VM の種類では、4 つの仮想 CPU (vCPU) を持つシステムが必要な最小サイズです。 https://docs.microsoft.com/ja-jp/microsoftteams/platform/bots/calls-and-meetings/requirements-considerations-application-hosted-media-bots
音声データはローカルに保管される
リアルタイム処理した音声は、VM上に残されるようです。録音データとして残す場合は、VMインスタンスからデータ転送する処理が必要そうです。
リアルタイムのメディア通話は、作成されたコンピューターに残っています。 リアルタイムのメディア通話は、呼び出しを受け入れるか開始した仮想マシン (VM) インスタンスにピン留めされます。 https://docs.microsoft.com/ja-jp/microsoftteams/platform/bots/calls-and-meetings/requirements-considerations-application-hosted-media-bots
Graph APIの権限付与とTeams管理者の許可
アプリケーションホスト型メディアは、どんなTeams会議の音声でも取れるわけではないようです。(当たり前ですが)。あらかじめTeamsのテナント管理者がGraph APIの権限付与を組織単位で実施する必要があるようです。
機械翻訳でちょっと意味不明ですが、大体上記のことのよう。
このGraphは、アプリがリソースに対して持つアクセスを制御するための詳細なアクセス許可を提供します。 アプリ要求に対するアクセス許可Graph決定します。 呼びGraph API は、サインインしているユーザーが存在せずに実行されるアプリで使用されるアプリケーションのアクセス許可をサポートします。 テナント管理者は、アプリケーションのアクセス許可に同意する必要があります。 https://docs.microsoft.com/ja-jp/microsoftteams/platform/bots/calls-and-meetings/registering-calling-bot#add-graph-permissions
Comments