はじめに
音声データの文字起こしに活用できる、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と組み合わせて面白いものを作りたい👀✨







