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日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。手順は「公式の手順を順に並べたもの」です。コードは、公式の例の写しは「公式の写し」、公式の部品名を並べてこの記事で組んだものは「この記事の例(動作は確かめていません)」と書き分けます。設定画面の名前や操作は、読んだ資料に無いものは書きません。画面や表記は変わるので、手元の画面と照らして読んでください。
先に結論
- Whisperは「文字にする」部品。 文字になった結果を、要約したり質問したりするのは別のAIです。その間のつなぎは、利用者のコードです(03の整理を、手順の形にしたのがこの記事です)。
- 公式が手順を書いているのは、OpenAIのAPIの中での組み合わせ。 文字起こし、テキストのAI(Responsesなど)、音声合成、ライブ用の通信。
- 特定の他社AIアプリとの連携を、公式が書いている例は、読んだ範囲では無い。 他社のAIに渡すなら、文字にした結果を渡す形になり、渡した先のルールに従います(この記事の見立て)。
- 渡るものを先に決める。 音声そのものがOpenAIに行くのか、文字だけが行くのかで、気をつける点が変わります(下の表)。
前提:用語をそろえる
- API:プログラムから、OpenAIのサービスを呼び出す入口。
- SDK:APIを使いやすくする、プログラムの部品集(
pip install openaiで入るPythonのもの、など)。 - WebSocket/WebRTC:音声を送り続けながら返事も受け取るための通信方法。サーバー側のプログラムはWebSocket、ブラウザの音声はWebRTC、と公式が案内しています。
- イベント:通信でやりとりされる、決まった名前のついたメッセージ(例:
input_audio_buffer.append)。 - chained(連鎖):音声→文字→AIの判断→音声、と段を分けてつなぐ方式。公式のVoice agentsの資料にあります。
- Agents SDK:公式の音声エージェントの例で使われている、エージェント用の部品集(Pythonのパッケージ名は
agents、音声はagents.voice)。 - VAD:音声がある区間を見つける仕組み。
- APIキー:本人確認用の秘密の文字列。05を参照。
連携の全体図:何がどこへ渡るか
| つなぎ方 | 公式の資料 | 音声の行き先 | 文字の行き先 |
|---|---|---|---|
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段に分けます。
- 06の場面1か場面6で、音声を文字にします。コマンドなら
--output_format txtで文字だけのファイル、Pythonならresult["text"]で全文が得られます。 - その文字を、使いたいAIに渡します。渡し方は2通りが考えられます。
- 人が貼る:できたテキストを開いて、使っているAIのチャットに貼る。設定は要りません。
- プログラムで渡す: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)
- この例の指示文(「次の文字起こしを3行で要約してください」)は、この記事の例です。
OpenAI()は、環境変数OPENAI_API_KEYを自動で読みます(クイックスタート)。キーはコードに書きません。client.responses.createと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 で作ります(クイックスタート)。
手順
- キーを作り、環境変数
OPENAI_API_KEYに入れる(05)。 - SDKを入れる(
pip install openaiまたはnpm install openai)。 - 06の場面8のコードで、
client.audio.transcriptions.create(...)を呼ぶ。公式のガイドが recommended と書くモデルはgpt-transcribe(確認日 2026-10-25)。 - 戻り値の
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を参照 |
文字起こしの結果を、テキストのモデルで直す
- ガイドの
whisper-1向けの「信頼性を上げる」の部分に、次の2つの方法が書かれています(要約)。 promptに、正しい綴りの語句を並べる。224トークンまで、と書かれています(whisper-1向けの説明)。- 文字起こしのあとに、テキストのモデルで後処理をして、綴りを直す。
- 後処理の例として、ガイドには、テキストのモデルにシステムプロンプトをつけて呼び、製品名の綴りを直す例が載っています(指示文とコードは、ガイドの原文で確認してください。この記事では組み直しません)。この記事の案としては、連携1のコードの
inputの指示文を、校正の依頼に変える形が考えられます(見立て。動作は確かめていません)。
外し方
- コードと環境変数から、キーを外す。
- サービス側でのキーの取り消しの手順は、今回読んだページには記載が見つかりませんでした。
- APIに送った入力の削除については、04を参照してください。
うまくいかないときの確認点
| 症状 | 確かめること |
|---|---|
| 認証の失敗 | OPENAI_API_KEY が設定されているか(クイックスタート)。キーの文字列に余計な空白が入っていないか(見立て) |
| ファイルが大きい | 25MB以下か。圧縮するか、区切りのよい所で分ける(ガイド) |
language を送ったら失敗した(gpt-transcribe) |
languages に切り替え、両方は送らない(ガイド) |
| 字幕・単語の時刻が取れない | whisper-1 の役割(ガイド)。停止予定に注意 |
連携3:ライブの文字起こし(Realtime transcription)
公式の資料:Realtime transcriptionガイド。マイクや通話など、話している間の音声に使う入口です。ファイルの文字起こしとは別です(File transcriptionガイドに「リアルタイムの音声は、ファイル処理ではなくRealtime transcriptionを使う」という趣旨があります)。
設定する場所:コード(WebSocketのクライアント)。ブラウザの音声にはWebRTC(公式の別のガイドを案内。この記事では読んでいません)。
手順(公式のガイドの順)
- 接続する。
wss://api.openai.com/v1/realtime?intent=transcriptionに、APIキーでつなぎます。URLにmodelを入れない、と書かれています(modelつきのURLは会話のセッションになり、文字起こしの更新を受け付けない、とあります)。認証のヘッダーの書き方は、ページに載っていませんでした(WebSocketのガイドを案内)。 - セッションを設定する。 接続が開いたら
session.updateを送ります。セッションの種類はtranscription、モデルはgpt-live-transcribe、音声形式はPCMの24kHz、turn_detectionは null。JSONの全文は、公式ガイドの原文で確認してください(この記事では組み直しません)。 - 音声を送る。
input_audio_buffer.appendで、base64にしたPCM16の音声を送ります。 - 区切りを確定する。 話し終わりの検出は、アプリ側(クライアント側のVAD)で行い、
input_audio_buffer.commitを送ります(公式の例)。
ws.send(JSON.stringify({ type: "input_audio_buffer.commit" }));
- 文字を受け取る。 次のイベントが届きます。
conversation.item.input_audio_transcription.delta:差分の文字(delta)conversation.item.input_audio_transcription.completed:確定した文字(transcript)- 確定の通知は、順番が前後することがあるため、
item_idで対応づけます。
if (event.type === "conversation.item.input_audio_transcription.delta") {
process.stdout.write(event.delta);
}
- 手がかりを足す(任意)。 もう一度
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 が入る |
- 遅延の調整として、
audio.input.transcription.delayにminimalからxhighまでの値があり、遅延が大きいほど文脈が増えて、通常は精度が上がる、と書かれています。 - 本番に向けた注意として、実際の音声、各言語、数字・メール・製品名で試すこと、空・途中で切れた・遅れた文字起こしを別に数えること、あとから訂正される途中の文字を画面でどう直すか決めること、が挙げられています。
渡るデータ
- 音声が、通信でOpenAIに流れ続けます。返ってくるのは文字のイベントです。
- 処理の保存・学習の扱いは、01と04を参照してください。ライブの入口に固有の保存の記述は、読んだ範囲では見つかりませんでした。
外し方
- 接続(WebSocket)を閉じる、またはアプリを止める。接続を閉じる手順そのものは、読んだページに書かれていません。
- キーは、連携2と同じ扱いです。
うまくいかないときの確認点
| 症状 | 確かめること |
|---|---|
| 設定の更新が受け付けられない | 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)
- ツールを
@function_toolで定義する。 Agentを、名前、指示、モデル、ツールつきで作る。SingleAgentVoiceWorkflowで包み、VoicePipelineに渡す(ガイドの断片:pipeline = VoicePipeline(workflow=SingleAgentVoiceWorkflow(agent)))。AudioInputを作り、pipeline.run(...)を呼ぶ。- 結果のストリームを読み、音声のイベント(
event.type == "voice_stream_event_audio")を処理する。
例のコード全体は、ガイドの原文で確認してください(この記事では組み直しません)。Pythonのパッケージ名は agents と agents.voice ですが、インストールのコマンドは、ガイドのページには載っていませんでした。文字起こし・音声合成の段で使うモデル名も、ガイドのページには書かれておらず、それぞれのガイド(speech-to-text、text-to-speech)を案内しています。
どんなときにchainedか(ガイドの記載)
- 文字起こし(トランスクリプト)を保存したい。
- エージェントが答える前に、方針の確認を挟みたい。
- 答えが承認されてから、音声にしたい。
渡るデータ
- 音声は、文字起こしの段でOpenAIに行きます。
- 文字は、次の「AIの判断」の段に渡ります。その段が使うサービスのルールに従います。ガイドは、GPT-Liveの説明で、裏側の判断に、OpenAIのモデルも、自分のエージェントも使える、と書いています。chainedの段ごとに、同じことが言えるかは、確認できていません。
- ガイドに、データの保存や保持についての注意書きは見つかりませんでした。権限と業務上の記録は、アプリが管理する、と書かれています。評価のために、音声、イベント、ツールの結果、アプリの状態を保存することが挙げられています。
権限・安全
- 方針の確認や、人による確認を、機微な作業に入れる、と案内され、ガイドは「Guardrails and human review」のページを案内しています(この記事では読んでいません)。
- ツール(
function_tool)には、エージェントが自分で呼べる機能を書きます。何を呼べるようにするかは、組み立てる人が決める部分です。
外し方
- コードのパイプラインを止める/消す。
- 各段のサービスのキーは、連携2と同じ扱い。
うまくいかないときの確認点
- ガイドの評価の考え方が使えます。合成音声の1回きりの依頼から始め、録音した人の声、割り込みのある複数回の会話へ段階を上げる(「crawl、walk、run」)。タスクの結果(例:予約が正しく保存されたか)まで確認する。待ち時間は、中央値と95パーセンタイルで測る。
連携5:返事を音声にする(text-to-speech)
公式の資料:Text to speechガイド。chainedの最後の段として使われます。
- 入口:
/v1/audio/speech。必要な入力は、モデル、入力の文字、声。 - モデルは
gpt-4o-mini-tts、tts-1、tts-1-hd。この3つは、2027年1月6日に停止予定で、後継は、Realtime APIのgpt-realtime-2.1-mini(/v1/audio/speechでは使えない)、とガイドにあります(Deprecationsにも、2026年10月1日の項目として記載)。 - 公式のText to speechガイドの呼び出しの形(
with_streaming_response.create(...)とstream_to_file)に合わせて、この記事で組んだ例です(動作は確かめていません。voiceとinputの値は、この記事で選んだものです。ガイドの例とは値が違います):
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")
- 出力形式:MP3(既定)、Opus、AAC、FLAC、WAV、PCM。
- 利用ポリシーでは、AIが作った声であることを、利用者に分かるように知らせる必要がある、とガイドに書かれています。
- 渡るデータ:送るのは文字。返るのは音声ファイル。
連携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」で共有されている、と案内している。中身は読んでいません。公式が運営するものではないので、データの行き先は、それぞれの提供元の資料で確認してください |
気をつけること
- この記事は、実際に使って確かめた記録ではありません。公式のページを要約の形で読んだ範囲です。コードが長い所(Voice agentsの全体の例、Realtimeの
session.updateのJSON)は、組み直さず「原文で確認」としています。 - 「AI同士をつなぐ」といっても、Whisperと他のAIアプリの間に公式の連携の仕組みはなく、つなぎは利用者のコードや手作業です。この記事の連携1の例は、公式の部品を並べたこの記事の案で、公式の手順ではありません。
- 文字起こしの結果を別のAIに渡すと、録音とは別の個人情報(話の内容)が、その会社に渡ります。会議や通話の録音は、参加者の同意と、会社や学校のルールを先に確かめてください(01を参照)。モデルカードは、本人の同意なく録られた録音の文字起こしを避けるよう警告しています。
- 停止の告知があります。
whisper-1、gpt-4o-transcribe、gpt-4o-mini-transcribe、gpt-4o-transcribe-diarize、/v1/audio/translationsは2027年2月26日、tts-1、tts-1-hd、gpt-4o-mini-ttsは2027年1月6日(Deprecations)。連携の組み立てに使う前に、最新の公式資料を読んでください。 - APIキーは、コードや共有のファイルに書かないでください。この記事の例は、
your_api_key_hereなどの置き換え用の文字と環境変数を使っています。 - サービス側のキーの取り消し、連携の外し方の画面は、読んだ範囲では記載が見つかりませんでした。
- 取得したページの中に、AIへの指示のような文は見つかりませんでした。
出典
- openai/whisper README(OpenAI、GitHub、確認日 2026-10-25)
- File transcription(OpenAI、確認日 2026-10-25)
- Transcription(OpenAI、確認日 2026-10-25)
- Realtime transcription(OpenAI、確認日 2026-10-25)
- Voice agents(OpenAI、確認日 2026-10-25)
- Audio and voice overview(OpenAI、確認日 2026-10-25)
- Text to speech(OpenAI、確認日 2026-10-25)
- Create transcription(API reference、OpenAI、確認日 2026-10-25)
- Audio API FAQ(OpenAI Help Center、確認日 2026-10-25)
- Developer quickstart(OpenAI、確認日 2026-10-25)
- Deprecations(OpenAI、確認日 2026-10-25)
- Whisper Model Card(OpenAI、GitHub、確認日 2026-10-25)