Un messaggio vocale di un personaggio immaginario funziona quando la voce corrisponde alla persona e la lettura corrisponde al momento. Qwen3 TTS trasforma il copione di un personaggio adulto in un unico MP3 a voce singola e tu guidi la lettura con una nota in linguaggio semplice. L'attività SpicyAPI ha nove voci preset e costa $0.068 per 1.000 caratteri di testo, con un minimo di 100 caratteri per richiesta. In base ai nostri test di settembre 2026, il vocabolario adulto esplicito nei passaggi diretti e in stile audiobook è stato letto così com'è. Usala per messaggi vocali registrati e narrazione; questa soluzione non ha clonazione della voce né streaming dal vivo.
Cosa include l'attività ospitata
| Dettaglio | Attività Qwen3 TTS |
|---|---|
| Input obbligatorio | text, 1–2.000 caratteri |
| Direzione della lettura | instructions, fino a 1.000 caratteri; non viene letto, non viene fatturato |
| Voce predefinita | Serena |
| Output | un MP3 mono a 24 kHz |
| Prezzo | $0.068 per 1.000 caratteri di testo, minimo 100 caratteri ($0.0068) |
| Riferimento vocale caricato | non esposto |
| Più voci in una richiesta | non esposto; genera ogni turno separatamente |
| Velocità o intonazione numeriche | non esposte; descrivi la lettura in instructions |
Seleziona il preset e genera dalla pagina dell'attività Qwen3 TTS. Anche il repository del team Qwen copre le varianti CustomVoice, Base (clonazione) e VoiceDesign. Sono offerte separate: l'argomento ref_audio o speaker di una libreria non è un input qui, dove il campo voce è voice_id.
Scegli una voce per il copione che hai
| Preset | Descrizione vocale pubblicata | Lingua madre |
|---|---|---|
| Serena | voce femminile calda e morbida | cinese |
| Vivian | voce femminile luminosa, leggermente tagliente | cinese |
| Uncle_Fu | voce maschile bassa e morbida | cinese |
| Dylan | voce maschile chiara di Pechino | cinese, dialetto di Pechino |
| Eric | voce maschile vivace, leggermente roca | cinese, dialetto del Sichuan |
| Ryan | voce maschile ritmica | inglese |
| Aiden | voce maschile americana chiara | inglese |
| Ono_Anna | voce femminile leggera e giocosa | giapponese |
| Sohee | voce femminile calda ed espressiva | coreano |
Ogni preset può leggere ogni lingua supportata, ma il team Qwen consiglia la lingua madre della voce per la qualità migliore. Per un personaggio maschile inglese, inizia da Ryan o Aiden. Per un personaggio femminile inglese, prova Serena o Vivian; l'insieme non ha voci femminili con inglese come lingua madre, quindi provale prima di decidere.
Ascolta un esempio di messaggio vocale con Serena: una nota notturna « richiamami », letta con un'istruzione ansimante e maliziosa.
Provala prima nel Playground
Apri la pagina dell'attività Qwen3 TTS e usa la scheda Playground:
- In Text incolla solo le parole da sentire (lo script di esempio della pagina è un buon primo test).
- Scegli un nome in Voice (Serena per impostazione predefinita).
- Scrivi la nota di lettura in Delivery instructions.
- Lascia Language su Auto-detect, oppure scegli l'inglese per uno script in inglese se il rilevamento è ambiguo.
- Esegui, poi riproduci il risultato in Output e scarica l'MP3.
Una persona adulta fittizia dopo un appuntamento: Text « I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again. », Voice Serena, Delivery instructions « Calda e leggermente timida, parlando piano a un solo ascoltatore adulto. Tieni la domanda finale in tono conversazionale. » Non iniziare il testo con Serena: né con « Read this in a soft voice »: entrambi verrebbero letti. Prova qui due o tre voci e note prima di scrivere il codice; il prezzo è mostrato prima dell'esecuzione.
language accetta auto, zh, en, de, fr, es, it, pt, ru, ja e ko. Sceglie come viene letto il tuo testo; non traduce.
Poi richiamala dal codice
Installa l'SDK Python (pip install spicyapi), imposta SPICY_API_KEY nell'ambiente ed esegui:
import urllib.request
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
task = client.create_task(
model="alibaba/qwen-3-tts/text-to-speech",
input_data={
"text": "I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again.",
"voice_id": "Serena",
"language": "en",
"instructions": "Warm and slightly shy, speaking quietly to one adult listener. Keep the final question conversational.",
},
idempotency_key=str(uuid.uuid4()), # new key per new request; reuse only to retry the same one
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")
urllib.request.urlretrieve(output_assets(final)[0]["url"], "voice-message.mp3")L'attesa, i nuovi tentativi, i preventivi e gli errori sono nel riferimento dell'SDK Python e nella guida alle attività asincrone.
Oppure lascia che lo esegua un Agent
Se un assistente deve dare voce alle tue battute, dagli la CLI o il server MCP. Entrambi mostrano il prezzo e ti chiedono conferma prima di una chiamata a pagamento. La Skill aggiunge istruzioni sopra l'uno o l'altro.
- CLI.
spicyapiesegue un'attività da terminale (npx @spicyapi/clifunziona senza installazione). Metti lo stesso oggettoinputininput.json:
``bash spicyapi tasks create --model alibaba/qwen-3-tts/text-to-speech \ --input-file input.json --idempotency-key voice-message-take-1 --wait ``
- Server MCP. Aggiungi il server MCP al tuo assistente e chiedi: «Leggi questa battuta con Qwen3 TTS, Serena, calda e leggermente timida.» Chiama
spicyapi_task_create(che si ferma per la conferma del prezzo) e poispicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillinstalla la Agent Skill, che insegna a un assistente di programmazione a leggere lo schema attuale e a riutilizzare le chiavi di idempotenza. Non può eseguire attività da solo, quindi usala con la CLI o MCP.
Dirigi la stessa battuta in tre modi
Tieni fissi testo e voce e cambia solo la nota. Per « I thought you'd forgotten »:
| Emozione voluta | Istruzione da provare |
|---|---|
| Sollevata | « Sospiro di sollievo, con un sorriso, un po' più basso sull'ultima parola » |
| Ferita | « Quieta e cauta, più lenta, senza sorriso » |
| Canzonatoria | « Leggera e giocosa, con un lieve innalzamento alla fine, come se nascondesse un sorriso » |
Cambia una cosa alla volta. « Togli il sussurro » o « più lenta dopo la prima frase » corregge una ripresa; « più emotiva, più umana » no. Se il risultato è troppo teatrale, accorcia la nota a « Lettura conversazionale naturale. »
Può leggere uno script NSFW?
I test hanno coperto un passaggio adulto diretto, un passaggio in cornice audiobook e un passaggio ricco di indicazioni di scena, usando Serena o Ryan con istruzioni di lettura. Le trascrizioni diretta e audiobook corrispondevano allo script parola per parola, vocabolario adulto incluso, e il testo delle istruzioni non è mai stato letto.
Il passaggio ricco di indicazioni ha mantenuto il suo vocabolario adulto ma si è discostato di più dallo script a causa delle vocalizzazioni non verbali. Tratta respiri e risate come qualcosa da provare, non da controllare: se una scena dipende da uno, genera prima quel momento e non dare per scontato che la sintassi con parentesi quadre o tonde di un altro modello funzioni qui.
Componi una scena con due personaggi
Una richiesta dà una voce. Per due adulti immaginari, genera ogni turno separatamente:
| Turno | Voce | Testo | Direzione |
|---|---|---|---|
| 1 | Serena | « Did you really think I'd leave without saying goodnight? » | domanda calda e rilassata |
| 2 | Ryan | « No. I was hoping you would come find me. » | risposta quieta e divertita |
I tutorial ComfyUI con più voci analizzano i nomi dei parlanti, le pause e le sovrapposizioni in un nodo aggiuntivo; quei tag non sono campi di input qui. Togli i nomi dal testo parlato, invia ogni turno con il proprio voice_id, poi imposta le pause nel tuo editor. Inizia con una pausa breve e sposta il secondo clip finché la risposta non suona naturale. Mettere entrambi i nomi in un solo campo text ti dà un preset che legge le etichette ed entrambe le battute. Per scrivere tutto lo scambio e unire i clip automaticamente, vedi il flusso di lavoro di dialogo Seed Speech 2.0; il suo script di join funziona con qualsiasi voce.
Per una lunga storia a voce singola, dividi prima di 2.000 caratteri sui confini di frase o paragrafo e riusa la stessa voce e la stessa nota per ogni sezione. Per sostituire una frase, rigenera l'intera frase circostante e taglia sulle pause vicine, così volume e ritmo restano coerenti.
L'addebito minimo conta per le risposte brevi
Il costo è max(text characters, 100) × $0.068 / 1,000, contando spazi e punteggiatura. Le istruzioni sono gratuite.
| Lunghezza dell'input | Caratteri addebitati | Costo |
|---|---|---|
| 40 caratteri | 100 | $0.0068 |
| 80 caratteri | 100 | $0.0068 |
| 180 caratteri | 180 | $0.01224 |
| 1.000 caratteri | 1.000 | $0.068 |
| 2.000 caratteri | 2.000 | $0.136 |
Dieci risposte separate da 40 caratteri costano $0.068, anche se i loro testi sommano solo 400 caratteri; una richiesta di 400 caratteri con la stessa voce costa $0.0272. Unisci la narrazione contigua di una sola voce quando il tuo montaggio lo consente, ma non unire personaggi diversi per evitare il minimo.
Correggi un risultato deludente
| Problema | Modifica |
|---|---|
| Una battuta esce affrettata | Aggiungi « Senza fretta, con una pausa naturale dopo la prima frase » a instructions |
| Un nome viene pronunciato male | Scrivilo foneticamente in text; mantieni l'ortografia corretta nella trascrizione pubblica |
| La nota cambia appena il timbro | Prova un altro preset; le note di lettura non cambiano il carattere di base di una voce |
La richiesta rifiuta speed, pitch o ref_audio | Rimuovili e usa i quattro campi qui sopra |
Se ti serve la clonazione di una voce caricata o una conversazione dal vivo, scegli un'attività che le esponga; per confrontare altri modelli vocali per script adulti, vedi il nostro confronto delle API text-to-speech.






