Laravel12 OpenAIのAPIをコールしてテキスト->音声変換する方法

Laravel12 × OpenAI API|テキストから音声変換(Text-to-Speech)

OpenAIの音声合成モデルであるgpt-4o-mini-ttsを使ってテキストを音声(mp3)に変換する方法です。

前準備

 .envファイルにOpenAI APIキーを設定しておきましょう。

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxx

サンプルコード

  1. 音声に変換したいテキストを$textにセットする。
  2. APIをコールする。
  3. /storage/app/publicフォルダに mp3 形式の音声ファイルが作成される。
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;

       ・
       ・
       ・

        $apiKey = env('OPENAI_API_KEY');

        // 音声に変換したいテキスト
        $text = 'This is a pen';

        $this->info("音声生成中: \"{$text}\"");

        $response = Http::withToken($apiKey)
            ->post('https://api.openai.com/v1/audio/speech', [
                'model' => 'gpt-4o-mini-tts',
                'input' => $text,
                'voice' => 'alloy',    // 音声選択
            ]);

        if ($response->successful()) {
            $fileName = 'speech_' . time() . '.mp3';
            Storage::disk('public')->put($fileName, $response->body());
            
            $this->info("音声ファイルが正常に作成されました!");

            // 変換された音声ファイルは、/storage/app/publicフォルダに保存
            $this->info("保存先: " . storage_path('app/public/' . $fileName));
        } else {
            $this->error("エラーが発生しました: " . $response->status());
            $this->error($response->json('error.message') ?? '不明なエラー');
        }

いろんな声が選択可能

  • alloy
  • ash
  • ballad
  • coral
  • echo
  • fable
  • nova
  • onyx
  • sage
  • shimmer
  • verse
  • marin
  • cedar

感想

gpt-4o-mini-ttsを使えば、驚くほど簡単に高品質な音声をシステムに組み込むことができます。
特に機械的な読み上げにありがちな違和感が少なく、非常に流暢で自然な話し方を実現できる点は大きな魅力です。
読み上げ機能はもちろん、AIチャットボットの音声応答など、実用性の高い用途に幅広く活用できるモデルだと感じました。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です