Google TTS Chirp 3 HD vs BytePlus Seed TTS 2.0
Cuál usar y cuándo
Según los datos del catálogo, estos dos son intercambiables: tanto google-tts-chirp3-hd como seed-tts-2.0 facturan $30 por millón de tokens de entrada, ambos tienen una ventana de contexto de 4096 tokens, y ambos reciben texto y devuelven audio bajo la misma capacidad de voz. Sin ninguna diferencia de tarifa, contexto o modalidad que evaluar, la elección se reduce a la preferencia de proveedor - Google para google-tts-chirp3-hd, ByteDance para seed-tts-2.0 - y a la salida de voz que tus oyentes realmente prefieran en una prueba A/B. La planificación del presupuesto y de la longitud del prompt puede ser idéntica para cualquiera de los dos.
Precios
| Google TTS Chirp 3 HD | BytePlus Seed TTS 2.0 | Δ | |
|---|---|---|---|
| Por 1M de caracteres | $30 | $30 | = |
Tarifas tomadas del catálogo en vivo al generar el sitio; la página de cada modelo tiene la ficha de precios actualizada.
Dónde queda cada uno: precio por 1M de caracteres entre los 7 modelos de síntesis de voz que se facturan en esta unidad (escala logarítmica)
Capacidades
| Google TTS Chirp 3 HD | BytePlus Seed TTS 2.0 | |
|---|---|---|
| Streaming | sí | sí |
| SSML | preview | unsupported |
| Unidad de facturación | character | character |
Especificaciones
| Google TTS Chirp 3 HD | BytePlus Seed TTS 2.0 | |
|---|---|---|
| Modalidades de entrada | texto | texto |
| Modalidades de salida | audio | audio |
| Lanzamiento | 2025-03 | 2025-10-16 |
| Límite por solicitud | 5000 bytes | - |
| Voces | Voices are named after stars and published with a gender: Achernar, Achird, Algenib, Algieba, Alnilam, Aoede, Autonoe, Callirrhoe, Charon, Despina, Enceladus, Erinome, Fenrir, Gacrux, Iapetus, Kore, Laomedeia, Leda, Orus, Pulcherrima, Puck, Rasalgethi, Sadachbia, Sadaltager, Schedar, Sulafat, Umbriel, Vindemiatrix, Zephyr and Zubenelgenubi. A locale prefix forms the id, e.g. en-US-Chirp3-HD-Charon. Google describes the set as 30 distinct styles across many languages. | TTS 2.0 voices carry *_uranus_bigtts speaker IDs and are listed by scenario (General, Entertainment, Education, Dubbing, AudioBook, RolePlay, CustomerService) on the Voice List page per-voice emotion via audio_params.emotion with emotion_scale 1 to 5 (default 4), speech_rate and loudness_rate in [-50, 100], and post_process.pitch in [-12, 12]. |
| Idiomas | ar-XA, bn-IN, bg-BG, yue-HK, hr-HR, cs-CZ, da-DK, nl-BE, nl-NL, en-AU, en-IN, en-GB, en-US, et-EE, fi-FI, fr-CA, fr-FR, de-DE, el-GR, gu-IN, he-IL, hi-IN, hu-HU, id-ID, it-IT, ja-JP, kn-IN, ko-KR, lv-LV, lt-LT, ml-IN, cmn-CN, mr-IN, nb-NO, pl-PL, pt-BR, pa-IN, ro-RO, ru-RU, sr-RS, sk-SK, sl-SI, es-ES, es-US, sw-KE, sv-SE, ta-IN, te-IN, th-TH, tr-TR, uk-UA, ur-IN and vi-VN. | English, Chinese, Japanese, German, French, Mexican Spanish, Indonesian Bahasa, Brazilian Portuguese, Italian and Korean |
| Control de voz |
| context_texts and section_id are TTS 2.0 only: a plain-language instruction steers rate, emotion, volume and style (only the first list value takes effect, and its text is not billed), and section_id links up to 30 rounds or 10 minutes of earlier synthesis as historical context. |
| Límites | Content limit of 5,000 total bytes per synthesize request. Default response format LINEAR16 streaming supports ALAW, MULAW, OGG_OPUS and PCM, batch adds MP3, so MP3 is not available on the streaming path. The only voice type Google's comparison table marks as streaming-capable. Generally available in the global, us and eu endpoints plus asia-southeast1, europe-west2 and asia-northeast1, but out of scope for regionalization and data residency. Billed per character including spaces and newlines, with all SSML tags except <mark> counted. | Integration via uni-directional streaming HTTP, uni- or bi-directional streaming WebSocket and online SDK sampling rate 24K/16K/8K on the uni-directional streaming and non-streaming interfaces, 48K/24K/16K/8K on the bi-directional interface output PCM, OGG_OPUS or MP3 (WAV is accepted but returns multiple headers when streaming) SSML is not supported |
Las especificaciones se transcriben de la documentación de cada proveedor; si un proveedor no publica un dato, la fila se omite en vez de deducirlo. Fuentes completas: Google TTS Chirp 3 HD · BytePlus Seed TTS 2.0
Cambia de uno a otro con una sola línea
Los dos ids aparecen en todas las pestañas de abajo; lo único que cambia es el par de líneas resaltadas. El endpoint, la clave y la estructura de la solicitud son los mismos.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.audio.transcriptions.create(
model="google-tts-chirp3-hd",
# model="seed-tts-2.0", # descomenta esta línea, comenta la de arriba
file=open("meeting.mp3", "rb"),
language="en",
)
print(resp.text)import OpenAI from "openai";
import fs from "node:fs";
const client = new OpenAI({
baseURL: "https://synthorai.io/v1",
apiKey: "sk-syn-...",
});
const resp = await client.audio.transcriptions.create({
model: "google-tts-chirp3-hd",
// model: "seed-tts-2.0", // descomenta esta línea, comenta la de arriba
file: fs.createReadStream("meeting.mp3"),
});
console.log(resp.text);curl https://synthorai.io/v1/audio/transcriptions \
-H "Authorization: Bearer sk-syn-..." \
-F model="google-tts-chirp3-hd" \
# -F model="seed-tts-2.0" \ # descomenta esta línea, comenta la de arriba
-F file=@meeting.mp3package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://synthorai.io/v1"),
option.WithAPIKey("sk-syn-..."),
)
f, _ := os.Open("meeting.mp3")
resp, _ := client.Audio.Transcriptions.New(context.TODO(), openai.AudioTranscriptionNewParams{
Model: "google-tts-chirp3-hd",
// Model: "seed-tts-2.0", // descomenta esta línea, comenta la de arriba
File: f,
})
fmt.Println(resp.Text)
}import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.audio.transcriptions.*;
import java.nio.file.Paths;
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://synthorai.io/v1")
.apiKey("sk-syn-...")
.build();
Transcription resp = client.audio().transcriptions().create(
TranscriptionCreateParams.builder()
.model("google-tts-chirp3-hd")
// .model("seed-tts-2.0") // descomenta esta línea, comenta la de arriba
.file(Paths.get("meeting.mp3"))
.build()).asTranscription();
System.out.println(resp.text());Preguntas frecuentes
¿Cuál es más barato, Google TTS Chirp 3 HD o BytePlus Seed TTS 2.0?
Los dos tienen el mismo precio en Por 1M de caracteres ($30), así que aquí el precio no decide: mira las especificaciones y las capacidades más abajo.
¿Puedo hacer pruebas A/B de Google TTS Chirp 3 HD frente a BytePlus Seed TTS 2.0 sin dos integraciones?
Sí. Los dos se sirven desde el mismo endpoint compatible con OpenAI y con una sola clave API. Para cambiar de uno a otro basta con tocar una línea, el nombre del modelo, así que puedes mandar una parte del tráfico a cada uno y comparar directamente las facturas.
¿Cómo se factura el texto a voz?
Por carácter del texto de entrada, con un máximo de caracteres por solicitud que figura en la tabla de especificaciones. Con cualquiera de los dos modelos, los textos largos hay que repartirlos en varias solicitudes.