Google TTS Chirp 3 HD vs TTS-1 HD
Lequel choisir, et quand
Les deux facturent $30 par million de caractères et diffusent tous les deux, donc l'écart porte sur le contrôle et la longueur : google-tts-chirp3-hd prend 5000 octets par requête, expose des paramètres numériques de voix et liste SSML en préversion, tandis que tts-1-hd prend 4096 caractères et n'offre aucun contrôle de voix. La couverture est large des deux côtés, même si la liste de tts-1-hd suit le jeu de langues de Whisper plutôt qu'une liste de locales énumérée. Prenez google-tts-chirp3-hd quand il faut façonner le rendu, tts-1-hd quand la voix par défaut suffit.
Tarifs
| Google TTS Chirp 3 HD | TTS-1 HD | Δ | |
|---|---|---|---|
| Par 1M de caractères | $30 | $30 | = |
Tarifs relevés dans le catalogue en direct à la génération du site ; la page de chaque modèle affiche la grille tarifaire à jour.
Leur position : prix pour 1M de caractères, parmi les 7 modèles de synthèse vocale facturés dans cette unité (échelle logarithmique)
Capacités
| Google TTS Chirp 3 HD | TTS-1 HD | |
|---|---|---|
| Streaming | oui | oui |
| SSML | preview | undocumented |
| Unité de facturation | character | character |
Spécifications
| Google TTS Chirp 3 HD | TTS-1 HD | |
|---|---|---|
| Modalités d'entrée | texte | texte |
| Modalités de sortie | audio | audio |
| Date de sortie | 2025-03 | 2023-11-06 |
| Limite par requête | 5000 bytes | 4096 characters |
| Voix | 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. |
| Langues | 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 |
| Contrôle de la voix |
| none |
| Limites | 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 |
Les spécifications sont reprises de la documentation de chaque fournisseur ; quand un fournisseur ne publie pas une valeur, la ligne est omise et non déduite. Sources complètes : Google TTS Chirp 3 HD · TTS-1 HD
Passez de l'un à l'autre en changeant une seule ligne
Les deux identifiants figurent dans chaque onglet ci-dessous : les deux lignes surlignées sont le seul changement. Même endpoint, même clé, même format de requête.
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", # décommentez cette ligne, commentez celle du dessus
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", // décommentez cette ligne, commentez celle du dessus
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" \ # décommentez cette ligne, commentez celle du dessus
-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", // décommentez cette ligne, commentez celle du dessus
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") // décommentez cette ligne, commentez celle du dessus
.file(Paths.get("meeting.mp3"))
.build()).asTranscription();
System.out.println(resp.text());FAQ
Lequel est le moins cher, Google TTS Chirp 3 HD ou TTS-1 HD ?
Les deux affichent le même prix sur la ligne « Par 1M de caractères » ($30) : ce n'est donc pas le prix qui les départage ici. Voyez les spécifications et les capacités ci-dessous.
Puis-je faire un test A/B entre Google TTS Chirp 3 HD et TTS-1 HD sans deux intégrations ?
Oui. Les deux passent par le même endpoint compatible OpenAI, avec une seule clé API. Pour passer de l'un à l'autre, il suffit de changer l'identifiant du modèle, soit une ligne : vous pouvez donc envoyer une part du trafic à chacun et comparer directement les factures.
Comment la synthèse vocale est-elle facturée ?
Au caractère de texte en entrée, avec un plafond de caractères par requête indiqué dans le tableau des spécifications. Avec l'un comme avec l'autre, un texte long doit être découpé en plusieurs requêtes.