0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

月数百円で議事録を自動化!Azureの無料クレジットで作る「音声→議事録」自動作成(PowerShellだけ・初心者向け)

0
Posted at

はじめに

会議の議事録づくり、地味に時間がかかりますよね。
かといって、Microsoft 365 Copilot などの有料ライセンスをいきなり契約するのはハードルが高い…という方も多いと思います。

そこでこの記事では、Azure の無料アカウントについてくる $200 のクレジットの範囲内で、

音声ファイル → 文字起こし → 議事録(決定事項・ToDo つき)

を自動で作る最小構成を、PowerShell のスクリプト1本で作ります。

  • プログラミング経験が浅くてもOK(コピペで動かせます)
  • Python などの環境構築は不要(PowerShell 7 だけ)
  • 画面操作は「ここをクリック」レベルまで書きます
  • 使うのは Azure AI Speech(文字起こし) と Foundry 上の GPT モデル(議事録整形) の2つだけ

image.png

この記事の内容は 2026年11月時点 のものです。Azure ポータルや Foundry ポータルの画面・ボタン名・モデル名は頻繁に変わります。表示が少し違う場合は、近い名前のものを選んでください。

完成イメージ

実行するコマンドはこれだけです。

.\minutes.ps1 -AudioPath .\meeting.mp3

実行すると、transcript.txt(文字起こし)と minutes.md(議事録)ができあがります。

費用の考え方(先に読んでください)

項目 内容
Azure 無料アカウント $200 のクレジット(30日間) と一部の無料サービスがつく
請求 公式に「無料アカウントのお客様には請求は発生しない」と案内されている。従量課金プランへ自分で切り替えない限り、クレジットを超えても勝手に課金されない
文字起こし(Speech) 音声の長さに応じた従量課金 → クレジットから引かれる
議事録整形(GPT) 使ったトークン数に応じた従量課金 → クレジットから引かれる

ポイントは、「無料枠の中だけで動く」のではなく「無料クレジットを消費して動かす」 ということです。
ただし今回の用途(数分〜1時間程度の音声を数回試す)なら、$200 に対してごくわずかな消費で済みます。

今回は最も安いクラスのモデル gpt-6-luna を使います。入力 $0.10 / 出力 $0.50 / 100万トークンという価格が報じられています(OpenAI の公式 API 価格の情報で、Azure 上の価格は異なる場合があるので、デプロイ時に表示される価格を確認してください)。1時間の会議の文字起こしを議事録にまとめる程度なら、GPT 側の費用は 1円未満〜数円程度 の見込みです(筆者の概算)。

無料期間が終わったらどうなる?

今回の構成は、Azure 無料アカウントの $200 クレジット を使って試すことを前提としています。

無料期間(30日)が終了すると、Fast transcription と GPT モデルの利用は従量課金になります。そのため、完全無料で使い続けられる構成ではありません。

ただし、議事録用途であれば継続利用時の費用は比較的低額です。

利用量の目安 月額費用の目安
1時間の会議 × 月4回 約220〜600円
1時間の会議 × 月8回 約440〜1,200円
1時間の会議 × 月20回 約1,100〜3,000円

上記は Speech の料金を 1時間あたり約0.36〜1ドル、為替を 1ドル=150円として概算したものです。1時間の会議を文字起こしして議事録に整形する場合、費用の大半は Speech の文字起こし料金で、GPT 側の費用は数円以下に収まるケースがほとんどです。

そのため、今回の構成は

  • まずは無料クレジットで試す
  • 気に入ったら月数百円〜数千円程度で運用する

という使い方に向いています。

Speech の「無料(F0)」レベルでは、今回使う Fast transcription は使えません。 公式の割当て表で Fast transcription の Free (F0) は「N/A」です。後述の手順では Foundry リソースを「Standard (S0)」で作りますが、これは無料アカウントのクレジットで利用できます。

用意するもの

  • Azure アカウント(無料アカウントでOK。電話番号・クレジットカード(プリペイド不可)・Microsoft アカウントまたは GitHub アカウントが必要)
  • Windows PC
  • PowerShell 7 以降(後述。Windows 標準の 5.1 では動きません)
  • 試し用の短い音声ファイル(5〜10分程度。mp3 か wav)。この記事では後半で紹介する、note で公開されている議事録練習用のサンプル音声(約5分)を利用します

社内の機密会議の音声は、最初は使わないでください。 まずは自分で読み上げたダミー音声で動作確認し、実運用の前に会社のセキュリティルールを確認しましょう。

手順1:Azure 無料アカウントを作る

すでにアカウントがある場合は、次の手順2へ進んでください。

  1. ブラウザで Azure の無料アカウントのページ(azure.microsoft.com/free)を開く
  2. 「無料で始める」をクリックし、Microsoft アカウント(または GitHub アカウント)でサインイン
  3. 画面の案内に従って、電話番号・クレジットカード情報を入力して登録

登録後、https://portal.azure.com で Azure ポータルにサインインできれば OK です。
残りのクレジットは、ポータルの 「Cost Management」 で確認できます。

image.png

手順2:リソースグループを作る

リソースグループは、作ったものをまとめて入れておく箱です。後でこの箱ごと削除すれば、課金もまとめて止められます。

  1. Azure ポータル上部の検索バーに「リソース グループ」と入力して開く
  2. 「+ 作成」をクリック
  3. 次のように入力する
    • サブスクリプション:自分のサブスクリプション(無料試用版など)
    • リソースグループ名:rg-minutes-test
    • リージョン:Japan East(東日本)
  4. 「確認および作成」→「作成」

手順3:Foundry リソースを作る

現在の Azure では、Speech(文字起こし)も GPT モデルも 「Microsoft Foundry」リソース という1つのリソースで使えます。つまり、リソースを1個作れば、キーも1組で済みます。

  1. Azure ポータル左上の「リソースの作成」をクリック
  2. 検索欄に「Microsoft Foundry」と入力し、表示された項目の「作成」をクリック(見つからない場合は「Azure OpenAI」でも可)
  3. 次のように入力する
    • サブスクリプション:自分のもの
    • リソースグループ:rg-minutes-test
    • リージョン:Japan East
    • 名前:世界で一意な名前(例:minutes-test-yourname)← 後でスクリプトで使うのでメモ
    • 価格レベル:Standard (S0)
  4. ネットワークは、試用なら初期値(すべてのネットワーク)のままでOK
  5. 「確認および作成」→「作成」
  6. デプロイが終わったら「リソースに移動」をクリック

リージョンについて:Fast transcription は、使えるリージョンが限られています。Japan East は公式ドキュメントの対応リージョン一覧に載っていましたが、最新の対応状況は公式の「Speech service regions」の表(Fast transcription の列)で確認してください。後でエラーになる場合は、別のリージョン(例:East US、Southeast Asia)でリソースを作り直すと解決することがあります。

image.png

手順4:キーとエンドポイントを控える

  1. 作ったリソースの左メニューで「リソース管理」の中にある「キーとエンドポイント」をクリック
  2. 次の3つをメモ帳にコピーしておく
    • キー1
    • 場所/リージョン(例:japaneast)
    • エンドポイントのうち https://◯◯.openai.azure.com/ の ◯◯ の部分(基本はリソース名と同じ)

キーはパスワードと同じです。 記事やブログ、GitHub、SNS、スクリーンショットに絶対に載せないでください。もし漏らしてしまったら、同じ画面の「キーの再生成」で無効化できます。

手順5:GPT モデルをデプロイする

議事録を整形するための GPT モデルを、リソースに「デプロイ」(使える状態に配置)します。

  1. リソースの「概要」ページにある Foundry ポータルへのリンクをクリック(または https://ai.azure.com を開く)
  2. 「新しい Foundry」のスイッチがオンになっていること、対象のプロジェクト(なければ作成)が選ばれていることを確認
  3. 左メニューまたは上部メニューの「モデル」(または「検出」)を開く
  4. モデル一覧から gpt-6-luna を探してクリック(検索欄に luna と入力すると早い)
  5. 「デプロイ」をクリックし、初期設定のままデプロイ
  6. 表示される デプロイ名(通常はモデル名と同じ gpt-6-luna)をメモ

image.png

なぜ gpt-6-luna なのか

モデル一覧には gpt-6-astra、gpt-6-sol、gpt-6-luna など、似た名前がたくさん並んでいて迷います。2026年11月時点の比較記事では、次のように位置づけられていました。

モデル 位置づけ 価格の目安
gpt-6-astra 最上位。難しい作業向け 高い
gpt-6.1-sol / gpt-6-sol 中位。コーディングなど Astra の約1/5
gpt-6-luna 最安。要約・抽出・分類など繰り返し作業向け Sol の約1/20

議事録の要約・整形は、まさに「要約・抽出」にあたる作業です。無料クレジットを節約したいので、まず Luna で試し、出来が物足りなければ Sol に替えるのがおすすめです。モデルを替えるときは、スクリプトの環境変数(AZ_DEPLOYMENT)を変えるだけです。

モデルのラインナップは入れ替わりが早いです。名前が見つからない場合は、「チャットの完了」と書かれた軽量・低価格のモデルを選べば同じように動きます。また、アカウントの種類やリージョンによっては、デプロイに制限(割当て不足など)がかかる場合があります。その場合は別のリージョンやモデルを試してください。

手順6:PowerShell 7 を用意する

今回のスクリプトでは、音声ファイルを送るために PowerShell 7 以降の機能(-Form)を使います。Windows に最初から入っている「Windows PowerShell 5.1」では動かないので注意してください。

  1. Windows のスタートメニューで「PowerShell」と検索し、「PowerShell 7」があるか確認(名前に「7」とあれば OK)
  2. なければ、Windows のターミナルを開いて次を実行してインストール
winget install --id Microsoft.PowerShell
  1. インストール後、スタートメニューから「PowerShell 7」を起動
  2. 次のコマンドでバージョンを確認(7.x.x と出れば OK)
$PSVersionTable.PSVersion

手順7:スクリプトを作る

作業用のフォルダ(例:C:\minutes)を作り、その中に minutes.ps1 という名前で次の内容を保存します。メモ帳でも作れます(保存時の文字コードは UTF-8)。

param(
    [Parameter(Mandatory = $true)]
    [string]$AudioPath,
    [string]$OutDir = "."
)

$ErrorActionPreference = "Stop"

# ---------- 設定(環境変数から読み込む) ----------
$key        = $env:AZ_KEY          # Foundryリソースの「キー1」
$region     = $env:AZ_REGION       # 例: japaneast
$resource   = $env:AZ_RESOURCE     # 例: minutes-test-yourname(リソース名)
$deployment = $env:AZ_DEPLOYMENT   # 例: gpt-6-luna(デプロイ名)

$required = [ordered]@{
    AZ_KEY        = $key
    AZ_REGION     = $region
    AZ_RESOURCE   = $resource
    AZ_DEPLOYMENT = $deployment
}
foreach ($name in $required.Keys) {
    if (-not $required[$name]) { throw "環境変数 $name が設定されていません" }
}
if (-not (Test-Path $AudioPath)) { throw "音声ファイルが見つかりません: $AudioPath" }

# ---------- ① 文字起こし(Azure Speech: Fast transcription) ----------
Write-Host "① 文字起こし中..."
$sttUri = "https://$region.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15"
try {
    $stt = Invoke-RestMethod -Uri $sttUri -Method Post `
        -Headers @{ "Ocp-Apim-Subscription-Key" = $key } `
        -Form @{
            audio      = Get-Item $AudioPath
            definition = '{"locales":["ja-JP"]}'
        }
} catch {
    Write-Host "文字起こしでエラー: $($_.ErrorDetails.Message)" -ForegroundColor Red
    throw
}

$transcript = $stt.combinedPhrases[0].text
if (-not $transcript) { throw "文字起こし結果が空でした。音声ファイルを確認してください" }

# ---------- ② 議事録に整形(Foundry上のGPTモデル) ----------
Write-Host "② 議事録を作成中..."
$systemPrompt = @"
あなたは議事録作成の専門アシスタントです。
以下は会議の音声を文字起こししたテキストです。次の形式のMarkdownで議事録を作成してください。

## 概要(3行以内)
## 議論の要点(箇条書き)
## 決定事項(箇条書き。なければ「なし」)
## ToDo(表形式: 担当者 / 内容 / 期限。不明な項目は「未定」)
## 未決事項・次回への持ち越し

ルール:
- 文字起こしに書かれていない内容は絶対に追加しない
- 担当者や期限が文字起こしから読み取れない場合は「未定」と書く
- 「えー」「あのー」などの言い淀みは取り除いてよい
"@

$body = @{
    model    = $deployment
    messages = @(
        @{ role = "system"; content = $systemPrompt },
        @{ role = "user";   content = $transcript }
    )
} | ConvertTo-Json -Depth 5

$chatUri = "https://$resource.openai.azure.com/openai/v1/chat/completions"
try {
    $res = Invoke-RestMethod -Uri $chatUri -Method Post `
        -Headers @{ "api-key" = $key } `
        -ContentType "application/json; charset=utf-8" `
        -Body ([Text.Encoding]::UTF8.GetBytes($body))
} catch {
    Write-Host "議事録作成でエラー: $($_.ErrorDetails.Message)" -ForegroundColor Red
    throw
}

$minutes = $res.choices[0].message.content

# ---------- ③ ファイルに保存 ----------
$transcript | Set-Content (Join-Path $OutDir "transcript.txt") -Encoding utf8
$minutes    | Set-Content (Join-Path $OutDir "minutes.md")     -Encoding utf8

Write-Host "完了: transcript.txt と minutes.md を保存しました" -ForegroundColor Green

スクリプトの解説(ざっくり)

部分 やっていること
設定 キーなどをスクリプトに直書きせず、環境変数から読む(キーの流出防止)
① 文字起こし 音声ファイルを Azure AI Speech の Fast transcription API に送り、全文テキスト(combinedPhrases)を受け取る。言語は ja-JP(日本語)
② 議事録整形 文字起こしを GPT モデルに渡し、決められた形式の議事録にしてもらう。「書かれていないことを足さない」 と指示しているのが大事なポイント
③ 保存 文字起こしと議事録をファイルに保存

エンドポイント(送り先)の使い分けは次のとおりです。

  • 文字起こし:https://{リージョン}.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe
  • GPT:https://{リソース名}.openai.azure.com/openai/v1/chat/completions(model にはデプロイ名を入れる。v1 API では api-version の指定は不要)

どちらも、Foundry リソースの同じキーで認証できます。

手順8:実行する

8-1. テスト用の音声を用意する

今回は、note で公開されている議事録練習用の音声「議事録練習音声(どこかのIT企業)」(さぴさん作)の、無料公開されているサンプル音声(約5分)を利用しました。

項目 内容
想定している会議 IT企業の週次定例進捗会議
音声長 約5分
音声形式 wav
配布形態 noteで公開
利用目的 議事録作成の練習用

音声や解答案の権利は元記事の著者にあります。この記事では音声ファイルや解答案そのものは掲載しません。利用条件については配布元の記載を確認してください。

  1. 配布元の記事(参考リンク参照)からサンプル音声をダウンロード
  2. ファイル名を meeting.wav に変更
  3. minutes.ps1 と同じフォルダに配置

対応形式は WAV、MP3、OPUS/OGG、FLAC、WMA、AAC などです。

もしサンプル音声を利用しない場合は、次の文章をスマホやPCのレコーダーで録音して試すこともできます。

それでは定例会議を始めます。まず先月の売上報告です。売上は目標の95パーセントでした。次に新機能のリリース日ですが、12月10日で決定します。デザインの最終確認は田中さんが11月20日までに行ってください。テスト環境の準備は佐藤さんが来週金曜日までにお願いします。最後に、来月の出張の件は予算が未確定のため、次回に持ち越します。以上で終わります。

  • 保存形式は mp3 か wav にしてください(Windows のサウンドレコーダーなら、設定で保存形式を変更できます。m4a は非対応の可能性があります)
  • 対応形式は WAV、MP3、OPUS/OGG、FLAC、WMA、AAC などです
  • ファイル名は meeting.mp3 として、minutes.ps1 と同じフォルダに置きます

8-2. 環境変数をセットする

PowerShell 7 を起動し、作業フォルダに移動して、手順4・5でメモした値を入れます。

cd C:\minutes

$env:AZ_KEY        = "手順4でコピーしたキー1"
$env:AZ_REGION     = "japaneast"
$env:AZ_RESOURCE   = "minutes-test-yourname"
$env:AZ_DEPLOYMENT = "gpt-6-luna"

この設定は、今開いている PowerShell のウィンドウの中だけで有効です。ウィンドウを閉じると消えるので、キーがパソコンに残りません。次回はまた入力し直します。

8-3. スクリプトを実行する

pwsh -ExecutionPolicy Bypass -File .\minutes.ps1 -AudioPath .\meeting.mp3

(-ExecutionPolicy Bypass は、このコマンドの間だけスクリプトの実行制限を回避する指定です。設定を恒久的に変える必要はありません。)

次のように表示されれば成功です。

① 文字起こし中...
② 議事録を作成中...
完了: transcript.txt と minutes.md を保存しました

実行結果の例

以下は説明用のイメージです。実際の出力は、モデルやタイミングで毎回少し変わります。

transcript.txt(文字起こし)

それでは定例会議を始めます。まず先月の売上報告です。売上は目標の95%でした。次に新機能のリリース日ですが、12月10日で決定します。…

minutes.md(議事録)

## 概要
定例会議。先月の売上報告、新機能のリリース日決定、各担当へのタスク割り当てを行った。

## 議論の要点
- 先月の売上は目標の95%だった
- 新機能のリリース日について検討した
- 来月の出張は予算が未確定

## 決定事項
- 新機能のリリース日は12月10日とする

## ToDo
| 担当者 | 内容 | 期限 |
|---|---|---|
| 田中 | デザインの最終確認 | 11月20日 |
| 佐藤 | テスト環境の準備 | 来週金曜日 |

## 未決事項・次回への持ち越し
- 来月の出張の件(予算が未確定のため次回に持ち越し)

minutes.md は Markdown 形式なので、VS Code などで開くと見やすく表示できます。

よくあるエラーと対処

症状 原因と対処
Invoke-RestMethod : パラメーター 'Form' が見つかりません PowerShell 5.1 で実行している。PowerShell 7 で実行する(手順6)
401 / Access denied due to invalid subscription key キーの貼り間違い、または AZ_REGION がリソースのリージョンと違う(キーは作成したリージョンでのみ有効)
文字起こしで 404 や「リージョン非対応」系のエラー そのリージョンが Fast transcription 非対応の可能性。別リージョンでリソースを作り直す(手順3の注意を参照)
議事録作成で 404 / DeploymentNotFound AZ_DEPLOYMENT(デプロイ名)や AZ_RESOURCE(リソース名)が違う。Foundry ポータルの「デプロイ」一覧と、ポータルの「キーとエンドポイント」で再確認
429 短時間にリクエストしすぎ。少し待って再実行
日本語が文字化けする スクリプトを UTF-8 で保存し直す
文字起こし結果が空 音声が無音、または対応していない形式。mp3 / wav で録音し直す

エラー時は、赤字で表示される 文字起こしでエラー: / 議事録作成でエラー: の後ろのメッセージに原因が書かれています。そこを読むのがいちばんの近道です。

後片付けと使いすぎ防止

試し終わったら、課金対象のリソースを残さないようにしましょう。

  • 無料期間終了後も利用できるが、その場合は従量課金となる。ただし議事録用途なら月数百円〜数千円程度で運用できるケースが多い
  1. リソースグループごと削除:Azure ポータルで rg-minutes-test を開き、「リソース グループの削除」をクリック(確認のため名前の入力が求められます)
  2. 予算アラートを設定:ポータルの「Cost Management」→「予算」で、たとえば月 500 円で通知が届くように設定しておくと安心です
  3. キーの管理:使い終わったキーは「キーの再生成」で無効化しておくとより安全です

精度を上げるコツ・次のステップ

まずは最小構成が動いたら、次のような拡張ができます。

  • 用語の誤認識を減らす:Speech の「フレーズリスト」機能で、製品名・人名などの専門用語を登録する
  • 誰が話したかを区別する:Fast transcription の話者分離(diarization)を使う
  • 長時間の会議に対応する:文字起こしが長い場合は、分割して要約→統合する
  • モデルを上げる:議事録の出来が物足りなければ、デプロイ名を gpt-6.1-sol などに替える(費用は上がります)
  • 自動配信:Azure Functions や Power Automate で、SharePoint 保存・Teams 投稿・メール送信につなぐ
  • 本番運用:キーを使わない Microsoft Entra ID 認証(キーレス認証)に切り替える

AI が作った議事録は、必ず人が確認してから配布してください。 決定事項やToDoの担当者・期限を取り違えることがあります。「書かれていないことを足さない」というプロンプトで抑えられますが、ゼロにはなりません。

次回予告

今回は Azure の無料アカウントに付属する $200 クレジットを活用し、できるだけシンプルに議事録の自動生成を試しました。

一方で、

「無料期間が終わった後も、完全無料で議事録を作れないの?」

と思った方もいるかもしれません。

現在、Whisper 系の音声認識モデルとローカルで動作する LLM を組み合わせて、

  • 音声ファイル → 文字起こし
  • 議事録生成
  • ToDo 抽出

までを完全無料で実現できるか検証しています。

うまくまとまったら、構築手順や精度、必要なPCスペックを含めて別記事として公開予定です。

まとめ

  • 有料の Copilot を契約しなくても、Azure の無料アカウント($200 クレジット)の範囲で、音声から議事録を自動作成できる
  • 必要なのは Foundry リソース1つ(文字起こし + GPT)と、PowerShell スクリプト1本
  • 議事録整形のモデルは、安い gpt-6-luna から試すのがおすすめ
  • 試し終わったら リソースグループごと削除して、課金を残さない

この記事が、議事録作成の自動化を試す最初の一歩になれば幸いです。

参考リンク

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?