Google TTS Neural2 vs Google TTS Standard
Qual usar, quando — veredito curado, não uma tabela de benchmark
O google-tts-standard é 4x mais barato, $4 por milhão de caracteres contra $16, e tem a maior amplitude de locais da linha; o neural2 é a síntese de maior qualidade numa lista bem mais curta de 17 locais. Nenhum faz streaming, os dois admitem 5000 bytes por requisição, os dois suportam SSML e parâmetros numéricos de voz — e o standard conta um caractere multibyte uma única vez, o que importa em texto CJK. Escolha o standard por alcance e custo, o neural2 onde seu local esteja coberto e a qualidade importe.
Preços
| Google TTS Neural2 | Google TTS Standard | Δ | |
|---|---|---|---|
| Por 1M caracteres | $16 | $4 | 4× |
Tarifas do catálogo em tempo real no momento do build; a página de cada modelo contém o cartão atual.
Onde eles se posicionam — preço por 1M caracteres entre todos os 7 modelos de texto para fala nesta unidade de cobrança (escala logarítmica)
Capacidades
| Google TTS Neural2 | Google TTS Standard | |
|---|---|---|
| Streaming | não | não |
| SSML | supported | supported |
| Unidade de cobrança | character | character |
Especificações
| Google TTS Neural2 | Google TTS Standard | |
|---|---|---|
| Modalidades de entrada | texto | texto |
| Modalidades de saída | áudio | áudio |
| Limite de requisição | 5000 bytes | 5000 bytes |
| Vozes | Voice ids follow the locale-plus-letter pattern (en-US-Neural2-F, ja-JP-Neural2-B). Google's comparison table lists Neural2 as general purpose, generally available, controllable via SSML and not streaming-capable, and the docs state the voices are based on the same technology used to create a Custom Voice, letting anyone use Custom Voice technology without training their own. | Voice ids follow a locale-plus-letter pattern (en-US-Standard-A, cmn-CN-Standard-A). Google's comparison table lists Standard as cost efficient, generally available, controllable via SSML and not streaming-capable the docs attribute the voices to parametric text-to-speech passed through vocoders. |
| Idiomas | A much shorter locale list than Standard. Neural2 voice ids are published for da-DK, de-DE, en-AU, en-GB, en-IN, en-US, es-ES, es-US, fr-CA, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR, th-TH and vi-VN. Google notes Neural2 voices are available on global and single-region endpoints. | The widest locale span of any Cloud TTS voice type. Standard voice ids are published for af-ZA, ar-XA, bg-BG, bn-IN, ca-ES, cmn-CN, cmn-TW, cs-CZ, da-DK, de-DE, el-GR, en-AU, en-GB, en-IN, en-US, es-ES, es-US, et-EE, eu-ES, fi-FI, fil-PH, fr-CA, fr-FR, gl-ES, gu-IN, he-IL, hi-IN, hu-HU, id-ID, is-IS, it-IT, ja-JP, kn-IN, ko-KR, lt-LT, lv-LV, ml-IN, mr-IN, ms-MY, nb-NO, nl-BE, nl-NL, pa-IN, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, ta-IN, te-IN, th-TH, tr-TR, uk-UA, ur-IN, vi-VN and yue-HK. |
| Controle de voz |
|
|
| Limites | Content limit of 5,000 total bytes per synthesize request. Output LINEAR16 (with a WAV header), MP3 at 32 kbps, OGG_OPUS, or G.711 MULAW and ALAW optional sampleRateHertz resamples and fails the request if the rate is unsupported for the encoding. Not offered over streaming synthesis. Billed per character including spaces and newlines, with all SSML tags except <mark> counted the multi-byte-counts-once note applies to Standard and WaveNet only. | Content limit of 5,000 total bytes per synthesize request (a single character is multiple bytes in some locales). Output LINEAR16 (returned with a WAV header), MP3 at 32 kbps, OGG_OPUS, or G.711 MULAW and ALAW optional sampleRateHertz resamples and fails the request if the rate is unsupported for the encoding. Not offered over streaming synthesis Long Audio Synthesis (Preview) covers up to 1 million bytes of input asynchronously. Billed per character including spaces and newlines, and all SSML tags except <mark> count for Standard and WaveNet a multi-byte character is charged once. |
As especificações são transcritas da documentação de cada fornecedor; uma linha que um fornecedor não publica é omitida em vez de ser inferida. Fontes completas: Google TTS Neural2 · Google TTS Standard
Alterne entre eles com uma linha
Ambos os IDs estão em todas as abas abaixo — o par de linhas destacado é a única edição. Mesmo endpoint, mesma chave, mesmo formato de requisição.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.audio.transcriptions.create(
model="google-tts-neural2",
# model="google-tts-standard", # descomente esta linha, comente a linha acima
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-neural2",
// model: "google-tts-standard", // descomente esta linha, comente a linha acima
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-neural2" \
# -F model="google-tts-standard" \ # descomente esta linha, comente a linha acima
-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-neural2",
// Model: "google-tts-standard", // descomente esta linha, comente a linha acima
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-neural2")
// .model("google-tts-standard") // descomente esta linha, comente a linha acima
.file(Paths.get("meeting.mp3"))
.build()).asTranscription();
System.out.println(resp.text());FAQ
Qual é mais barato, Google TTS Neural2 ou Google TTS Standard?
Google TTS Standard é mais barato em por 1m caracteres ($4 vs $16, com 4.0× de diferença). Outras linhas podem apontar para o outro lado — a tabela acima traz o quadro completo, e o custo real depende do seu mix.
Posso fazer um teste A/B de Google TTS Neural2 contra Google TTS Standard sem duas integrações?
Sim. Ambos são servidos pelo mesmo endpoint compatível com OpenAI com uma única chave de API — a troca é uma alteração de uma linha na string do modelo, de modo que você pode rotear uma fração do tráfego para cada um e comparar as faturas diretamente.
Como o text-to-speech é cobrado?
Por caractere de texto de entrada, com um limite de caracteres por requisição exibido na tabela de especificações. Scripts longos devem ser divididos em várias requisições em qualquer um dos modelos.