BytePlus Seed TTS 2.0 vs TTS-1 HD
Lequel choisir, et quand
D'après les faits donnés, ces deux-là sont interchangeables : seed-tts-2.0 et tts-1-hd prennent tous deux du texte en entrée et retournent de l'audio, disposent tous deux de la capacité vocale, plafonnent tous deux à un contexte de 4096 tokens, et facturent tous deux l'entrée à $30 par million de tokens. Comme les grilles tarifaires et les unités correspondent exactement, il n'y a aucun argument de coût ou de contexte dans un sens ou dans l'autre - choisissez selon la préférence de fournisseur, le rendu vocal qui convient à votre produit, ou le fournisseur avec lequel vous êtes déjà intégré. Faites passer un court extrait de votre propre script sur chacun et gardez celui qui sonne bien.
Tarifs
| BytePlus Seed TTS 2.0 | 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
| BytePlus Seed TTS 2.0 | TTS-1 HD | |
|---|---|---|
| Streaming | oui | oui |
| SSML | unsupported | undocumented |
| Unité de facturation | character | character |
Spécifications
| BytePlus Seed TTS 2.0 | TTS-1 HD | |
|---|---|---|
| Modalités d'entrée | texte | texte |
| Modalités de sortie | audio | audio |
| Date de sortie | 2025-10-16 | 2023-11-06 |
| Limite par requête | - | 4096 characters |
| Voix | 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]. | 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 | English, Chinese, Japanese, German, French, Mexican Spanish, Indonesian Bahasa, Brazilian Portuguese, Italian and Korean | 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 | 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. | none |
| Limites | 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 | 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 : BytePlus Seed TTS 2.0 · 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="seed-tts-2.0",
# 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: "seed-tts-2.0",
// 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="seed-tts-2.0" \
# -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: "seed-tts-2.0",
// 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("seed-tts-2.0")
// .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, BytePlus Seed TTS 2.0 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 BytePlus Seed TTS 2.0 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.