技術資料

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
音声のトーンや感情、ペースなどの指示を指定します。
voiceinstructions は、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機能を活用し、チャットボットにタスク管理機能を実装する方法を解説します。モデルとの再帰的な対話処理や、独自関数によるタスク登録・照会など、具体的なコード例を通して段階的に解説します。

OpenAI API PHP

Response APIのFile Search機能をPHPで実装:ファイルから情報を取得できるチャットボットの作り方

2025.03.18

OpenAIのResponse APIに新しく追加されたFile Search機能を使って、ファイルから情報を取得できるチャットボットをPHPで実装する方法を解説します。Vector Storeの作成から、実際のコード例まで、ステップバイステップで説明していきます。

OpenAI API PHP

Response APIのWeb Search機能をPHPで実装:最新情報を取得できるチャットボットの作り方

2025.03.17

Response APIの新機能"Web Search"を使って、インターネット上の最新情報を取得できるチャットボットを作ります。PHPによる実装方法や、APIレスポンスの処理方法など、実用的な内容をコード例とともに解説していきます

OpenAI API PHP

OpenAIの新APIを使ってみた:Response APIによるチャットボットをPHPで実装

2025.03.16

OpenAIが新たに発表したResponse APIを使用して、PHPでシンプルなチャットボットを実装してみました。Chat Completions APIとの違いや、実装時のポイントを、実際のコード例と共に解説します。特に会話履歴の管理方法の違いに注目して、両APIの特徴を比較しています。

OpenAI API PHP

阿部辰也へのお仕事の依頼・お問い合わせ

軽いご相談もお気軽にどうぞ!

個人情報の取り扱いについて *必須 プライバシーポリシーをご確認いただき、同意いただける場合は「同意する」にチェックをしてください。

keyboard_double_arrow_up
TOP