0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenAI GPT-4oで高品質な音声を生成する!Python×TTSの超入門(初心者でもOK)

Posted at

こんにちは、せいやです。
今回は「OpenAIのgpt-4o-mini-ttsを使って、テキストから音声(MP3)を生成する方法」をステップバイステップで解説します。


✅ やりたいこと

  • Pythonを使って、テキストを自然な日本語音声に変換する
  • 出力形式は output.mp3
  • VS Code環境で構築・実行
  • エラー解決例(UnicodeEncodeError)も紹介!

🧰 前提条件

必要なもの 補足
Python(3.8以上) Python公式
OpenAIのAPIキー OpenAI APIキー取得
VS Code VS Code公式
openai ライブラリ 後ほどインストールします

🪜 ステップ1:プロジェクトフォルダを準備

  1. VS Code を起動
  2. 任意のフォルダ(例:TTSProject)を作って開く
  3. 新規ファイル tts_test.py を作成

🪜 ステップ2:パッケージをインストール

ターミナル(`Ctrl + Shift + ``)を開き、以下を実行:

pip install openai

🪜 ステップ3:コードを書いて実行

import openai

openai.api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

response = openai.audio.speech.create(
    model="tts-1",          # または "tts-1-hd"
    voice="nova",           # 他に "alloy", "echo", "onyx", "fable" などあり
    input="こんにちは、Mrポテトヘッド!"
)

with open("output.mp3", "wb") as f:
    f.write(response.content)

🎧 成功すると、カレントフォルダに output.mp3 が生成され、音声が再生できます!
「こんにちは、Mrポテトヘッド」と話してくれます!


🧱 ありがちなエラー:UnicodeEncodeError

UnicodeEncodeError: 'ascii' codec can't encode character ...

これは、APIキーの中に 日本語や全角スペースなどが混入していると起こるエラーです。

✅ 解決方法

  • APIキーは "sk-..." のように 英数字のみ にしてください。
  • コメントに日本語を使っていても、ファイルの文字コードが UTF-8 なら基本はOK。
  • VS Code右下で「UTF-8」であることを確認!

✅ 応用アイデア

  • 🎞 ChatGPT原稿 × TTS × ffmpeg で YouTube動画自動生成
  • 🧑‍🏫 解説動画や講座用ナレーションを自動化

📌 おまけ:使用可能な音声(voice)一覧

voice 特徴
nova 女性風で自然
alloy 低めの男性風
echo 少し速い語り口
onyx 落ち着いた男性風
fable 明るく軽快

🙌 まとめ

OpenAIのTTS機能は、音声品質が非常に高く、簡単に実装できるのが魅力です。
APIキーさえあれば、5分でナレーション音声が作れます。

GPT-4oをもっと活用して、業務効率やコンテンツ制作に役立てていきましょう!


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?