Google TTS Neural2 vs Google TTS Standard
Cuál usar y cuándo — veredicto seleccionado, no una tabla de benchmarks
google-tts-standard es 4x más barato, $4 por millón de caracteres frente a $16, y tiene la mayor amplitud de locales de la línea; neural2 es la síntesis de más calidad sobre una lista mucho más corta de 17 locales. Ninguno hace streaming, ambos admiten 5000 bytes por petición, ambos soportan SSML y parámetros numéricos de voz — y standard cuenta una sola vez un carácter multibyte, lo que importa en texto CJK. Elige standard por alcance y coste, neural2 donde su locale esté cubierto y la calidad importe.
Precios
| Google TTS Neural2 | Google TTS Standard | Δ | |
|---|---|---|---|
| Por 1M caracteres | $16 | $4 | 4× |
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 Neural2 | Google TTS Standard | |
|---|---|---|
| Streaming | no | no |
| SSML | supported | supported |
| Unidad de facturación | character | character |
Especificaciones
| Google TTS Neural2 | Google TTS Standard | |
|---|---|---|
| Modalidades de entrada | texto | texto |
| Modalidades de salida | audio | audio |
| Límite de solicitudes | 5000 bytes | 5000 bytes |
| Voces | 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. |
| Control de voz |
|
|
| Límites | 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. |
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 Neural2 · Google TTS Standard
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-neural2",
# model="google-tts-standard", # 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-neural2",
// model: "google-tts-standard", // 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-neural2" \
# -F model="google-tts-standard" \ # 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-neural2",
// Model: "google-tts-standard", // 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-neural2")
// .model("google-tts-standard") // 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 Neural2 o Google TTS Standard?
Google TTS Standard es más barato en por 1m caracteres ($4 vs $16, con una diferencia de 4.0×). Otras filas pueden indicar lo contrario — la tabla anterior muestra la ficha completa, y el costo real depende de su combinación.
¿Puedo hacer pruebas A/B de Google TTS Neural2 frente a Google TTS Standard 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.