Sintesi vocale con SSML
Con l'SSML (Speech Synthesis Markup Language) non fai solo leggere un testo: lo marchi con dei tag e decidi tu dove mettere le pause, quale parola enfatizzare, a che velocità leggere e come pronunciare numeri, sigle e date. Il risultato è un audio più naturale e sotto controllo rispetto alla lettura semplice. È pensato per chi cura il dettaglio.
Esegui online
Esegui questo sui nostri server con il tuo account. Gli strumenti gratuiti girano nel tuo browser; questo viene addebitato sul tuo saldo KIT al prezzo indicato sopra.
Che cos'è l'SSML
L'SSML è un modo standard per “dare istruzioni” alla voce dentro al testo. Con dei tag indichi una pausa di mezzo secondo, un tono più basso, una parola da rimarcare o come leggere una cifra. Chi genera molti audio e vuole un risultato coerente parte da qui, invece di accontentarsi della lettura predefinita.
Cosa puoi controllare
Pause e respiri tra le frasi, velocità e tono, enfasi su singole parole, e la lettura degli elementi delicati: una data come 14/07/2026 letta “quattordici luglio”, una P.IVA come IT01234567890 scandita cifra per cifra, un importo letto per intero. Sono proprio i punti dove la lettura automatica di solito sbaglia.
In beta, per chi cura il dettaglio
Questo strumento è in beta e si rivolge a chi conosce l'SSML o ha voglia di impararlo. Se un tag non viene interpretato come ti aspetti, scrivici l'esempio: ci aiuta a migliorarlo. Il prezzo è a consumo, senza abbonamento.
Casi d'uso
Il numero letto bene
Un'audioguida deve leggere “+39 06 4890 1234”: con l'SSML lo fai scandire cifra per cifra, così si capisce, invece di sentirlo pronunciare come un numero unico.
Messaggi automatici coerenti
Rossi & Figli S.r.l. genera decine di messaggi vocali e usa i tag per tenere le stesse pause e lo stesso tono in tutti, senza rifarli a mano.
E-learning con il ritmo giusto
Un corso online marca le frasi chiave con l'enfasi e inserisce una pausa dopo ogni concetto, così la lezione audio si segue meglio.
Domande frequenti
Serve conoscere l'SSML?
Un minimo sì: marchi il testo con dei tag. Se parti da zero, con qualche esempio si impara in fretta; per la lettura semplice, senza tag, c'è lo strumento di sintesi vocale di base.
Quali controlli posso usare?
Pause, velocità, tono, enfasi e la lettura di numeri, date e sigle. Sono i casi in cui la lettura automatica di solito inciampa.
In cosa è diverso dalla sintesi vocale normale?
Quella legge il testo così com'è; qui decidi tu ogni dettaglio del parlato. Più lavoro, ma risultato più curato e ripetibile.
Quanto costa?
$0.002 a richiesta più $0.0025 ogni 1.000 caratteri. Paghi a consumo, senza abbonamento.
Che significa che è in beta?
Che funziona ma lo stiamo ancora affinando. Se un tag non viene interpretato come ti aspetti, segnalacelo con l'esempio: si corregge e, se l'errore è nostro, si rimborsa.
Il testo con i tag resta salvato?
No: viene usato per generare l'audio e poi eliminato, nel rispetto del GDPR. Non lo conserviamo.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/voice/tts-ssml \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/voice/tts-ssml", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/voice/tts-ssml",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/voice/tts-ssml", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/voice/tts-ssml", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"text": "…"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "voice.tts_ssml",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 200 |
max_minutes | 180 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |