3行でいうと

  • 公式の資料で確認できたつなぎ方は、①APIのファイル文字起こし、②ライブの文字起こし(Realtime transcription)、③chainedの音声エージェント(文字起こし→AIの判断→音声合成)、④音声合成(text-to-speech)です。
  • READMEやAPI資料に、ChatGPTやClaudeなど特定のAIアプリへの自動連携や、MCPサーバーの記述は、読んだ範囲では見つかりませんでした。「文字にした結果を別のAIに渡す」部分は、利用者が組み立てます。
  • 渡るデータは、ファイル文字起こしとライブでは音声がOpenAIへ、chainedでは文字が次の段のサービスへ、です。自分のPCで動かす whisper コマンドとPythonライブラリは、READMEに送信の記述は見つかりませんでした。
  • 外し方(連携の取り消し)は、読んだ範囲では、キーを入れた環境変数やコードを消す形の説明が中心で、サービス側のキー取り消しの画面は確認できていません。
  • 連携先のモデル名や入口には、停止の告知があります。whisper-1、/v1/audio/translations などは2027年2月26日、音声合成の tts-1、tts-1-hd、gpt-4o-mini-tts は2027年1月6日です(Deprecations、確認日 2026-10-25)。

この記事は、公式の資料を2026年10月25日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。手順は「公式の手順を順に並べたもの」です。コードは、公式の例の写しは「公式の写し」、公式の部品名を並べてこの記事で組んだものは「この記事の例(動作は確かめていません)」と書き分けます。設定画面の名前や操作は、読んだ資料に無いものは書きません。画面や表記は変わるので、手元の画面と照らして読んでください。

先に結論

前提:用語をそろえる

連携の全体図:何がどこへ渡るか

つなぎ方 公式の資料 音声の行き先 文字の行き先
1. whisper コマンド/Pythonライブラリ → 別のAI READMEに、別のAIへ渡す記述は見つからなかった 自分のPC(READMEに送信の記述なし) 自分で渡した先(この記事の案)
2. APIのファイル文字起こし → テキストのAI File transcriptionガイド OpenAIのサーバー 返ってきた先のあなたのプログラム。その先は自分次第
3. ライブの文字起こし Realtime transcription OpenAIのサーバー(通信しながら) あなたのアプリ
4. chainedの音声エージェント Voice agents 文字起こしの段でOpenAI 次の段(AIの判断)を担うサービス
5. 音声合成 Text to speech (音声ではなく文字を送る) 返ってくる音声ファイル

APIに送ったデータの学習・保存・削除の決まりは、01と04に整理しています。この記事では繰り返しません。

連携1:自分のPCで文字にして、別のAIへ渡す(この記事の案)

公式の記述:READMEは、whisper コマンドとPythonライブラリの使い方を書いています。別のAIアプリに渡す手順や、自動連携は、読んだ範囲では見つかりませんでした。

この記事の案(公式の手順ではありません):次の2段に分けます。

  1. 06の場面1か場面6で、音声を文字にします。コマンドなら --output_format txt で文字だけのファイル、Pythonなら result["text"] で全文が得られます。
  2. その文字を、使いたいAIに渡します。渡し方は2通りが考えられます。
  3. 人が貼る:できたテキストを開いて、使っているAIのチャットに貼る。設定は要りません。
  4. プログラムで渡す:OpenAI APIのテキストのモデルに、client.responses.create(...) で渡す。公式のクイックスタートの呼び出しの形に合わせた、次の例です。

この記事の例(動作は確かめていません。<テキストモデル名> は置き換え用の文字で、使えるモデル名は公式のモデル一覧で確認します。result["text"] は06の場面6の戻り値です):

import whisper
from openai import OpenAI

model = whisper.load_model("turbo")
result = model.transcribe("audio.mp3")

client = OpenAI()
response = client.responses.create(
    model="<テキストモデル名>",
    input="次の文字起こしを3行で要約してください。\n\n" + result["text"],
)
print(response.output_text)

渡るデータ:文字起こしは自分のPCで行われます(READMEに送信の記述なし)。ただし、手順2で文字を渡した先(OpenAIのAPI、またはあなたが貼ったAIのサービス)には、文字起こしの全文が渡ります。音声そのものは渡りませんが、会議の内容など、文字になった中身は渡ります。

他社のAIに渡す場合:その会社のAPIや画面の使い方、データの扱いは、その会社の公式資料に従います。この記事では読んでいません。

外し方:コードを消す。OPENAI_API_KEY を使うなら、環境変数から外す(05に設定の書き方があります。外す手順は、公式では確認できていません)。

うまくいかないときの確認点 - 長い文字起こしを丸ごと渡して、受け付けられない/途中で切れる、という場合:テキストのモデルごとの入力の上限は、この記事では読んでいません。公式のモデルのページで確認してください。 - 音声を文字にする段で失敗する場合:05と06のつまずき表を見てください。

連携2:APIのファイル文字起こしを、アプリに組み込む

公式の資料:File transcriptionガイド、Create transcriptionのAPIリファレンス。

設定する場所:コード(Python、JavaScript、curl)。設定画面はありません。キーはダッシュボードの https://platform.openai.com/api-keys で作ります(クイックスタート)。

手順

  1. キーを作り、環境変数 OPENAI_API_KEY に入れる(05)。
  2. SDKを入れる(pip install openai または npm install openai)。
  3. 06の場面8のコードで、client.audio.transcriptions.create(...) を呼ぶ。公式のガイドが recommended と書くモデルは gpt-transcribe(確認日 2026-10-25)。
  4. 戻り値の text を、次の処理(保存、表示、別のAIへ)に渡す。

渡るデータと入口の整理

項目 内容
送るもの 音声ファイルそのもの(25MB以下、ガイド)。リンクのURLは渡せない(ヘルプ)
送り先 https://api.openai.com/v1/audio/transcriptions
認証 Authorization: Bearer に、APIキー(ガイドのcurl例)
返るもの text、languages、usage(json の場合。リファレンス)
追加で送れる手がかり prompt、keywords、languages(gpt-transcribe。ガイド)
学習・保存 01と04を参照

文字起こしの結果を、テキストのモデルで直す

外し方

うまくいかないときの確認点

症状 確かめること
認証の失敗 OPENAI_API_KEY が設定されているか(クイックスタート)。キーの文字列に余計な空白が入っていないか(見立て)
ファイルが大きい 25MB以下か。圧縮するか、区切りのよい所で分ける(ガイド)
language を送ったら失敗した(gpt-transcribe) languages に切り替え、両方は送らない(ガイド)
字幕・単語の時刻が取れない whisper-1 の役割(ガイド)。停止予定に注意

連携3:ライブの文字起こし(Realtime transcription)

公式の資料:Realtime transcriptionガイド。マイクや通話など、話している間の音声に使う入口です。ファイルの文字起こしとは別です(File transcriptionガイドに「リアルタイムの音声は、ファイル処理ではなくRealtime transcriptionを使う」という趣旨があります)。

設定する場所:コード(WebSocketのクライアント)。ブラウザの音声にはWebRTC(公式の別のガイドを案内。この記事では読んでいません)。

手順(公式のガイドの順)

  1. 接続する。 wss://api.openai.com/v1/realtime?intent=transcription に、APIキーでつなぎます。URLに model を入れない、と書かれています(model つきのURLは会話のセッションになり、文字起こしの更新を受け付けない、とあります)。認証のヘッダーの書き方は、ページに載っていませんでした(WebSocketのガイドを案内)。
  2. セッションを設定する。 接続が開いたら session.update を送ります。セッションの種類は transcription、モデルは gpt-live-transcribe、音声形式はPCMの24kHz、turn_detection は null。JSONの全文は、公式ガイドの原文で確認してください(この記事では組み直しません)。
  3. 音声を送る。 input_audio_buffer.append で、base64にしたPCM16の音声を送ります。
  4. 区切りを確定する。 話し終わりの検出は、アプリ側(クライアント側のVAD)で行い、input_audio_buffer.commit を送ります(公式の例)。
ws.send(JSON.stringify({ type: "input_audio_buffer.commit" }));
  1. 文字を受け取る。 次のイベントが届きます。
  2. conversation.item.input_audio_transcription.delta:差分の文字(delta)
  3. conversation.item.input_audio_transcription.completed:確定した文字(transcript)
  4. 確定の通知は、順番が前後することがあるため、item_id で対応づけます。
if (event.type === "conversation.item.input_audio_transcription.delta") {
  process.stdout.write(event.delta);
}
  1. 手がかりを足す(任意)。 もう一度 session.update で、prompt、keywords、languages、delay を足せます。languages は複数形で、単数の language と同時には送りません。keywords は1行で、<、>、改行を含めない、違反すると更新が拒否されます。

モデルの使い分け(ガイドの記載)

モデル ガイドの説明
gpt-live-transcribe ストリーミングの文字起こしで recommended の開始点、と書かれています。turn_detection は省略か null。server_vad、semantic_vad には対応しません。単語の時刻、話者ラベル、信頼度、検出言語は返しません
gpt-transcribe 確定した区間のあとで文字起こしを始めたい場合、または検出言語がほしい場合。WebSocketが必要。完了イベントに languages が入る

渡るデータ

外し方

うまくいかないときの確認点

症状 確かめること
設定の更新が受け付けられない URLに model を入れていないか。languages と language を同時に送っていないか。keywords に禁止文字や改行がないか(ガイド)
文字が確定しない 区切り(input_audio_buffer.commit)を、アプリ側で送っているか。gpt-live-transcribe はサーバー側の自動の区切りに対応しません(ガイド)
単語の時刻・話者がほしい gpt-live-transcribe は返しません。ファイルの文字起こしのモデルか、アプリ側の別の方法が要る、とガイドにあります

連携4:chainedの音声エージェント(文字起こし→AIの判断→音声)

公式の資料:Voice agentsガイド。音声エージェントの作り方として、3つが載っています。

方式 ガイドの説明(要約)
GPT-Live 全二重の会話。バックエンドの判断を、自分のエージェント(クライアント委任)か、OpenAIのResponsesのモデル(Responses委任)に任せる
Realtime API 1つのセッションで、音声の解釈、判断、音声での返答を行う
chained(連鎖) 自分のアプリが、文字起こし、エージェント、音声合成を別々に動かす。各段を確認・取り替えできる

この記事の関心は、文字起こしが最初の段になるchainedです。

chainedの手順(ガイドの流れ。Python)

  1. ツールを @function_tool で定義する。
  2. Agent を、名前、指示、モデル、ツールつきで作る。
  3. SingleAgentVoiceWorkflow で包み、VoicePipeline に渡す(ガイドの断片:pipeline = VoicePipeline(workflow=SingleAgentVoiceWorkflow(agent)))。
  4. AudioInput を作り、pipeline.run(...) を呼ぶ。
  5. 結果のストリームを読み、音声のイベント(event.type == "voice_stream_event_audio")を処理する。

例のコード全体は、ガイドの原文で確認してください(この記事では組み直しません)。Pythonのパッケージ名は agents と agents.voice ですが、インストールのコマンドは、ガイドのページには載っていませんでした。文字起こし・音声合成の段で使うモデル名も、ガイドのページには書かれておらず、それぞれのガイド(speech-to-text、text-to-speech)を案内しています。

どんなときにchainedか(ガイドの記載)

渡るデータ

権限・安全

外し方

うまくいかないときの確認点

連携5:返事を音声にする(text-to-speech)

公式の資料:Text to speechガイド。chainedの最後の段として使われます。

from openai import OpenAI

client = OpenAI()
with client.audio.speech.with_streaming_response.create(
    model="gpt-4o-mini-tts",
    voice="cedar",
    input="Hello from the speech endpoint.",
) as response:
    response.stream_to_file("speech.mp3")

連携6:そのほか、公式の資料に名前だけあるもの(この記事では読んでいない)

名前 公式の資料での位置づけ この記事での扱い
Realtime translation(/v1/realtime/translations) /v1/audio/translations の後継として案内されている 手順は読んでいません。原文で確認してください
Audio in Chat Completions 音声の概要の表にある、既存のチャットアプリ向けの入口 読んでいません
GPT-Live 新しい会話の音声アプリ向け、と音声の概要が書く Whisperの文字起こしとは別の仕組みで、読んでいません
gpt-realtime-whisper 既存の連携では使えるが、新しい連携の開始点としては示されていない(Transcriptionガイド) 読んでいません

公式の資料で確認できなかったもの

項目 状況
MCPサーバー(AIアプリからWhisperを呼ぶ) READMEとAPI資料では、読んだ範囲では見つからなかった
ChatGPTやClaudeなどのAIアプリの設定画面からWhisperを選ぶ仕組み 見つからなかった
whisper コマンドの出力を、特定のAIに自動で渡す機能 READMEには、見つからなかった
第三者製の拡張・移植版 READMEは、GitHubのDiscussionsの「Show and tell」で共有されている、と案内している。中身は読んでいません。公式が運営するものではないので、データの行き先は、それぞれの提供元の資料で確認してください

気をつけること

出典