コンテンツにスキップ

OpenAI】TTSテキスト読み上げPythonスクリプト

【OpenAI】TTSテキスト音声変換Pythonスクリプト

Section titled “【OpenAI】TTSテキスト音声変換Pythonスクリプト”

本ページの概要

以下は、比較的網羅的で実用的な OpenAI テキスト音声変換(TTS)Python スクリプトのサンプルです。

  • 役割:入力されたテキストを即座に自然な音声へ合成し、ナレーション、音声案内、対話型製品の発話などに利用できます。
  • 特徴:低遅延、多言語対応、複数のプリセット音色(voices)を提供、さまざまな音声フォーマットに出力可能、ストリーミング再生にも対応。
  • 典型的な遅延:短い文なら通常、数百ミリ秒から約 1〜2 秒以内に再生可能な音声を取得できます。ネットワーク状況、モデル、フォーマットに依存します。
  • gpt-4o-mini-tts(推奨デフォルト):高速でコストパフォーマンスが高く、ほとんどのリアルタイム処理やバッチ処理に適しています。
  • tts-1:初期の汎用 TTS モデルで、品質と速度のバランスが取れています。
  • tts-1-hd:より高音質なバージョンで、音声の忠実度を重視し、遅延にはあまり敏感でない長文ナレーションに適しています。
    ヒント:最小の遅延とコストを重視するなら gpt-4o-mini-tts を優先してください。最高音質を求めるなら tts-1-hd を試す価値があります。旧来の tts-1 / tts-1-hd も引き続き利用できますが、新規プロジェクトでは通常 gpt-4o-mini-tts の採用が推奨されています。

三、API Key の取得と安全な利用方法(2つの接続方法)

Section titled “三、API Key の取得と安全な利用方法(2つの接続方法)”

この文面の目的は、ユーザーに「方式B」を選んでもらうことです。同時に、客観的で説得力のある印象も与えたいところです。そこで、タイトル、構成、言い回し、ユーザー心理の観点から最適化してみましょう。

OpenAI tts-1 API KEY を取得するには?この2つの方法だけ見れば十分です

  • 方案A:公式ルート 特徴: 手続きが煩雑で、ネットワーク環境に特別な要件があり、初心者は登録や利用の段階でつまずきやすいです。
    向いている人: 海外サービスの登録手順に慣れており、ネットワーク環境が良好な上級ユーザー。
  • 方案B:国内加速(開発者向けの簡単な呼び出し) 特徴: 専門の中継サービス(例:4All API.com)を利用することで、接続が安定し、速度も速く、開通手続きも簡単で、すぐに使い始められます。
    向いている人: 安定性と効率を重視し、すばやく利用を開始したいすべての開発者。多くの上級ユーザーにも選ばれています。

第一步:.env ファイルで API キーを安全に管理する

Section titled “第一步:.env ファイルで API キーを安全に管理する”

プロフェッショナルな開発では、キーやパスワードなどの機密情報をコードに直接書き込むことは厳禁です。ベストプラクティスは、環境変数で管理することです。dotenv ファイルはローカル開発で最も一般的な方法です。

  1. python-dotenv ライブラリをインストールする
Terminal window
pip install python-dotenv
  1. .env ファイルを作成する
    プロジェクトのルートディレクトリ(Python スクリプトと同じ階層)に、.env という名前のファイルを作成します。その中にキーを定義します。ここでは 4All API_API_KEY という分かりやすい変数名を使います。

.env ファイルの内容:

# これは環境変数ファイルで、機密情報を保存するためのものです
# 4All API_API_KEY、4All API.com または OpenAI 公式の KEY を入力してください
4All API_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

第二步:パラメータ化とモデル選択

Section titled “第二步:パラメータ化とモデル選択”

良いスクリプトは柔軟であるべきです。TTS API は通常、複数の音声モデルを選択できます。入力テキストと音声モデルを引数にしておくと、呼び出しが便利になります。

OpenAI の TTS モデルには、6 種類の高品質な音声があります。

  • alloy(バランスの取れた男性音声)
  • echo(温かみのある男性音声)
  • fable(落ち着いた男性音声)
  • onyx(低く深みのある男性音声)
  • nova(軽快な女性音声)
  • shimmer(プロフェッショナルな女性音声)

コード内で簡単に切り替えられます。

# 変換するテキスト
input_text = "你好,世界!提笔写下这句简单的问候,我带着好奇、敬意与希望。"
# 音声を選択する
selected_voice = "nova"
# リクエストデータを構築する
data = {
"model": "tts-1",
"input": input_text,
"voice": selected_voice
}

最終版:プロフェッショナル向け TTS API 呼び出しスクリプト

Section titled “最終版:プロフェッショナル向け TTS API 呼び出しスクリプト”

以上のベストプラクティスを組み合わせると、最終的な Python スクリプトは次のようになります。安全で堅牢、柔軟性があり、保守もしやすい構成です。

import os
import requests
from dotenv import load_dotenv
def generate_speech(text: str, voice: str = "alloy", output_filename: str = "speech.mp3"):
"""
テキスト音声変換 API を呼び出して音声ファイルを生成する。
Args:
text (str): 音声に変換するテキスト。
voice (str): 使用する音声モデル名。
output_filename (str): 出力する音声ファイル名。
"""
# --- 1. 設定を読み込み、検証する ---
load_dotenv()
api_key = os.environ.get("4All API_API_KEY")
if not api_key:
raise ValueError("API キーが見つかりません。.env ファイルで '4All API_API_KEY' を正しく設定してください")
url = "https://sg.4All API.com/v1/audio/speech"
# --- 2. リクエストデータを準備する ---
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
}
data = {
"model": "tts-1-hd",
"input": text,
"voice": voice
}
# --- 3. リクエストを送信し、レスポンスを処理する ---
try:
print(f"音声 '{voice}' を使用して音声を生成しています...")
# ストリーミングダウンロードのため stream=True を使用
response = requests.post(url, headers=headers, json=data, stream=True)
# HTTP レスポンスのステータスコードを確認し、2xx 以外なら例外を送出
response.raise_for_status()
print(f"リクエスト成功。音声をファイルに書き込んでいます: {output_filename}")
# バイナリチャンク単位でファイルに書き込む。大きなファイルに適している
with open(output_filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"音声ファイルの保存に成功しました!")
except requests.exceptions.HTTPError as e:
# HTTP エラー(401, 404, 500 など)を詳細に捕捉して表示する
print(f"リクエスト失敗、HTTP エラー: {e}")
print(f"レスポンス内容: {response.text}")
except requests.exceptions.RequestException as e:
# ネットワークまたは接続エラーを捕捉する
print(f"リクエスト失敗、ネットワークまたは接続エラー: {e}")
except Exception as e:
# その他の未知のエラーを捕捉する
print(f"不明なエラーが発生しました: {e}")
if __name__ == '__main__':
# --- 使用例 ---
long_text = "你好,世界!提笔写下这句简单的问候,我带着好奇、敬意与希望:无论经纬如何交错,我们共享同一片天空与明月。我愿倾听你每个角落的故事,珍视差异,守护脆弱的美好。"
# 軽快な女性音声 'nova' を使用
generate_speech(long_text, voice="nova", output_filename="speech_nova.mp3")
# 深みのある男性音声 'onyx' を使用
generate_speech("欢迎体验我们的文本转语音服务。", voice="onyx", output_filename="speech_onyx.mp3")

界智通(jieagi)まとめ手順:

    1. 例として openaitts というフォルダを作成する
    1. openaitts フォルダ内に .env ファイルを作成し、キーを保存する
    1. openaitts フォルダ内に Python スクリプトファイルを作成する。例えば openai-tts.py など。作成したファイルの中に Python スクリプトを配置する

手順が完了したら、スクリプトファイルを実行してください。

簡単な curl コマンドから始めて、requests ライブラリの導入、.env ファイルによるキー保護、API 呼び出しのパラメータ化、そして堅牢なエラーハンドリングの構築まで進めることで、最終的にプロフェッショナルレベルの Python スクリプトが完成します。

この流れは、「動くものを作る」段階から「使いやすいものを作る」段階への、ソフトウェアエンジニアリング的な発想を示しています。このスクリプトをベースに、さらにクラス化したり、コマンドラインツール(CLI)として構築したり、あるいは大規模な Web アプリケーションに組み込んだりして、プロジェクトに強力な音声機能を加えることができます。