Text-to-Speech Gemini-TTS は Google の Text-to-Speech テクノロジーの最新の進化形であり、単に自然さを追求するだけでなく、テキストベースのプロンプトを使って生成音声を細かくコントロールできるようになっています。Gemini-TTS を使用すると、短い断片的な文章から長文のナラティブまで音声合成することができ、スタイル、アクセント、速度、声のトーン、さらに感情表現まで正確に指定できます。しかも、すべて自然言語のプロンプトでコントロール可能です。
Gemini-TTS の機能は以下によって実現されています。
gemini-2.5-flash-preview-tts
: Gemini 2.5 Flash プレビュー版は、費用対効果の高い日常的なアプリケーションに適しています。gemini-2.5-pro-preview-tts
: Gemini 2.5 Pro プレビュー版は、制御可能な音声生成(TTS)や、複雑なプロンプトに対する最先端の品質に適しています。
モデル | 適した用途 | 入力モダリティ | 出力モダリティ | 単一話者 |
---|---|---|---|---|
Gemini 2.5 Flash プレビュー TTS | 低レイテンシで制御可能な、単一話者および複数話者の Text-to-Speech 音声生成により、費用対効果の高い日常的なアプリケーションを実現 | テキスト | 音声 | ✔️ |
Gemini 2.5 Pro プレビュー TTS | ポッドキャスト制作、オーディオブック、カスタマー サポートなどの構造化されたワークフローを高度に制御 | テキスト | 音声 | ✔️ |
上記のほかに次のような制御オプションや機能があります。
自然な会話: 非常に低いレイテンシで、優れた品質の音声インタラクション、より適切な表現力、韻律(リズムのパターン)が提供されるため、スムーズに会話できます。
スタイルの制御: 自然言語のプロンプトを使えば、会話の中で話し方を調整し、特定のアクセントを採用させたり、さまざまなトーンや表現(ささやき声など)を生成させたりすることができます。
動的なパフォーマンス: これらのモデルは、詩の表現豊かな朗読やニュース放送、引き込まれるようなストーリーテリングでテキストを生き生きと表現できます。また、リクエストに応じて特定の感情を込めて話したり、アクセントを付けたりすることも可能です。
ペースと発音のより詳細なコントロール: 話す速度を調整することで、特定の単語を含めて発音の精度を高めることができます。
例
model: "gemini-2.5-pro-preview-tts" prompt: "You are having a casual conversation with a friend. Say the following in a friendly and amused way." text: "hahah I did NOT expect that. Can you believe it!." speaker: "Callirhoe"
model: "gemini-2.5-flash-preview-tts" prompt: "Say the following in a curious way" text: "OK, so... tell me about this [uhm] AI thing.", speaker: "Orus"
model: "gemini-2.5-flash-preview-tts" prompt: "Say the following" text: "[extremely fast] Availability and terms may vary. Check our website or your local store for complete details and restrictions." speaker: "Kore"
これらの音声をプログラムで使用する方法の詳細については、Gemini-TTS を使用するをご覧ください。
音声オプション
Gemini-TTS には、既存の Chirp 3: HD 音声と同様に、それぞれに特徴のあるさまざまな音声オプションが用意されています。
名前 | 性別 | デモ |
---|---|---|
アケルナル | 女性 | |
アキアード | 男性 | |
アルゲニブ | 男性 | |
アルギエバ | 男性 | |
アルニラム | 男性 | |
アオエデ | 女性 | |
オウトノエ | 女性 | |
カリュローエ | 女性 | |
Charon | 男性 | |
デスピナ | 女性 | |
エンケラドゥス | 男性 | |
エリノメ | 女性 | |
Fenrir | 男性 | |
ガクラックス | 女性 | |
イアペトゥス | 男性 | |
Kore | 女性 | |
ラオメデイア | 女性 | |
Leda | 女性 | |
Orus | 男性 | |
プルケリマ | 女性 | |
Puck | 男性 | |
ラサルゲティ | 男性 | |
サダクビア | 男性 | |
サダルタゲル | 男性 | |
スケダル | 男性 | |
スラファト | 女性 | |
アムブリエル | 男性 | |
ビンデミアトリクス | 女性 | |
Zephyr | 女性 | |
ズベンエルゲヌビ | 男性 |
対応言語
Gemini-TTS には、既存の Chirp 3: HD 音声と同様に、それぞれに特徴のあるさまざまな音声オプションが用意されています。
言語 | BCP-47 コード |
---|---|
英語(米国) | en-US |
リージョン可用性
Gemini-TTS モデルは、次の Google Cloud リージョンでそれぞれ利用できます。
Google Cloud ゾーン | 提供状況 |
---|---|
us |
公開プレビュー版 |
サポートされる出力形式
デフォルトのレスポンス形式は LINEAR16
です。その他に次の形式に対応しています。
API メソッド | 形式 |
---|---|
batch |
ALAW、MULAW、MP3、OGG_OPUS、PCM |
Gemini-TTS を使用する
Gemini-TTS モデルを使用して、最大 800 文字のテキストを含む単一話者の音声を合成する方法について説明します。
同期音声合成リクエストを実行する
Python
import os
from google.cloud import texttospeech
PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
def synthesize(prompt: str, text: str, model_name: str, output_filepath: str = "output.mp3"):
"""Synthesizes speech from the input text and saves it to an MP3 file.
Args:
prompt: Stylisting instructions on how to synthesize the content in
the text field.
text: The text to synthesize.
model_name: Gemini model to use. Currently, the available models are
gemini-2.5-flash-preview-tts and gemini-2.5-pro-preview-tts
output_filepath: The path to save the generated audio file.
Defaults to "output.mp3".
"""
client = texttospeech.TextToSpeechClient()
synthesis_input = texttospeech.SynthesisInput(text=text, prompt=prompt)
# Select the voice you want to use.
voice = texttospeech.VoiceSelectionParams(
language_code="en-US",
name="Charon", # Example voice, adjust as needed
model_name=model_name
)
audio_config = texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.MP3
)
# Perform the text-to-speech request on the text input with the selected
# voice parameters and audio file type.
response = client.synthesize_speech(
input=synthesis_input, voice=voice, audio_config=audio_config
)
# The response's audio_content is binary.
with open(output_filepath, "wb") as out:
out.write(response.audio_content)
print(f"Audio content written to file: {output_filepath}")