PHPによる OpenAI TTS API 実装ガイド ― GPT-4o mini TTSでテキストを音声に変換
作成日:2025.04.05
本記事では、最新の OpenAI TTS モデル「GPT-4o mini TTS」を利用し、PHPでテキストを自然な音声に変換する実装手法を詳しく解説します。curl を用いたリクエスト送信、JSON形式のパラメータ設定、ファイル出力処理まで、実際のサンプルコードを交えながら、各工程のポイントとパラメータの意味について解説。
先日公開されたOpanAI の TTS (Text To Speech) 用のモデル GPT-4o mini TTS
の API を、 PHP で使用してみます。
TTS (Text To Speech) モデルとは
テキストデータを自然な人間の音声に変換する技術です。この技術は、視覚障がいを持つ人々の支援、カスタマーサービス、自動音声アシスタント、オーディオブック作成など、幅広い分野で活用されています。
PHP での実装
PHP での実装は、以下のようになります。
<?php
// OpenAI APIキー
define('OPENAI_API_KEY', 'sk-proj--abcdefghijklmn');
// 音声変換するメッセージ
$message = "ある日の暮方の事である。一人の下人が、羅生門の下で雨やみを待っていた。";
// リクエストデータの作成
$data = array(
'input' => $message,
'model' => 'gpt-4o-mini-tts',
'voice' => 'coral',
'instructions' => "Voice Affect: Calm, composed, and reassuring; project quiet authority and confidence.\n\nTone: Sincere, empathetic, and gently authoritative—express genuine apology while conveying competence.\n\nPacing: Steady and moderate; unhurried enough to communicate care, yet efficient enough to demonstrate professionalism.\n\nEmotion: Genuine empathy and understanding; speak with warmth, especially during apologies (\"I'm very sorry for any disruption...\").\n\nPronunciation: Clear and precise, emphasizing key reassurances (\"smoothly,\" \"quickly,\" \"promptly\") to reinforce confidence.\n\nPauses: Brief pauses after offering assistance or requesting details, highlighting willingness to listen and support.",
'response_format' => 'mp3',
'speed' => 1.2,
);
// リクエストデータをJSON形式に変換
$json_data = json_encode($data);
// curl でリクエスト送信
$url = 'https://api.openai.com/v1/audio/speech';
$headers = array(
'Content-Type: application/json',
"Authorization: Bearer ".OPENAI_API_KEY
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
$api_response = curl_exec($ch);
if($api_response === false){
echo 'Curl error: ' . curl_error($ch);
exit;
}
curl_close($ch);
// レスポンスをファイルに保存
$file_path = 'output.mp3';
file_put_contents($file_path, $api_response);
print "音声ファイルが生成されました: <a href='$file_path'>output.mp3</a><br>";
?>
API リクエストのパラメータ
上記のコードでは、以下のパラメータを指定しています。
- input
- 音声変換するテキストデータを指定します。
- model
- 使用するモデルを指定します。ここでは、
gpt-4o-mini-tts
を指定しています。 - voice
- 音声のスタイルを指定します。ここでは、
coral
を指定しています。 - instructions
- 音声のトーンや感情、ペースなどの指示を指定します。
voice
とinstructions
は、OpenAI の TTSデモサイト OpenAI.fm で色々試してみて調整するのが良いかなと思います。
instructions
の値は、 デモサイトのVibe
の項で調整できます。 - response_format
- レスポンスのファイル形式を指定します。ここでは、
mp3
を指定しています。 - speed
- 音声のスピードを指定します。デフォルト値は1.0。1.2 は少し早めのスピードになります。
その他、API に渡すパラメータの詳細は、API Reference - OpenAI API を参照。
API からのレスポンス
API からのレスポンスは、音声データが含まれたバイナリデータです。上記のコードでは、レスポンスを output.mp3
というファイル名で保存しています。

奈良市を拠点に、25年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
PHPで実装する Response API と Function Calling を活用したチャットボットの開発ガイド
2025.03.24
PHPでOpenAIのResponse APIとFunction Calling機能を活用し、チャットボットにタスク管理機能を実装する方法を解説します。モデルとの再帰的な対話処理や、独自関数によるタスク登録・照会など、具体的なコード例を通して段階的に解説します。
Response APIのFile Search機能をPHPで実装:ファイルから情報を取得できるチャットボットの作り方
2025.03.18
OpenAIのResponse APIに新しく追加されたFile Search機能を使って、ファイルから情報を取得できるチャットボットをPHPで実装する方法を解説します。Vector Storeの作成から、実際のコード例まで、ステップバイステップで説明していきます。
Response APIのWeb Search機能をPHPで実装:最新情報を取得できるチャットボットの作り方
2025.03.17
Response APIの新機能"Web Search"を使って、インターネット上の最新情報を取得できるチャットボットを作ります。PHPによる実装方法や、APIレスポンスの処理方法など、実用的な内容をコード例とともに解説していきます
OpenAIの新APIを使ってみた:Response APIによるチャットボットをPHPで実装
2025.03.16
OpenAIが新たに発表したResponse APIを使用して、PHPでシンプルなチャットボットを実装してみました。Chat Completions APIとの違いや、実装時のポイントを、実際のコード例と共に解説します。特に会話履歴の管理方法の違いに注目して、両APIの特徴を比較しています。