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?

Zoom AI Services「Scribe API」で音声文字起こしをAPI化する

0
Last updated at Posted at 2026-03-16

unnamed.jpg
画像はイメージです

はじめに

2026年3月、ZoomはEnterprise Connectにて Zoom AI Services を発表しました。Zoomが自社プロダクトで培ったAI技術(文字起こし、翻訳、要約、推論など)を、外部の開発者がAPIとして利用できるようにする新しい開発者向けプラットフォームです。

その第一弾としてリリースされたのが、音声認識(ASR)ベースの文字起こしAPI Scribe API です。

Zoom MeetingsやZoom Phoneで使われている文字起こしエンジンをそのまま外部利用できるのが最大の特徴で、自社が保有する音声データに対してZoomのASRエンジンを適用できます。

本記事では、Scribe APIの中でも特に Fast API(同期モード) にフォーカスして、仕様・利用手順・ユースケースを整理します。

Scribe APIの位置づけ

Zoom AI Servicesは、Virtual AgentやContact Centerなどの既存プロダクトを補完する 開発者向けAIプラットフォーム です。Scribe APIはその最初のサービスであり、Vision APIなども順次追加される予定です。

重要なのは、Scribe APIのASRエンジンがZoom MeetingsやZoom Phoneの文字起こしと 同じ技術基盤 を使っているという点です。つまり、Zoomの会議で体験する文字起こし精度を、自社の音声データに対しても適用できるということです。

2つの処理モード:Fast vs Batch

Scribe APIには2つの処理モードがあります。

Fast(同期) Batch(非同期)
処理方式 1ファイルずつ同期処理 大量ファイルを非同期で一括処理
レスポンス 文字起こし完了後に即返却 ジョブIDを返却 → ポーリングで結果取得
向いている用途 短い録音、リアルタイム性が求められるケース アーカイブの一括処理、大量の通話録音
入力 音声ファイルをリクエストボディで送信 クラウドストレージ(S3等)から読み取り
チャンネル モノラル / ステレオ対応 モノラル / ステレオ対応

本記事では、手軽に試せて即座に結果が返ってくる Fast API を中心に解説します。

Fast APIを使ってみる

認証トークンの取得

Scribe APIはZoomの標準的なOAuth 2.0認証を使用します。このAI ServiceはZoomのBuild platform上で展開されるため、通常のZoom Apps MarketplaceではなくZoom Build Platformのアカウントにてセットアップします。

VIdeo SDKなどを含む、Zoom Build Platformのアカウント作成方法はこちらから参照ください。

認証トークンは、API KeyとSecretを用いたJWTトークンをAuthヘッダに含む形でリクエストして取得します。

JWTの生成はクライアント側で行います。iss(issuer)にAPI Keyを、exp(expiration)に有効期限を設定し、API Secretで署名します。

const KJUR = require('jsrsasign')
// https://www.npmjs.com/package/jsrsasign

const iat = Math.round(new Date().getTime() / 1000) - 30
const exp = iat + 60 * 60 * 2
const oHeader = { alg: 'HS256', typ: 'JWT' }

const oPayload = {
  iss: process.env.ZOOM_API_KEY,
  iat: iat,
  exp: exp
}

const sHeader = JSON.stringify(oHeader)
const sPayload = JSON.stringify(oPayload)
const API_JWT = KJUR.jws.JWS.sign('HS256', sHeader, sPayload, process.env.ZOOM_API_SECRET)

console.log(API_JWT)

生成したJWTをBearerトークンとして、以降のAPIコールで使用します。

Fast APIへのリクエスト

取得したトークンを使って、音声ファイルを送信します。

const axios = require('axios').default;

const options = {
  method: 'POST',
  url: 'https://api.zoom.us/v2/aiservices/scribe/transcribe',
  headers: {'Content-Type': 'application/json', Authorization: 'Bearer YOUR_SECRET_TOKEN'},
  data: {
    file: '',
    config: {
      language: 'en-US',
      timestamps: true,
      word_time_offsets: false,
      channel_separation: false,
      diarization: false,
      profanity_filter: false,
      output_format: 'json'
    }
  }
};

try {
  const { data } = await axios.request(options);
  console.log(data);
} catch (error) {
  console.error(error);
}

主なリクエストパラメータ:

  • file — 文字起こし対象の音声/動画ファイル
  • language — 言語コード(ja, en など)
  • punctuation — 句読点の自動挿入
  • speaker_separation — 話者分離(複数人の会話で有効)
  • profanity_filter — 不適切表現のフィルタリング

レスポンスの構造

Fast APIは同期的にレスポンスを返します。文字起こしが完了するまで待機し、結果がそのままレスポンスボディに含まれます。

{
  "request_id": "req_123",
  "duration_sec": 27.4,
  "result": {
    "text_display": "Hello and welcome to the meeting...",
    "text_lexical": "hello and welcome to the meeting",
    "segments": [
      {
        "start": 0,
        "end": 3.24,
        "text": "Hello and welcome...",
        "channel": 0,
        "speaker": "speaker_1",
        "words": [
          {
            "word": "Hello",
            "start": 0,
            "end": 0.2
          }
        ]
      }
    ]
  },
  "model": "zoom-asr-en-v1"
}

各セグメントにタイムスタンプ、話者ラベル、テキストが含まれるため、後段のLLM処理や分析パイプラインにそのまま流し込みやすい構造になっています。

Batch APIの概要

大量のファイルを一括処理したい場合は Batch API を使います。Fast APIと異なり、非同期で動作します。

Batch APIの主な特徴:

  • 入力:S3などのクラウドストレージから音声ファイルを読み取り
  • 出力:指定したS3バケットに文字起こし結果を書き込み
  • ジョブ管理:ジョブIDによるステータス確認(SUCCEEDED / FAILED など)
  • 大量処理向き:コールセンターの通話録音アーカイブ、ポッドキャストの一括文字起こしなど

ブログ記事のスクリーンショットでは、ジョブ一覧のUIで各ジョブのステータスやファイル操作が確認できることが紹介されています。AWSのクレデンシャル設定やS3のURI指定なども管理画面から行えるようです。

クイックスタートアプリで試す

Zoomは公式のクイックスタートプロジェクトをGitHub上で公開しています。手っ取り早くScribe APIを体験したい場合は、こちらを使うのがおすすめです。

セットアップの流れ:

  1. Zoom Developer Build Platform でBuild Platform のアカウントを作成
  2. Zoom Marketplaceで API KeyAPI Secret を取得
  3. GitHubからクイックスタートプロジェクトをクローン
  4. .env ファイルに ZOOM_API_KEYZOOM_API_SECRETを設定
  5. 依存パッケージをインストールして実行
# Example setup flow
git clone https://github.com/zoom/scribe-quickstart.git
cd scribe-api-quickstart
cp .env.example .env
# Edit .env with your credentials
npm install
npm start
# This starts local server at port 4000 (by default)
cd ./playground
npm install && npm run dev
# This launches Web UI for the transcribe your audio file

このリポジトリのサンプルには、 Playground が含まれていて、ローカルサーバ(4000)経由でWebUI(5173)からリクエストを投げ、パースされた結果を表示することができます。

image.png

クイックスタートアプリのリポジトリURLやセットアップ手順は、最新の Scribe APIドキュメント を確認してください。

ユースケース

🎧 コールセンターのQA・エージェントコーチング(Batch API)

通話録音をS3に蓄積し、Batch APIで一括文字起こし → LLMで品質スコアリングやキーワード抽出を行うパイプラインを構築できます。

顧客対応の品質チェック、解約リスクの早期検出、エージェントへのフィードバック生成などに活用できます。

🎤 リアルタイム字幕・ライブキャプション(Fast API)

Fast APIの同期的な低レイテンシ応答を活かして、短い音声チャンクを逐次送信し、リアルタイムに近い字幕表示を実現するアプローチです。

たとえば、社内イベントのライブ配信や、Zoom以外のプラットフォームでのウェビナーに字幕を付けたいケースで、Fast APIを短い録音に対して繰り返し呼び出すことで、リアルタイムに近い字幕を実現できます。

ミーティングやVideo SDKセッションでのリアルタイム文字起こしが必要な場合は、Zoom Realtime Media Streams(RTMS) も検討してください。RTMSはWebSocketベースでミリ秒単位の低レイテンシでトランスクリプトを配信します。

📝 会議録・議事録の自動生成(Fast API / Batch API)

ミーティング終了後の録音ファイルをFast APIに投げて文字起こしし、その結果をLLMに渡して要約・アクションアイテム抽出を行うワークフローです。

🎙️ ポッドキャスト・メディアの一括アーカイブ処理(Batch API)

過去のポッドキャストエピソードや動画コンテンツをまとめて文字起こしし、検索可能なテキストアーカイブを構築できます。

次のステップ

Scribe APIを試してみたい方は、以下のリソースを活用してください。

Zoom Developer Forum でDeveloper Advocateやコミュニティの開発者とディスカッションできます。優先サポートが必要な場合は、Premier Developer Supportプラン をご活用ください。

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?