Qwen3 TTS Instruct Flash vs TTS-1 HD
Quale scegliere e quando — verdetto curato, non una tabella di benchmark
qwen3-tts-instruct-flash costa $11.5 per milione di caratteri contro $30, circa 2.6x in meno, ed è l'unico dei due che permette di dirigere la voce in linguaggio naturale — tts-1-hd non espone alcun controllo della voce. Il compromesso è la dimensione della richiesta, 600 caratteri contro 4096, quindi i testi lunghi vanno divisi. Entrambi fanno streaming. Scegli tts-1-hd per passaggi lunghi in una sola chiamata, qwen3-tts-instruct-flash per battute brevi dirette a costo inferiore.
Prezzi
| Qwen3 TTS Instruct Flash | TTS-1 HD | Δ | |
|---|---|---|---|
| Per 1M caratteri | $11.5 | $30 | 0.38× |
Le tariffe provengono dal catalogo live al momento della build; la pagina di ciascun modello riporta la scheda attuale.
Dove si posizionano — prezzo per 1M di caratteri rispetto a tutti gli 7 modelli text-to-speech con questa unità di fatturazione (scala logaritmica)
Capacità
| Qwen3 TTS Instruct Flash | TTS-1 HD | |
|---|---|---|
| Streaming | sì | sì |
| SSML | undocumented | undocumented |
| Unità di fatturazione | character | character |
Specifiche
| Qwen3 TTS Instruct Flash | TTS-1 HD | |
|---|---|---|
| Modalità di input | testo | testo |
| Modalità di output | audio | audio |
| Limite di richieste | 600 characters | 4096 characters |
| Voci | 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. |
| Lingue | 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 |
| Controllo vocale |
| none |
| Limiti | 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 |
Le specifiche sono trascritte dalla documentazione di ciascun fornitore; una riga che un fornitore non pubblica viene omessa anziché essere dedotta. Fonti complete: Qwen3 TTS Instruct Flash · TTS-1 HD
Passa dall'uno all'altro con una sola riga
Entrambi gli id sono presenti in ogni scheda qui sotto — la coppia di righe evidenziata è l'unica modifica. Stesso endpoint, stessa chiave, stessa struttura della richiesta.
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", # decommenta questa riga, commenta quella sopra
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", // decommenta questa riga, commenta quella sopra
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" \ # decommenta questa riga, commenta quella sopra
-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", // decommenta questa riga, commenta quella sopra
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") // decommenta questa riga, commenta quella sopra
.file(Paths.get("meeting.mp3"))
.build()).asTranscription();
System.out.println(resp.text());FAQ
Qual è più economico, Qwen3 TTS Instruct Flash o TTS-1 HD?
Qwen3 TTS Instruct Flash è più economico per per 1m caratteri ($11.5 contro $30, 2.6× di differenza). Altre righe potrebbero indicare il contrario — la tabella sopra riporta la scheda completa, e il costo reale dipende dal tuo mix.
Posso fare un A/B test di Qwen3 TTS Instruct Flash contro TTS-1 HD senza due integrazioni?
Sì. Entrambi sono serviti tramite lo stesso endpoint compatibile con OpenAI con una singola chiave API — il passaggio richiede la modifica della stringa del modello in una sola riga, quindi puoi instradare una frazione del traffico verso ciascuno e confrontare direttamente le fatture.
Come viene fatturato il text-to-speech?
Per carattere del testo di input, con un limite massimo di caratteri per richiesta indicato nella tabella delle specifiche. Gli script lunghi devono essere suddivisi su più richieste per entrambi i modelli.