Qwen3 TTS Instruct Flash vs TTS-1 HD
Qual usar e quando
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, lidas no momento do build; a página de cada modelo traz a tabela de preços atual.
Onde cada um fica: preço por 1M caracteres entre os 7 modelos de síntese de voz com esta 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 |
| Lançamento | - | 2023-11-06 |
| Limite por 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 provedor; quando um provedor não publica um dado, a linha é omitida, e não inferida. Fontes completas: Qwen3 TTS Instruct Flash · TTS-1 HD
Troque de um para o outro mudando uma linha
Os dois ids estão em todas as abas abaixo; o par de linhas destacado é a única alteração. O endpoint, a chave e o formato da requisição são os mesmos.
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());Perguntas frequentes
Qual é mais barato, Qwen3 TTS Instruct Flash ou TTS-1 HD?
Qwen3 TTS Instruct Flash sai mais barato na linha “Por 1M caracteres” ($11.5 contra $30, 2.6× de diferença). Outras linhas podem pender para o outro lado: a tabela acima mostra todos os preços, e o custo real depende do seu mix de uso.
Posso fazer um teste A/B de Qwen3 TTS Instruct Flash contra TTS-1 HD sem duas integrações?
Sim. Os dois são servidos pelo mesmo endpoint compatível com OpenAI, com uma única chave de API. Para trocar, basta mudar uma linha, a string do modelo; assim você pode direcionar uma parte do tráfego para cada um e comparar as contas diretamente.
Como o text-to-speech é cobrado?
Por caractere do texto de entrada, com um limite de caracteres por requisição indicado na tabela de especificações. Nos dois modelos, textos longos precisam ser divididos em várias requisições.