LoginSignup
4
3
音声認識APIを使ってみよう!

Azure OpenAIのWhisper モデルを使って、サクっとPower Appsで文字起こしアプリを作成してみる

Posted at

はじめに

音声データの文字起こしに活用できる、OpenAIの音声認識・テキスト変換モデルが

  • Azure OpenAI Service
  • Azure AI Speech

2つのサービスを経由して利用することができます。
すでにAzure AI Serviceには、音声テキスト変換サービス、Speech to Textの機能があり、
私も利用した経験があります。

今回は、話題のWhisperモデルを使う方法って、どう使うのかな🧐という興味本位で、Power Appsから使用する方法を記載していきます。

Azure OpenAI Serviceを介したWhisperモデル

Azure OpenAI Serviceを介したWhisperモデルは、

  • すばやく文字起こしをする
  • ほかの言語を英語に翻訳する

という機能に適しています。

2024年5月13日段階でサポートされている地域は下記のとおりです。

regions 地域
EastUS 2 米国東部 2
India South インド南部
North Central 北中部
Norway East ノルウェー東部
Sweden Central スウェーデン中部
West Europe 西ヨーロッパ

Sweden Central(スウェーデン中部)、AIサービスの展開が速いです。

■ 0. リソースをデプロイする

Azure AIのリソースをデプロイし、サクっと準備します。
リソースの地域が対応していれば、概要の画面にて、Whisper 音声テキスト変換のメニューが表示されます。

image.png

[ モデル ]を選択し、[ whisper ]を選択、[ デプロイ ]をクリック

image.png

コチラから入力する赤枠で囲まれた[ デプロイ名 ]の部分が、URIに関係していきます。

image.png

デプロイが成功したら次のステップです!

■ 1. Power Appsを準備する

サクっとテスト用のPower Appsを作成します。
Power Appsには、マイク コントロールがあるので、こちらから音声を渡してみましょう!

image.png

レイアウトは下記のようにしています。

image.png

マイク コントロールのOnStopプロパティに、録音が終わった後の音声データをAPIに送信し、文字列を受け取ります。

Power Automate クラウド フローの名前を、PowerAutomateWhisperにし、
文字列変数Responseに格納する例です。

OnStop
UpdateContext({Response:PowerAutomateWhisper.Run(
        {
            name: "audio.webm",
            contentBytes: Self.Audio
        }
    ).response
    }
)

テキスト入力のValueに結果であるResponseを表示します。

■ 2. Power Automateを準備する

お決まりの流れです。

  1. PowerApps (V2) トリガーで音声ファイルを、Power Appsから受け取る
  2. 作成アクションでAPIキーURIを設定
  3. WhisperにHTTP要求を送信
  4. 結果をPower Appsに返す

image.png

■ APIキーと、URIに必要なエンドポイントは[ キーとエンドポイント ]から取得します。

image.png

HTTP要求

URIは下記のように決定されます。

URI
https://{リソースのエンドポイント}/openai/deployments/{モデルのデプロイ名}/audio/transcriptions?api-version=2024-02-01

Method : POST

Header :

キー
api-key 作成アクションで定義したAPIキー
Content-Type multipart/form-data
Header
{
  "api-key": "@{outputs('APIKEY')}",
  "Content-Type": "multipart/form-data"
}

image.png

Body
{
  "$content-type": "multipart/form-data",
  "$multipart": [
    {
      "headers": {
        "Content-Disposition": "form-data; name=\"model\""
      },
      "body": "whisper-1"
    },
    {
      "headers": {
        "Content-Disposition": "form-data; name=\"file\"; filename=\"@{triggerBody()?['file']?['name']}\""
      },
      "body": {
        "$Content-type": "audio/webm",
        "$content": @{triggerBody()?['file']?['contentBytes']}
      }
    }
  ]
}

$content-typemultipart/form-dataが特徴的ですね。
戻り値は、オブジェクトの中にtextプロパティがあるのみです。

Whisperの結果を取得する
@{body('Whisper')?['text']}

完成

コチラでサクっと文字起こしのアプリケーションが作成できます。

ちなみに今サクっと読み上げた結果がコチラ!

文字起こしの結果
今回のKiitaをお読みいただきありがとうございました。
今回はVisperモデルをテストして文字起こしができるか試してみました。
結果はいかがでしたでしょうか。
本日書き終わった時間が9時22分となっております。
次回のKiitaの記事もお楽しみになさってください。

精度高いですね~🐟
凄い時代になりました。

Kiita > Qiita
Visper > Whisper
くらいです。

ほかのAI Serviceと組み合わせて面白いものを作りたい👀✨

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3