Qwen3 TTS Instruct Flash vs TTS-1 HD
Qual usar, quando — veredito curado, não uma tabela de benchmark
O qwen3-tts-instruct-flash custa $11.5 por milhão de caracteres contra $30, cerca de 2.6x menos, e é o único dos dois que permite dirigir a voz em linguagem natural — o tts-1-hd não expõe controle de voz. A troca é o tamanho da requisição, 600 caracteres contra 4096, então textos longos precisam ser divididos. Os dois fazem streaming. Escolha o tts-1-hd para passagens longas numa só chamada, o qwen3-tts-instruct-flash para falas curtas dirigidas a menor custo.
Preços
| Qwen3 TTS Instruct Flash | TTS-1 HD | Δ | |
|---|---|---|---|
| Por 1M caracteres | $11.5 | $30 | 0.38× |
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
| Qwen3 TTS Instruct Flash | TTS-1 HD | |
|---|---|---|
| Streaming | sim | sim |
| SSML | undocumented | undocumented |
| Unidade de cobrança | character | character |
Especificações
| Qwen3 TTS Instruct Flash | TTS-1 HD | |
|---|---|---|
| Modalidades de entrada | texto | texto |
| Modalidades de saída | áudio | áudio |
| Limite de requisição | 600 characters | 4096 characters |
| Vozes | System voices published with one-line personas, among them Cherry (a sunny, positive, friendly and natural young woman), Serena, Ethan, Chelsie, Momo, Vivian, Moon, Maia, Kai, Nofish (a designer who cannot pronounce retroflex sounds), Bella, Eldric Sage, Mia, Mochi, Bellona, Vincent, Bunny, Neil, Elias, Arthur, Nini, Seren, Pip and Stella the Qwen-TTS voice list pairs each voice with the exact model ids that accept it. | 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 | Chinese (Mandarin), English, German, Italian, Portuguese, Spanish, Japanese, Korean, French and Russian. language_type defaults to Auto for mixed-language or undetermined input, which Alibaba documents as not guaranteeing accuracy naming a single language is documented to significantly improve synthesis quality. Unlike the Qwen3-TTS-Flash series, the Instruct series lists no Chinese dialect voices (Beijing, Shanghainese, Sichuan, Nanjing, Shaanxi, Hokkien, Tianjin, Cantonese). | 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 |
| Controle de voz |
| none |
| Limites | HTTP non-real-time speech synthesis API the -realtime suffix marks the WebSocket sibling. Input text capped at 600 characters, multilingual mixed input allowed. Non-streaming returns an audio file URL valid for 24 hours streaming returns Base64-encoded PCM in chunks with the URL only in the final packet, played back in the official samples as 24 kHz mono 16-bit audio. Billed by input text characters, reported as usage.characters (input_tokens and output_tokens are always 0 on the Qwen3-TTS series) output audio is free. | 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 |
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: Qwen3 TTS Instruct Flash · TTS-1 HD
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="qwen3-tts-instruct-flash",
# model="tts-1-hd", # 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: "qwen3-tts-instruct-flash",
// model: "tts-1-hd", // 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="qwen3-tts-instruct-flash" \
# -F model="tts-1-hd" \ # 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: "qwen3-tts-instruct-flash",
// Model: "tts-1-hd", // 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("qwen3-tts-instruct-flash")
// .model("tts-1-hd") // descomente esta linha, comente a linha acima
.file(Paths.get("meeting.mp3"))
.build()).asTranscription();
System.out.println(resp.text());FAQ
Qual é mais barato, Qwen3 TTS Instruct Flash ou TTS-1 HD?
Qwen3 TTS Instruct Flash é mais barato em por 1m caracteres ($11.5 vs $30, com 2.6× 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 Qwen3 TTS Instruct Flash contra TTS-1 HD 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.