
Claude Code に Amazon Transcribe を利用した議事録作成を依頼した話
はじめに
1 時間程度の会議の録画が手元にあり、これを Claude Code に依頼して議事録を作成してもらうことにしました。関連するメモなどのドキュメントも手元にあったため、これらをあわせて Claude Code に渡し、「録画と参考資料の URL を読んで議事録を作成してほしい」と依頼しました。
結論から書くと、56 分の録画が約 200 円のコストで、実用的なサマリとして仕上がりました。本記事では、その過程と、途中で発生した課題について紹介します。
Amazon Transcribe とは
Amazon Transcribe とは、 AWS が提供する自動音声認識サービスです。音声や動画ファイルから文字起こしを行え、話者識別、カスタム語彙、リアルタイムストリーミング、リダクションといった機能を備えています。
検証環境
- macOS
- ffmpeg 8.1.1
- aws CLI 2.34.33
- Python 3.14.4
- boto3 1.43.8
- Amazon Transcribe Standard Batch (ja-JP、ap-northeast-1)
- Claude Code Opus 4.7
対象読者
- 自分が参加した 1 時間程度の会議を、毎回手作業で議事録に書き起こす負担を減らしたい方
- Amazon Transcribe を業務で実際に試してみたい方
- Claude Code に抽象的な依頼をどこまで任せられるか検討している方
- 議事録を半自動で生成する手段を探している方
参考
- Amazon Transcribe サービスページ
- Amazon Transcribe Pricing
- Custom vocabularies - Amazon Transcribe
- Supported character sets for custom vocabularies
- Speaker partitioning (diarization)
やってもらったこと
入力は次の 2 種類です。
- 録画 1 ファイル (
.mov、約 350 MB、56 分、参加者 6 名、日本語のみ) - 参考資料の URL 数件
これらをもとに Claude Code が次の 7 セクション構成の Markdown を出力しました。約 350 行です。
- 会議メタデータ (日時、参加者、ファシリ、議題)
- 議題ごとの議論サマリ
- 決定事項
- ToDo・アクションアイテム (担当付き)
- 話者ごとの発言サマリ
- タイムスタンプ付き発言インデックス
- 話者ごとの全発言ログ
構築の流れ
処理の流れを順を追って説明します。
録画から音声を抽出する
Amazon Transcribe の Batch Transcription は MP4 や WebM など一部の動画形式にも対応しています。しかし今回は入力ファイルが .mov だったため、形式互換性の確保、音質条件の明確化、転送量削減を目的として、Claude Code には ffmpeg で音声のみを FLAC に変換して送信するよう指示しました。
ffmpeg -y -i "$INPUT" -vn -ac 1 -ar 16000 -c:a flac "$OUTPUT"
350 MB の .mov から 87 MiB の FLAC が生成されました。
Amazon Transcribe にかける
Transcribe はジョブ単位で動作する非同期サービスです。次の順で進めます。
- カスタム語彙の登録 (固有名詞の認識精度向上)
- S3 に FLAC をアップロード
- ジョブを起動
- 完了をポーリング
- 結果 JSON をダウンロード
カスタム語彙は標準料金に含まれており、追加料金なしで利用できます。
Claude Code はジョブ起動を boto3 で次のように記述しました。
transcribe.start_transcription_job(
TranscriptionJobName=job_name,
LanguageCode="ja-JP",
MediaFormat="flac",
Media={"MediaFileUri": f"s3://{bucket}/{S3_INPUT_KEY}"},
Settings={
"ShowSpeakerLabels": True,
"MaxSpeakerLabels": 6,
"VocabularyName": VOCABULARY_NAME,
},
OutputBucketName=bucket,
OutputKey=S3_OUTPUT_KEY,
)
ShowSpeakerLabels=True と MaxSpeakerLabels=6 を指定すると、話者ごとに spk_0、spk_1 ... のラベルが付与されます。
ジョブの完了までは 30 秒間隔でポーリングしました。実測でジョブ起動から完了まで 3 分 4 秒、つまり 56 分の音声を 3 分で文字起こしできた計算です。
話者識別と参考資料の突き合わせ
ダウンロードした JSON には、各単語のタイムスタンプと話者ラベルが含まれています。Claude Code はこれを Python で発話単位に束ね、扱いやすい中間表現に整えました。
このあと、spk_0 などのラベルを実名にマッピングする必要があります。Transcribe は誰が誰かまでは判定しないため、ここは Claude Code による文脈判断が必要な工程です。手書きの議事録メモや、各話者の発言量と発言内容から実名を推定しました。最後に、整文した全発言と参考資料を入力として、7 セクションの Markdown を生成しました。
発生した課題
順調に進んだわけではなく、課題が 3 点発生しました。
IAM 権限が不足してエラーになった
最初に Transcribe のカスタム語彙を登録しようとした時点で、AccessDeniedException により実行が拒否されました。
User: arn:aws:iam::***:user/*** is not authorized to perform: transcribe:CreateVocabulary
普段使用している IAM ユーザーには Transcribe 系のアクションが一切付与されていませんでした。
権限を追加した上で再実行しました。必要だった主な権限は次の通りです。
transcribe:CreateVocabulary,transcribe:UpdateVocabulary,transcribe:GetVocabulary,transcribe:DeleteVocabularytranscribe:StartTranscriptionJob,transcribe:GetTranscriptionJob,transcribe:ListTranscriptionJobs,transcribe:DeleteTranscriptionJob- S3 系の
CreateBucket,PutObject,GetObject,ListBucket,DeleteObject,DeleteBucket
カスタム語彙で日本語のハイフンが拒否された
次に発生した課題が、カスタム語彙の作成です。「Object Storage」のような複数語のフレーズを登録する際、英語ではハイフンで Object-Storage と表記するのが Transcribe の流儀です。そのまま登録したところ、ja-JP では FAILED 状態になりました。
Validation error: Your custom vocabulary file contains one or more unsupported characters ("-") on line 4.
ja-JP のカスタム語彙は文字種が制限されており、ハイフンは許容されません。詳細は Amazon Transcribe の文字セットドキュメントに記載されています。
解決策として、「オブジェクトストレージ」「オブジェクトストア」のようにカタカナで登録し直しました。実際の会議でも、英語表記で発音される場面はほぼなく、カタカナで読まれることが多いため、結果としてこちらの方が認識精度も向上しました。
話者数が MaxSpeakerLabels より少なくなった
参加者の人数に合わせて MaxSpeakerLabels を指定しましたが、結果はそれより 1 名分少ない 5 名分のラベルしか得られませんでした。発言量を集計すると次の通りです。
| 話者ラベル | 発言数 | 累積発言時間 (秒) |
|---|---|---|
| spk_0 | 20 | 663.8 |
| spk_1 | 4 | 98.1 |
| spk_2 | 15 | 473.7 |
| spk_3 | 34 | 1,151.6 |
| spk_4 | 19 | 481.2 |
合計しても 47 分強で、1 時間の会議よりは短くなっています。最も発言量の多かった話者の長い発話に、他の話者の短い相槌や応答が併合されたと推察されます。
私自身の発言も短く、別の話者のセグメントに併合されたと考えられます。 MaxSpeakerLabels は話者数の上限を指定するパラメータであり、指定数のラベルが必ず生成されるとは限らないため、最終的なサマリ生成の段階で参考資料と突き合わせて補正することにしました。今回は会議参加中にメモを残しておいたため、後段の話者識別における補完情報として活用することができました。
結果と実費
ジョブの所要時間は 3 分 4 秒、前後の作業 (ffmpeg、S3 アップロード、ダウンロード、Markdown 生成、人間によるレビュー) を含めても 60 分以内で完了しました。
生成された Markdown は十分実用的なものであり、実際の会議の内容と照らし合わせてみても違和感のないレベルでした。
最終的にかかった金額は次の通りです。日本円にすると約 203 円です。
| 項目 | 金額 (USD) |
|---|---|
| Amazon Transcribe | 1.35080 |
| Amazon S3 | 0.00025 |
| カスタム語彙 | 0 |
| 合計 | 約 1.35 |
AWS Price List API から東京リージョンの単価を取得し、Transcribe ジョブの実測秒数を乗じて算出しました。ap-northeast-1 の Standard 文字起こしは USD 0.0004 / 秒 (Tier 1) で、3,377 秒の音声に対する計算結果が USD 1.35 という内訳です。
まとめ
Claude Code に録画と参考資料の URL を渡すだけで、約 200 円で実用的な Markdown 議事録を生成できました。事前に IAM ポリシー、 ja-JP の文字セット制約、データ取り扱いルールを確認すれば、業務用途にも応用しやすい構成です。議事録の作成工数を削減したいと考えている方の参考になれば幸いです。








