はじめに
音声データの文字起こしに活用できる、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 音声テキスト変換
のメニューが表示されます。
[ モデル ]を選択し、[ whisper ]を選択、[ デプロイ ]をクリック
コチラから入力する赤枠
で囲まれた[ デプロイ名 ]の部分が、URI
に関係していきます。
デプロイが成功したら次のステップです!
■ 1. Power Appsを準備する
サクっとテスト用のPower Apps
を作成します。
Power Appsには、マイク コントロールがあるので、こちらから音声を渡してみましょう!
レイアウトは下記のようにしています。
マイク コントロールのOnStop
プロパティに、録音が終わった後の音声データをAPIに送信し、文字列を受け取ります。
Power Automate クラウド フローの名前を、PowerAutomateWhisper
にし、
文字列変数Response
に格納する例です。
UpdateContext({Response:PowerAutomateWhisper.Run(
{
name: "audio.webm",
contentBytes: Self.Audio
}
).response
}
)
テキスト入力のValue
に結果であるResponse
を表示します。
■ 2. Power Automateを準備する
お決まりの流れです。
-
PowerApps (V2) トリガー
で音声ファイルを、Power Appsから受け取る -
作成
アクションでAPIキー
とURI
を設定 -
Whisper
にHTTP要求を送信 - 結果を
Power Apps
に返す
■ APIキーと、URIに必要なエンドポイント
は[ キーとエンドポイント ]から取得します。
HTTP要求
URI
は下記のように決定されます。
https://{リソースのエンドポイント}/openai/deployments/{モデルのデプロイ名}/audio/transcriptions?api-version=2024-02-01
Method
: POST
Header
:
キー | 値 |
---|---|
api-key | 作成アクションで定義したAPIキー |
Content-Type | multipart/form-data |
{
"api-key": "@{outputs('APIKEY')}",
"Content-Type": "multipart/form-data"
}
{
"$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-type
のmultipart/form-data
が特徴的ですね。
戻り値は、オブジェクトの中にtext
プロパティがあるのみです。
@{body('Whisper')?['text']}
完成
コチラでサクっと文字起こしのアプリケーションが作成できます。
ちなみに今サクっと読み上げた結果がコチラ!
今回のKiitaをお読みいただきありがとうございました。
今回はVisperモデルをテストして文字起こしができるか試してみました。
結果はいかがでしたでしょうか。
本日書き終わった時間が9時22分となっております。
次回のKiitaの記事もお楽しみになさってください。
精度高いですね~🐟
凄い時代になりました。
Kiita > Qiita
Visper > Whisper
くらいです。
ほかのAI Serviceと組み合わせて面白いものを作りたい👀✨