OpenAI】TTSテキスト読み上げPythonスクリプト
【OpenAI】TTSテキスト音声変換Pythonスクリプト
Section titled “【OpenAI】TTSテキスト音声変換Pythonスクリプト”本ページの概要
以下は、比較的網羅的で実用的な OpenAI テキスト音声変換(TTS)Python スクリプトのサンプルです。
一、機能概要
Section titled “一、機能概要”- 役割:入力されたテキストを即座に自然な音声へ合成し、ナレーション、音声案内、対話型製品の発話などに利用できます。
- 特徴:低遅延、多言語対応、複数のプリセット音色(voices)を提供、さまざまな音声フォーマットに出力可能、ストリーミング再生にも対応。
- 典型的な遅延:短い文なら通常、数百ミリ秒から約 1〜2 秒以内に再生可能な音声を取得できます。ネットワーク状況、モデル、フォーマットに依存します。
二、利用可能なモデルと違い
Section titled “二、利用可能なモデルと違い”- 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)を利用することで、接続が安定し、速度も速く、開通手続きも簡単で、すぐに使い始められます。
向いている人: 安定性と効率を重視し、すばやく利用を開始したいすべての開発者。多くの上級ユーザーにも選ばれています。
呼び出し方法(概要)
Section titled “呼び出し方法(概要)”第一步:.env ファイルで API キーを安全に管理する
Section titled “第一步:.env ファイルで API キーを安全に管理する”プロフェッショナルな開発では、キーやパスワードなどの機密情報をコードに直接書き込むことは厳禁です。ベストプラクティスは、環境変数で管理することです。dotenv ファイルはローカル開発で最も一般的な方法です。
- python-dotenv ライブラリをインストールする
pip install python-dotenv- .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 osimport requestsfrom 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)まとめ手順:
-
- 例として openaitts というフォルダを作成する
-
- openaitts フォルダ内に .env ファイルを作成し、キーを保存する
-
- openaitts フォルダ内に Python スクリプトファイルを作成する。例えば openai-tts.py など。作成したファイルの中に Python スクリプトを配置する
手順が完了したら、スクリプトファイルを実行してください。
簡単な curl コマンドから始めて、requests ライブラリの導入、.env ファイルによるキー保護、API 呼び出しのパラメータ化、そして堅牢なエラーハンドリングの構築まで進めることで、最終的にプロフェッショナルレベルの Python スクリプトが完成します。
この流れは、「動くものを作る」段階から「使いやすいものを作る」段階への、ソフトウェアエンジニアリング的な発想を示しています。このスクリプトをベースに、さらにクラス化したり、コマンドラインツール(CLI)として構築したり、あるいは大規模な Web アプリケーションに組み込んだりして、プロジェクトに強力な音声機能を加えることができます。