
目次
- 【使用するサービス】
- 【レシピ】
- 1. Azure Video Analyzer for Mediaをデフォルト値のまま作成します
- 2. Azure Video Analyzer for Mediaにアクセスするための各種情報を集めます
- 3.Power Automateの公式テンプレートから「OneDrive (Business) の動画のトランスクリプトを取得して SharePoint に保存する」を見つけてフローを作成します
- 4. Power Automateの公式テンプレートに Azure Video Analyzer for Mediaの接続情報やOne Driveのフォルダ情報などを設定します
- 5.One Driveのフォルダ情報に動画を格納し、Sharepointにテキストファイルが届くことを確認します。
こんにちは。Azure認定資格兄さんこと、荒井です。
本日はプログラミング経験がなくても、AIを使った高精度文字起こしアプリが作れる門外不出の方法をご紹介したいと思います。
今では、テレワーク・オンライン会議が当たり前になり、会議のデジタル化がずいぶん進んできてますね。
最近はさらに参加者の名前や人数などの出席情報が取得できたり、オンライン会議室内に小部屋を作ってクローズドな会議を会議中に作れたり、会議をレコーディングできたり、と便利な機能が日に日に充実してきて、嬉しい限りです。
でも、皆さん、まだあれが残ってますよね。そう、あれです。議事録です。
オンライン会議は会議ツールの機能でレコーディングできるから、会議のあとに聞きながら文字起こしはできる。それは確かに便利。
でも、手動での文字起こしは、やっぱりめんどくさい!自動的に書記並みの文字起こしをしてるものはないんかね。
って思う人も中にはいるはずです。
そんな皆さんに朗報です!その悩みを解決できるアプリ(※)をご紹介します!
それがこれだぁ(/・ω・)/

オンライン会議でレコーディングした動画を所定のOne Driveにアップするだけで、裏でAIを活用した文字起こしが起動され、しばらくすると文字起こしデータがSharepointに届いちゃう素敵アプリです。
関数やプログラミングの知識は必要なく、簡単操作で作れますので、ぜひトライしてみてくださいね(/・ω・)/!
(※) 本ブログではAIを使用し会議から様々なメタデータ抽出し、メタデータから高精度トランスクリプト(文字起こし)を抜粋・指定フォルダに自動格納する手順を紹介しています。
高精度トランスクリプトや他のメタデータは一旦不要だから、急ぎ会議のトランスクリプトだけ欲しい!という方はTeamsに標準で搭載されている「ライブトランスクリプション」機能をご活用くださいませ。この手段もかなり有用です。
初期値はトランスクリプトの言語が英語になっていますので、日本語に修正する操作が必要です。ご注意くださいませ(/・ω・)/
【使用するサービス】
- Azure Video Analyzer for Media
→ 動画を分析してメタデータ(人物・画像認識、高精度文字起こし、他)を抽出してくれるAIです。
概要はこちらをどうぞ。 - Microsoft 365 ( One Drive / Sharepoint )
→ 個人用、組織用のオンラインストレージです。
概要はこちらをどうぞ。 - Power Platform ( Power Automate )
→ プロセス自動化、別サービス連携もできるすごい奴です。
概要はこちらをどうぞ。
【レシピ】
- Azure Video Analyzer for Mediaをデフォルト値のまま作成します
- Azure Video Analyzer for Mediaにアクセスするための各種情報を集めます
- Power Automateの公式テンプレートから「OneDrive (Business) の動画のトランスクリプトを取得して SharePoint に保存する」を見つけてフローを作成します
- Power Automateの公式テンプレートに Azure Video Analyzer for Mediaの接続情報やOne Driveのフォルダ情報などを設定します
- One Driveのフォルダ情報に動画を格納し、Sharepointにテキストファイルが届くことを確認します
さぁ!早速レシピアプリを作ってまいりましょう(/・ω・)/
1. Azure Video Analyzer for Mediaをデフォルト値のまま作成します
① Azure Portalにサインインし、[ リソースの作成 ] → 検索欄に [ Video Analyzer ] を入力し、候補で出てきた [ Azure Video Analyzer for Media ] をクリックします。その後、表示される確認画面で [ 作成 ] をクリックします。

② Azure Video Analyzer for Mediaの詳細設定を行います。リソースグループ、Azure Video Analyzer for Mediaアカウント、Media Service、ストレージアカウント、ユーザー割り当てマネージドIDを新規作成し、名前を付けます。各新規作成の項目の設定はデフォルト値で大丈夫です。
分析する動画に関する使用権限確認の欄はチェックを入れます。その後、[ 確認および作成 ] をクリックします。次の画面で [ 検証に成功しました ] と表示されたら、 [ 作成 ] をクリックします。
これで Azure Video Analyzer for Media の準備(デプロイ)は完了です!

2. Azure Video Analyzer for Mediaにアクセスするための各種情報を集めます
① Video Analyzer for Media のポータルにアクセスします。[ AADアカウント ] をクリックします。

② Video Analyzer for Media のポータル のメニューから [ アカウント設定 ] をクリックします。表示された画面にある [ アカウントID ] が表示されていることを確認し、[ コピー ] をクリックします。
※コピーしたテキストは後々使いますので、メモ帳などに控えてくださいませ。

③ Azure Video Analyzer for Media Developer Portal にアクセスします。 [ AADアカウント ] をクリックします。
※同じブラウザのタブならそのままアクセスできると思います。
その後、[ Profile ] をクリックします。

④ User profile画面のSubscriptionsの[ Name ]をまず控えます。そのあと [ Primary key ] 欄の [ Show ] をクリックし、表示された Primary key をメモ帳に控えます。

3.Power Automateの公式テンプレートから「OneDrive (Business) の動画のトランスクリプトを取得して SharePoint に保存する」を見つけてフローを作成します
① Power Automate ポータルにアクセスします。[ テンプレート ] メニューをクリックし、検索欄に [ OneDrive (Business) の動画のトランスクリプトを取得して SharePoint に保存する ] と入力、検索、その後クリックします。
2022/02/15時点では2種のテンプレートが表示されます。間違って翻訳用をクリックしないように注意です。

② テンプレートのフローに含まれているコネクタ(別サービスを呼び出す部品)を使用するにあたって、認証情報の確認が入ります。初めてコネクタを使用される方は全ての接続先で、認証情報(IDやパスワード)の入力が必要なります。
では、 [ Video Indexer ] のコネクタ接続先設定を進めます。
[ 作成 ] をクリックし、表示された画面でコネクタの [ 接続名 ] と [ API Key ] に、[ 2.-④ ] で控えた [ Name ] と [ Primary key ] を設定し、[ 作成 ]をクリックします。

③ すべてのコネクタの接続がうまくいったら、[ 作成 ] をクリックし、フローの編集に移ります。

4. Power Automateの公式テンプレートに Azure Video Analyzer for Mediaの接続情報やOne Driveのフォルダ情報などを設定します
① Power Automateのテンプレートフローが展開されました。このテンプレートかなり優秀で手を加えるところは、ほぼありません。(開発してくれた方、ありがとうございます!)
2022/2/15時点では、差し替える箇所は1点だけです。
[ Create share link ] (One Driveのファイル情報を取得する) アクションが近々リタイアされるようで、別のアクションに変えてあげる必要があります。
画像部分の [ + ] → [ アクションを追加 ] をクリックして、代替アクションを追加します。

② アクションの検索欄に [ OneDrive for Business ]を入力し、検索。その後表示された OneDrive for Business の [ファイルコンテンツの取得 ]をクリックし、アクションをフローに追加します。

③ あとはリタイア予定の [ Create share link ] アクションを、 [ … ] → [ 削除 ] で削除します。これでアクション変更は終了です。

④ 次はトリガーやアクション群に固有値を設定していきます。
まずはトリガーから始めます。このトリガーでは [ 動画を格納予定のOne Driveフォルダ ] を指定します。
このフォルダに動画を格納したら本トリガーが動き、後続のアクションが実行されていきます。
※指定フォルダは各自の環境に読み替えくださいませ。

⑤ 二個目の [ Initialize variable Transcripts ] は変更無しで大丈夫です。
このアクションは文字起こしのテキストデータを格納しておく、データの保管場所を定義するのみのアクションのため、修正は不要です。

⑥ 三個目の[ ファイルコンテンツの取得 ] の[ ファイル ] 欄に、トリガーの [ When a file is created (properties only) ] の結果である [ ファイルの一覧 ID ] を設定します。
これで動画データを格納都度、対象動画データを取得されるアクションができました。

⑦ 四個目、五個目のアクションは共通の設定があるため、一緒に説明します。
[ Get Account Access Token ] は、 Azure Video Analyzer for Media にアクセスするためのトークン(権利)をゲットするアクションです。
[ Upload video and index ]は、One Driveに格納された動画を、 Azure Video Analyzer for Media にアップロードし、インデックス(メタデータ抽出)作成も一緒にしてくれます。
どちらのアクションも共通して、[ 場所 ] と [ アカウントID ] がありますが、同じ内容を設定くださいませ。
Azure Video Analyzer for Media のアカウントはデフォルトだとトライアル扱いのため、[ 場所 ]は trial 一択です。ここでは何も考えずに trial を設定くださいませ。

⑧ [ Upload video and index ] の設定には続きがあります。
アップロード対象のファイル名とファイル自体を渡す必要があるため、任意項目ですが [ 本文 ] と [本文(ファイル名)] を絶対に指定くださいませ。そうしないとアップロードが失敗します。忘れないようにしましょう。

⑨ [ Upload video and index ] の設定にはさらに続きがあります。
本アクションはアップロードと同時にインデックス作成(メタデータ抽出)してくれます。
抽出する際に趣旨であるトランスクリプトの言語設定を日本語以外に指定してしまうと、文字起こしが日本語以外のテキストで生成されてしまうので、注意しましょう。
言語設定をする際は、[ 詳細オプションを表示する ] をクリックし、[ ビデオ言語 ] を [ Japanese ] で設定します。

⑩ 次は [ Do until ] アクション内のアクションに固有値設定を加えていきます。
[ Do until ] アクションは初回実行後、以降条件を満たすまで、処理を繰り返す。といったアクションです。
[ Do until ] アイテム内で、 [ Get Video Index ] を実行しています。これは該当動画のアップロード&インデックス作成状況を取得し、次の判定アクションのインプットで使用します。(状態が[ Processed ] かどうかステータスチェック)
ちなみに[ キャプション言語 ] は、[ japanese ] にしておきましょう。

⑪ ⑩でステータスを取得し、[ Check if state is processed ] アクションで完了判定を実施。 状態が[ Processed ] 以外なら、はいの場合の処理をスキップし、 [ Delay ] アクションに移動。 [ Delay ] アクション で1分待機したのち、また [ Get Video Index ] を実行し、ステータスチェックという形になります。
動画サイズ次第では、アップロード&インデックス作成完了まで数十分かかるかもしれません。慌てずに気長に待ちましょう。

⑫ ⑩~⑪を何回か繰り返し、ステータスチェックの結果、完了判定(状態が[ Processed ])になったら最後にトランスクリプトをSharepointに格納して終了です。待ちわびたぜ!ひゃっほーぃ!!
このテンプレートフローの [ はいの場合 ] の構成は以下のような感じのアクション群でございます。
[ Compose ] アクション
Azure Video Analyzer for Media 上の動画分析結果の取得
↓
[ Parse JSON ] アクション
アクションで形式変換
↓
[ Apply to each ] アクション
[ Initialize variable Transcripts ] アクション内で定義した変数に形式変換したトランスクリプトデータをセット。
↓
[Create file]および、[Update file properties]アクション
Sharepointの指定フォルダ内に、トランスクリプトを含むテキストファイルを作成。
という形です。Sharepointの指定フォルダ は各自任意のフォルダを指定くださいませ。右側にあるOutlookアクションはトランスクリプト取得ができなかった場合は、メール通知するためのアクションらしいです。詳細は割愛割愛(>_<)

最後に 右上の [ 保存 ] をクリックし、クラウド上にフローを保存します。その後、[ テスト ]→ [ 手動 ]をクリックし、フローを有効化すれば、これでAIを使用した文字起こしアプリの完了です!!!
(ちょっと長かったですね。。。すみません(汗))
5.One Driveのフォルダ情報に動画を格納し、Sharepointにテキストファイルが届くことを確認します。
① ちゃんと動くかAIを使った文字起こしアプリが動くか動画を使ってテストしてみましょう!
[ 4. - ④ ]で指定した One Driveフォルダに動画データを格納します。

② [ OneDrive (Business) の動画のトランスクリプトを取得して SharePoint に保存する ] フローが動きだしているかチェックしましょう。トリガーおよび、アクションの右上にグリーンのレ点がついていれば大丈夫です。
[Do until] アクションは、動画のアップロードとインデックス作成完了までやや時間がかかりますので、ここでティータイムに出かけましょう。

インデックス作成過程で色んな分析が行われて、以下のようなメタデータが生成されているらしいです。今回使用するものは高精度なトランスクリプトだけですが、他にも気になる項目がたんまりあって、わくわくします。
ティータイムのお供にどうぞ(/・ω・)/
ビデオの分析情報
顔検出:ビデオに表示される顔を検出し、グループ化します。著名人の識別: Video Analyzer for Media では、世界中のリーダー、男優、女優、アスリート、研究者、ビジネス リーダー、技術リーダーなど、100 万人を超える著名人を自動的に識別します。 これらの著名人に関するデータは、さまざまな Web サイト (IMDB、Wikipedia など) でも見つけることができます。
アカウントベースの顔識別: Video Analyzer for Media は、特定のアカウントのモデルをトレーニングします。 その後、トレーニングされたモデルに基づいてビデオ内の顔を認識します。 詳細については、「Video Analyzer for Media Web サイトから人物モデルをカスタマイズする」と「Video Analyzer for Media API を使用して人物モデルをカスタマイズする」をご覧ください。
顔のサムネイルの抽出 ("最適な顔"):顔の各グループでキャプチャされた最適な顔を (品質、サイズ、正面位置に基づいて) 自動的に識別し、それをイメージ アセットとして抽出します。
ビジュアル テキストの認識 (OCR):ビデオ内に視覚的に表示されるテキストを抽出します。
ビジュアル コンテンツ モデレーション:成人向けやわいせつなビジュアルを検出します。
ラベルの識別:表示されるビジュアル オブジェクトとアクションを識別します。
シーンのセグメント化: 視覚的な手掛かりに基づいて、ビデオ内でシーンが変化するタイミングを決定します。シーンは単一のイベントを表し、意味的に関連する一連の連続したショットで構成されます。
ショット検出:視覚的な手掛かりに基づいて、ビデオ内のショットが変化するタイミングを決定します。ショットは、同じ動画カメラから撮影された一連のフレームです。 詳細については、「Scenes, shots, and keyframes」(シーン、ショット、キーフレーム) を参照してください。
黒フレームの検出:ビデオに表示された黒フレームを識別します。
キーフレームの抽出:ビデオ内の安定したキーフレームを検出します。
ローリング クレジット: テレビ番組や映画の終わりにあるローリング クレジットの始まりと終わりを識別します。
アニメーション キャラクターの検出 (プレビュー): Cognitive Services の Custom Vision との統合によって、アニメ化されたコンテンツのキャラクターの検出、グループ化、および認識を行います。 詳細については、「アニメーション キャラクターの検出」を参照してください。
編集ショット タイプの検出: タイプに基づくショットのタグ付け (ワイド ショット、ミディアム ショット、クローズアップ、エクストリーム クローズアップ、2 ショット、複数の人物、屋外、室内など)。 詳細については、「編集ショット タイプの検出」を参照してください。
観測されたユーザーのトレース (プレビュー): ビデオで観察されたユーザーを検出し、ビデオ フレーム内のユーザーの場所 (境界ボックスを使用) や、正確なタイムスタンプ (開始、終了)、ユーザーが表示されたときの信頼度などの情報を提供します。 詳細については、「Trace observed people in a video」(ビデオ内で確認されたユーザーを追跡する)を参照してください。
引用元:Microsoft - Docs - ビデオの分析情報
オーディオの分析情報
音声の文字起こし: 50 を超える言語で音声をテキストに変換します。拡張機能を使用できます。 サポートされている言語: 英語 (米国)、英語 (英国)、英語 (オーストラリア)、スペイン語、スペイン語 (メキシコ)、フランス語、フランス語 (カナダ)、ドイツ語、イタリア語、標準中国語、中国語 (広東語、繁体字)、簡体字中国語、日本語、ロシア語、ポルトガル語、ヒンディー語、チェコ語、オランダ語、ポーランド語、デンマーク語、ノルウェー語、フィンランド語、スウェーデン語、タイ語、トルコ語、韓国語、アラビア語 (エジプト)、アラビア語 (シリア アラブ共和国)、アラビア語 (イスラエル)、アラビア語 (イラク)、アラビア語 (ヨルダン)、アラビア語 (クウェート)、アラビア語 (レバノン)、アラビア語 (オマーン)、アラビア語 (カタール)、アラビア語 (サウジアラビア)、アラビア語 (アラブ首長国連邦)、アラビア語 (パレスチナ自治政府)、およびアラビア語現代標準 (バーレーン)。自動言語検出:主な音声言語を自動的に識別します。 英語、スペイン語、フランス語、ドイツ語、イタリア語、中国語 (北京)、日本語、ロシア語、ポルトガル語などの言語がサポートされています。 言語を確実に識別できない場合、Video Analyzer for Media では音声言語が英語と想定されます。 詳細については、言語識別モデルに関する記事を参照してください。
複数言語の音声識別と文字起こし: 音声から異なるセグメントにある音声言語を自動的に識別します。 書き起こされるようにメディア ファイルの各セグメントを送信した後、文字起こしが 1 つの統合された文字起こしに結合されます。 詳細については、「複数言語のコンテンツを自動的に識別および文字起こしする」を参照してください。
字幕:VTT、TML、SRT という 3 つの形式で字幕を作成します。
2 チャネル処理:個別のトランスクリプトを自動検出し、1 つのタイムラインに結合します。
ノイズリダクション:(Skype フィルターに基づいて) テレフォニー音声やノイズの多い録音を明瞭にします。
トランスクリプトのカスタマイズ (CRIS):音声テキスト変換のカスタム モデルをトレーニングして、業界固有のトランスクリプトを作成します。 詳細については、「Video Analyzer for Media Web サイトから言語モデルをカスタマイズする」と「Video Analyzer for Media API を使用して言語モデルをカスタマイズする」をご覧ください。
話者の列挙:どの話者がどの言葉をいつ話したかをマップして認識します。 16 人の話者を 1 つの音声ファイルで検出できます。
話者の統計情報:話者の音声率の統計情報を提供します。
テキストのコンテンツ モデレーション:音声トランスクリプト内の明示的なテキストを検出します。
音声効果 (プレビュー): コンテンツの非音声セグメントで以下の音声効果を検出します。銃声、ガラスの破砕音、警報、サイレン、爆発、犬の鳴き声、叫び声、笑い声、観衆の反応 (歓声、拍手、ブーイング)、沈黙。 注: アップロードのプリセットで "高度な音声分析" を選択した場合にのみすべてのイベントを利用できます。それ以外の場合は、"沈黙" と "観衆の反応" のみを使用できます。
感情の検出:音声 (話されている内容) と口調 (話し方) に基づいて感情を識別します。 この感情は、喜び、悲しみ、怒り、または恐怖の可能性があります。
翻訳:音声トランスクリプトの、54 の異なる言語への翻訳を作成します。
オーディオ エフェクト検出 (プレビュー): さまざまな音響イベントを検出し、それらをさまざまな音響カテゴリ (発砲、叫び声、観客の反応など) に分類します。 検出される音響イベントはクローズド キャプション ファイルにあります。 このファイルは、Video Analyzer for Media ポータルからダウンロードできます。 詳細については、「オーディオ効果の検出」を参照してください。
引用元:Microsoft - Docs - オーディオの分析情報
③ 頑張ってアプリを作った後のティータイムは格別ですね。Microsoft Docsで色んな分析ができることもわかってテンションが高まるばかりです。
さて、フローが完走したか確認し、完走していたら、次はSharepointの指定フォルダにテキストファイルが出力されているか確認します。
指定したフォルダに*.txtファイルがあれば成功です!見てみましょう!

④ 出力されたテキストファイルを確認し、トランスクリプトの精度をチェックしてます。
個人的な体感では8割以上、正確に抽出できていて、文字起こし自動化の目的は余裕で達成できました。
課題を強いて言うならカタカナ英語の兼ね合いで英単語とカナが混在しちゃっている箇所が機械学習で未来さらに精度が高まったらいいなぁと感じるくらいです。
兎にも角にも、高精度なトランスクリプトデータがゲットできました!
あとは議事録にまとめたい要点をつまんで、議事録のファイナライズしちゃいましょう(/・ω・)/
いかがでしたでしょうか。
ツールの操作という意味では学習は必要になりますが、内容は特に難しいプログラミングもなく、簡単なマウス操作と文字入力で、AIを使った文字起こしアプリが作成できちゃいましたね!
さすがMicrosoftさん。最高ですッ(/・ω・)/
Microsoftさんはクラウド・AIの民主化を目指しており、 クラウド・AI を誰でも簡単に使えるようにサービスを洗練させてくれてます。
皆さんのアイディアとクラウド・AIサービスを操作するちょっとの気持ちさえあれば、やりたいことを自分で形できる時代がもう目の前にきてます!やりましたね!!
(最近、業務にかまけて技術ブログの発信を怠っていましたが(汗))
定期的に便利アプリの紹介ブログを書いていこうと思いますので、引き続きよろしくお願いいたします。
駄文にもかかわらず最後までお読みいただき、ありがとうございました。
以上、[ プログラミング経験がなくても大丈夫!誰でも作れるAIを使った文字起こしアプリを作ってみよう。 # Azureリレー ] でしたーー!
【参考情報】
Video Analyzer for Media とは
網羅的に情報がある公式サイトです。読めば読むほど無限の可能性にわくわくします。
Azure Video Analyzer for Mediaを使ってみよう~API編~
情報量が多く、本ブログを書く際にだいぶ参考にさせていただきました。
最先端サービスの英語サイトの情報収集、翻訳、動作検証、ありがとう酒井さん!
(同じ会社の若い力あるエンジニアの方です。参考になるブログ発信者が自社の人だとなんだか心がほっこりします)