Google TTS Chirp 3 HD vs TTS-1 HD
Cuál usar y cuándo — veredicto seleccionado, no una tabla de benchmarks
Ambos cobran $30 por millón de caracteres y ambos hacen streaming, así que la diferencia está en el control y la longitud: google-tts-chirp3-hd admite 5000 bytes por petición, expone parámetros numéricos de voz y lista SSML en vista previa, mientras que tts-1-hd admite 4096 caracteres y no ofrece control de voz alguno. La cobertura es amplia en ambos, aunque la lista de tts-1-hd sigue el conjunto de idiomas de Whisper en vez de una lista enumerada de locales. Elige google-tts-chirp3-hd cuando debas moldear la interpretación, tts-1-hd cuando la voz por defecto baste.
Precios
| Google TTS Chirp 3 HD | TTS-1 HD | Δ | |
|---|---|---|---|
| Por 1M caracteres | $30 | $30 | = |
Tarifas del catálogo en vivo en el momento de la compilación; la página de cada modelo incluye la ficha actualizada.
Dónde se sitúan — precio por 1M de caracteres en todos los 7 modelos de texto a voz en esta unidad de facturación (escala logarítmica)
Capacidades
| Google TTS Chirp 3 HD | TTS-1 HD | |
|---|---|---|
| Streaming | sí | sí |
| SSML | preview | undocumented |
| Unidad de facturación | character | character |
Especificaciones
| Google TTS Chirp 3 HD | TTS-1 HD | |
|---|---|---|
| Modalidades de entrada | texto | texto |
| Modalidades de salida | audio | audio |
| Límite de solicitudes | 5000 bytes | 4096 characters |
| 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. | alloy, ash, coral, echo, fable, onyx, nova, sage and shimmer, a smaller set than the full 13-voice TTS list, and voices are currently optimized for English. |
| 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. | Generally follows the Whisper model’s language support: Afrikaans, Arabic, Armenian, Azerbaijani, Belarusian, Bosnian, Bulgarian, Catalan, Chinese, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, Galician, German, Greek, Hebrew, Hindi, Hungarian, Icelandic, Indonesian, Italian, Japanese, Kannada, Kazakh, Korean, Latvian, Lithuanian, Macedonian, Malay, Marathi, Maori, Nepali, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swahili, Swedish, Tagalog, Tamil, Thai, Turkish, Ukrainian, Urdu, Vietnamese and Welsh, despite voices being optimized for English |
| Control de voz |
| none |
| 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. | Speech generation endpoint (v1/audio/speech) only, with Chat Completions, Responses, Realtime, Batch and Fine-tuning all listed as not supported input text is capped at 4096 characters output mp3 (default), opus, aac, flac, wav or pcm (raw 24 kHz 16-bit signed little-endian samples) realtime playback via chunked transfer encoding |
Las especificaciones se transcriben de la documentación de cada proveedor; si un proveedor no publica una fila, se omite en lugar de inferirse. Fuentes completas: Google TTS Chirp 3 HD · TTS-1 HD
Cambia entre ellos con una línea
Ambos IDs están en cada pestaña a continuación — el par de líneas resaltadas es la única edición. Mismo endpoint, misma clave, misma estructura de solicitud.
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="tts-1-hd", # 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: "tts-1-hd", // 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="tts-1-hd" \ # 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: "tts-1-hd", // 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("tts-1-hd") // 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 TTS-1 HD?
Muestran el mismo por 1m caracteres ($30), por lo que el precio no es el factor decisivo en este caso — vea las especificaciones y capacidades a continuación.
¿Puedo hacer pruebas A/B de Google TTS Chirp 3 HD frente a TTS-1 HD sin dos integraciones?
Sí. Ambos se sirven a través del mismo endpoint compatible con OpenAI con una clave API — el cambio es una modificación de una línea en la cadena del modelo, por lo que puede enrutar una fracción del tráfico a cada uno y comparar las facturas directamente.
¿Cómo se factura el texto a voz?
Por carácter de texto de entrada, con un límite de caracteres por petición mostrado en la tabla de especificaciones. Los guiones largos deben fragmentarse en múltiples peticiones en cualquiera de los modelos.