こちらの記事は【Power Apps】音声をテキストに変換する~その1~の続きになります。
その1ではPower Apps 側の作成を行いました。まだご覧になってない方はよろしければご確認になってください。
今回はAzure Functions とSpeech to Text の作成を行いたいと思います。
Power Automate でのフロー作成...の前に
Power Automate で作成するフローでは、以下の機能を実装したいと思います。
- Power Apps から受け取ったオーディオデータをSpeech to Text に渡す
- Speech to Text の結果をPower Apps に返す
しかし、ここで大きな問題が1つあります。
それはSpeech to Text でサポートされているオーディオデータの形式です。
Speech to Text REST API をみてみましょう。
こちらの「オーディオ形式」の項目をみてみるとサポートされている形式は「WAV」「OGG」のみのようです。
前回の記事でも確認を行いましたが、Power Apps のマイクコントロールで作成したオーディオデータの形式は「webm」でしたね。
...このままの形式ではサポートされている形式ではないのでなにかしらの処理によりサポートされている形式に変換を行う必要があります。
しかし、Power Automate のコネクタにもPower Apps での処理でもwebm をwav もしくはogg に変換するための機能は用意されていません。。。
なので今回はAzure Functions を利用して、独自に変換を行うロジックを作成しましょう。
Azure Functions の作成
Azure Functions を用いて「webm」を「wav」に変換する関数を作成しましょう!
* こちらのセクションがコード作成部分になります。
Function App を作成する
Azure にアクセスし、左上のポータルメニューを選択してメニューを表示させます。
表示させたら、「関数アプリ」を選択します。
左上にある「追加」を選択します。
プロジェクトの詳細を入力します。
まずは「基本」ページを入力します。「ホスティング」ページを入力します。
- ストレージアカウント:「新規作成」を行います。
- オペレーティングシステム:「Windows」を選択します。
- プランの種類:「消費量(サーバーレス)」を選択します。
(料金に関して詳しく知りたい方はAzure Functions のスケールとホスティング、Azure Functions の価格をご参照ください。)
「監視」ページを入力します。
- Application Insights を有効にする:Application Insights を使用することにより、ログ、パフォーマンス、およびエラーデータを収集することが可能です。
詳しくは、Azure Functions を監視するをご覧ください。 - Application Insights:Application Insights のリソース作成項目です。基本ページで選択した地域に最も近い地域に作成されます。
- Application Insights を有効にする:Application Insights を使用することにより、ログ、パフォーマンス、およびエラーデータを収集することが可能です。
「確認及び作成」を選択して、登録内容に問題がなければ「作成」を選択します。
関数を作成する
作成された関数アプリのリソースに移動します。
左側のメニューより「関数」を選択し、上部にある「追加」を選択します。
「HTTP trigger」を選択します。
関数の作成を行います。
「コードとテスト」を選択してコードの表示を行います。
これで関数を記述する準備が整いました!!
コードを作成する(準備)
「webm」を「wav」に変換するために「FFmpeg」を利用します。
FFmpeg は音声や動画を編集するのに大変便利なツールですので、興味のある方は調べてみることをお勧めします。
FFmpeg をダウンロードする
FFmpeg のインストール方法の紹介です。
みなくてもわかる方・既にインストールされている方はこのセクションは飛ばしても大丈夫です。
FFmpegにアクセスします。
「Download」を選択します。
Windows を選択して、下記のリンクを選択します。
項目を適宜選択して「Download BUild」を選択してダウンロードします。
以上でFFmpeg のダウンロードは完了です。
FFmpeg を関数内から呼び出せるようフォルダ内に配置する
先ほどダウンロードした「ffmpeg.exe」を関数内から実行できるようにフォルダ内に配置します。
ファイルシステムの利用はKudu コンソールを利用します。
Kudu コンソールを使用することで以下のことができます。
- コマンドの実行
ほとんどの標準的なコンソール操作 (フォルダーの変更、ファイルのコピー/名前の変更/削除など) を実行するために使用します。 git log や git status などの git コマンドを実行して、いくつかの問題を診断することもできます。- フォルダー移動の UI
GUI を使用してサイト フォルダーを選択すると、コンソール ウィンドウが同時に同じフォルダーに移動するので、Kudu コンソールの 2 つの部分が連携します。- ファイルとフォルダーのダウンロード
ファイルとフォルダーについて、ファイル、またはフォルダーの内容を含む zip ファイルをダウンロードできます。- ファイルとフォルダーのアップロード
Kudu コンソールのエクスプローラー UI へのドラッグ アンド ドロップを使用します。- Zip ファイルのアップロードと展開
zip ファイルを Kudu コンソールにドラッグ アンド ドロップすると、展開した zip ファイルの内容がコピーされます。 これは、多数の小さなファイルやフォルダーをアップロードするための効率的な方法です。- テキスト ファイルの表示と編集
Kudu コンソールで、ブラウザー内編集用の Ace を使用してファイルを編集できます。 エディターには、問題を調査して特定するためのインターフェイスが用意されています。また、これを構文チェックや強調表示と共に使用して、web.config ファイルを編集することもできます。
Azure Functions のリソースの左メニューより「高度なツール」を選択し、「移動」を選択します。
「Debug console」より「CMD」を選択します。
「D:\home\site\wwwroot\ConvertAudioFormatUsingFFMpeg\」というディレクトリに「ffmpeg.exe」を配置したいと思います。
GUI操作(マウスクリック)で「D:\home\site\wwwroot」まで移動します。(もしくは下のコマンドラインにて「cd」コマンドを実行)「wwwroot」まで移動できたら、上の「+」より「New folder」を選択して「ConvertAudioFormatUsingFFMpeg」というフォルダを作成します。
作成したフォルダ内に入り先ほどダウンロードしたFFmpeg のbin フォルダー内にあるファイルをドラッグアンドドロップでコピーします。
以上でFFmpeg を利用するための準備が整いました!!
コードを作成する
さぁ、コードを記述していきましょう!
といっても、Azure Functions でFFmpeg を利用してmp3 を wav に変換するコードをMicrosoft MVP の John Liuさんが自身のGithub にて公開されているので、難しいことはありません。
また、今回私が作成したコードを私のGithub にて公開していますので、コピペですましちゃいたい方はこちらをご覧いただければと思います。
「関数を作成する」で作成した関数を開きます。
「コードとテスト」を選択し、「run.csx」が選ばれていることを確認します。
表示されたコードをコピーし、Azure Functions に貼りつけます。
「関数の URL の取得」を選択し、表示されたURL をコピーします。
このURLは後程フロー作成の際に使用します。
Speech to Text の作成
Azure Portal のホームにて、「リソースの作成」を選択します。
「Speech」と検索し、選択します。
「作成」を選択します。
項目を記載して、「作成」します。
作成されたリソースより、「キーとエンドポイント」を選択してキーのコピーを行います。
このキーは後程フロー作成の際に使用します。
以上でSpeech to Text を利用するための準備が整いました!!
おわり
以上でAzure 側での操作は完了です!お疲れさまでした!!
次回はpower Automate を用いてのフローの作成方法をご紹介したいと思います。