{
  "aboutHtml": "<p>Voxtral TTS è il modello 4B di sintesi vocale di Mistral AI per generare audio parlato da testo e una voce di riferimento. La pagina del produttore identifica l’edizione 2603 come voxtral-mini-tts-2603, mentre la scheda dei pesi rilasciati è denominata Voxtral 4B TTS 2603. Questa voce riguarda quella release di generazione vocale, distinta da comprensione audio Voxtral Small, trascrizione e successivi modelli di input in tempo reale.</p><p>Parlato espressivo e adattamento vocale</p><p>Il modello è progettato per catturare pause, ritmo, intonazione, accento e resa emotiva della voce di riferimento. La voce agisce come un’istruzione su come dovrebbe suonare il testo; la panoramica del produttore non richiede tag separati di prosodia o emozione né una trascrizione della registrazione di riferimento. Il testo di origine determina ciò che viene detto, mentre la reference audio guida l’interpretazione.</p><p>La panoramica descrive l’adattamento vocale da appena due–tre secondi di audio. La descrizione dell’architettura tratta prompt vocali da cinque a venticinque secondi. Queste affermazioni hanno ambiti diversi: un esempio di adattamento breve non impone di usare la reference più corta possibile. Scegli parlato chiaro che rappresenti stile e accento desiderati per il risultato finale.</p><p>La scheda rilasciata include venti voci preimpostate e adattamento a nuove voci. Il flusso vocale del produttore può usare un profilo vocale salvato o una clip di riferimento singola. Salvare un profilo permette di riusare la stessa reference vocale tra richieste vocali separate, mentre una clip singola la fornisce per l’attività attuale. Un profilo e una registrazione generata sono artefatti diversi.</p><p>Lingue e interpretazione tra lingue</p><p>La release supporta inglese, francese, spagnolo, tedesco, italiano, portoghese, neerlandese, arabo e hindi, con variazione dialettale, trasferimento vocale tra lingue e mescolanza linguistica descritti dal produttore. Per il risultato migliore, la guida vocale raccomanda di abbinare lingua della reference e del testo. Il trasferimento tra lingue può preservare l’accento della reference pronunciando il testo preparato in un’altra lingua supportata.</p><p>Un’attività concreta di narrazione può usare lo stesso stile vocale per una spiegazione in diverse lingue supportate, con ogni testo preparato per l’ascoltatore previsto. Una risposta di assistente vocale può usare un copione breve e conversazionale anziché leggere ad alta voce un documento non adattato. Il modello di sintesi vocale rende le parole preparate; qualsiasi fase di traduzione o scrittura della risposta che produce quelle parole è un passaggio separato.</p><p>Preparazione del testo</p><p>La guida vocale del produttore raccomanda testo pronunciabile. Scrivi numeri e simboli nella forma da pronunciare, affinché il modello non debba scegliere tra letture possibili. Un numero può essere quantità, orario o identificatore; definisci la formulazione parlata prevista prima della sintesi. Espandi le abbreviazioni quando conta la pronuncia, usando lettere separate quando quella è la lettura desiderata.</p><p>Evita formattazione ricca, emoji e caratteri speciali che non saranno resi come contenuto parlato. Prepara frasi complete con punteggiatura e formulazione necessarie all’interpretazione. La guida raccomanda prompt sotto 300 parole per i risultati migliori. È una raccomandazione di qualità, non una lunghezza massima rigida dichiarata dell’input.</p><p>Per una spiegazione procedurale, scrivi azione e condizione in una frase comprensibile all’ascolto. Per un annuncio, metti le informazioni importanti prima dei dettagli facoltativi. Per una risposta vocale, conserva la risposta fattuale e rimuovi formattazione solo visiva o notazioni della fonte che non dovrebbero essere pronunciate. Queste preparazioni rendono il copione stesso adatto all’audio prima che la reference ne determini lo stile.</p><p>Streaming, output e durata</p><p>Il produttore documenta consegna di base e in streaming e descrive generazione nativa fino a due minuti di audio. La scheda dei pesi rilasciati elenca inoltre inferenza batch per preparare più attività vocali. Le generazioni di servizio più lunghe usano interleaving anziché trattare un segmento nativo come illimitato. Per una narrazione più lunga, prepara sezioni coerenti e mantieni la preparazione di voce e testo compatibile con il flusso di consegna che gestisce la continuazione.</p><p>La scheda rilasciata specifica audio a 24 kHz e indica formati di output WAV, PCM, FLAC, MP3, AAC e Opus. La guida del servizio vocale tratta MP3 per consegna compressa, WAV per PCM non compresso, FLAC per compressione senza perdita e PCM o Opus per streaming. Scegli un formato supportato dal flusso collegato e adatto al lettore o passaggio di elaborazione. Selezione del formato e comportamento in streaming sono distinti dall’adattamento vocale stesso.</p><p>Architettura del modello e confini pratici</p><p>L’annuncio descrive un’architettura autoregressiva con flow matching, con una base di decoder Transformer da 3,4 miliardi di parametri, un Transformer acustico da 390 milioni di parametri e un codec audio neurale da 300 milioni di parametri. Il decoder predice contenuto semantico e il componente acustico produce rappresentazione del parlato, mentre il codec gestisce l’audio. Questi componenti spiegano l’etichetta approssimativa di modello 4B; non sono lingue di input aggiuntive o un diverso modello di generazione delle risposte.</p><p>Un output concreto è la registrazione sintetizzata o il flusso audio associato al copione preparato e alla voce scelta. Mantieni tali associazioni quando generi più sezioni, affinché l’applicazione possa salvare, riprodurre o assemblare il materiale corretto. Il modello produce audio, non una trascrizione, un vettore di ricerca semantica o una risposta fattuale appena scritta.</p><p>Preserva l’edizione vocale 2603, la lingua supportata e lo stile di riferimento. Le fonti lette forniscono l’indicazione nativa di due minuti e la raccomandazione di preparazione sotto 300 parole, ma non stabiliscono un limite massimo rigido separato di caratteri del testo o una durata totale della registrazione raccordata. Usa i requisiti effettivi di testo, voce e consegna per definire l’artefatto audio finito.</p>",
  "aboutText": "Voxtral TTS è il modello 4B di sintesi vocale di Mistral AI per generare audio parlato da testo e una voce di riferimento. La pagina del produttore identifica l’edizione 2603 come voxtral-mini-tts-2603, mentre la scheda dei pesi rilasciati è denominata Voxtral 4B TTS 2603. Questa voce riguarda quella release di generazione vocale, distinta da comprensione audio Voxtral Small, trascrizione e successivi modelli di input in tempo reale.\n\nParlato espressivo e adattamento vocale\n\nIl modello è progettato per catturare pause, ritmo, intonazione, accento e resa emotiva della voce di riferimento. La voce agisce come un’istruzione su come dovrebbe suonare il testo; la panoramica del produttore non richiede tag separati di prosodia o emozione né una trascrizione della registrazione di riferimento. Il testo di origine determina ciò che viene detto, mentre la reference audio guida l’interpretazione.\n\nLa panoramica descrive l’adattamento vocale da appena due–tre secondi di audio. La descrizione dell’architettura tratta prompt vocali da cinque a venticinque secondi. Queste affermazioni hanno ambiti diversi: un esempio di adattamento breve non impone di usare la reference più corta possibile. Scegli parlato chiaro che rappresenti stile e accento desiderati per il risultato finale.\n\nLa scheda rilasciata include venti voci preimpostate e adattamento a nuove voci. Il flusso vocale del produttore può usare un profilo vocale salvato o una clip di riferimento singola. Salvare un profilo permette di riusare la stessa reference vocale tra richieste vocali separate, mentre una clip singola la fornisce per l’attività attuale. Un profilo e una registrazione generata sono artefatti diversi.\n\nLingue e interpretazione tra lingue\n\nLa release supporta inglese, francese, spagnolo, tedesco, italiano, portoghese, neerlandese, arabo e hindi, con variazione dialettale, trasferimento vocale tra lingue e mescolanza linguistica descritti dal produttore. Per il risultato migliore, la guida vocale raccomanda di abbinare lingua della reference e del testo. Il trasferimento tra lingue può preservare l’accento della reference pronunciando il testo preparato in un’altra lingua supportata.\n\nUn’attività concreta di narrazione può usare lo stesso stile vocale per una spiegazione in diverse lingue supportate, con ogni testo preparato per l’ascoltatore previsto. Una risposta di assistente vocale può usare un copione breve e conversazionale anziché leggere ad alta voce un documento non adattato. Il modello di sintesi vocale rende le parole preparate; qualsiasi fase di traduzione o scrittura della risposta che produce quelle parole è un passaggio separato.\n\nPreparazione del testo\n\nLa guida vocale del produttore raccomanda testo pronunciabile. Scrivi numeri e simboli nella forma da pronunciare, affinché il modello non debba scegliere tra letture possibili. Un numero può essere quantità, orario o identificatore; definisci la formulazione parlata prevista prima della sintesi. Espandi le abbreviazioni quando conta la pronuncia, usando lettere separate quando quella è la lettura desiderata.\n\nEvita formattazione ricca, emoji e caratteri speciali che non saranno resi come contenuto parlato. Prepara frasi complete con punteggiatura e formulazione necessarie all’interpretazione. La guida raccomanda prompt sotto 300 parole per i risultati migliori. È una raccomandazione di qualità, non una lunghezza massima rigida dichiarata dell’input.\n\nPer una spiegazione procedurale, scrivi azione e condizione in una frase comprensibile all’ascolto. Per un annuncio, metti le informazioni importanti prima dei dettagli facoltativi. Per una risposta vocale, conserva la risposta fattuale e rimuovi formattazione solo visiva o notazioni della fonte che non dovrebbero essere pronunciate. Queste preparazioni rendono il copione stesso adatto all’audio prima che la reference ne determini lo stile.\n\nStreaming, output e durata\n\nIl produttore documenta consegna di base e in streaming e descrive generazione nativa fino a due minuti di audio. La scheda dei pesi rilasciati elenca inoltre inferenza batch per preparare più attività vocali. Le generazioni di servizio più lunghe usano interleaving anziché trattare un segmento nativo come illimitato. Per una narrazione più lunga, prepara sezioni coerenti e mantieni la preparazione di voce e testo compatibile con il flusso di consegna che gestisce la continuazione.\n\nLa scheda rilasciata specifica audio a 24 kHz e indica formati di output WAV, PCM, FLAC, MP3, AAC e Opus. La guida del servizio vocale tratta MP3 per consegna compressa, WAV per PCM non compresso, FLAC per compressione senza perdita e PCM o Opus per streaming. Scegli un formato supportato dal flusso collegato e adatto al lettore o passaggio di elaborazione. Selezione del formato e comportamento in streaming sono distinti dall’adattamento vocale stesso.\n\nArchitettura del modello e confini pratici\n\nL’annuncio descrive un’architettura autoregressiva con flow matching, con una base di decoder Transformer da 3,4 miliardi di parametri, un Transformer acustico da 390 milioni di parametri e un codec audio neurale da 300 milioni di parametri. Il decoder predice contenuto semantico e il componente acustico produce rappresentazione del parlato, mentre il codec gestisce l’audio. Questi componenti spiegano l’etichetta approssimativa di modello 4B; non sono lingue di input aggiuntive o un diverso modello di generazione delle risposte.\n\nUn output concreto è la registrazione sintetizzata o il flusso audio associato al copione preparato e alla voce scelta. Mantieni tali associazioni quando generi più sezioni, affinché l’applicazione possa salvare, riprodurre o assemblare il materiale corretto. Il modello produce audio, non una trascrizione, un vettore di ricerca semantica o una risposta fattuale appena scritta.\n\nPreserva l’edizione vocale 2603, la lingua supportata e lo stile di riferimento. Le fonti lette forniscono l’indicazione nativa di due minuti e la raccomandazione di preparazione sotto 300 parole, ma non stabiliscono un limite massimo rigido separato di caratteri del testo o una durata totale della registrazione raccordata. Usa i requisiti effettivi di testo, voce e consegna per definire l’artefatto audio finito.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "f336e94db1678091aa0529c6436850ebbdb13e91544280aec95fc63be9cdc9da",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "it",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Mistral: Voxtral Mini TTS</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Chiudi\">×</button></div><div class=\"idline\"><span>Mistral /</span><code>mistralai/voxtral-mini-tts-2603</code><button type=\"button\" id=\"copy-id\">Copia ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Sezioni della scheda del modello\"><button type=\"button\" data-card-jump=\"overview\">Introduzione</button><button type=\"button\" data-card-jump=\"methods\">Input e metodi</button><button type=\"button\" data-card-jump=\"pricing\">Tariffe</button><button type=\"button\" data-card-jump=\"examples\">Esempi</button><button type=\"button\" data-card-jump=\"results\">Risultati</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metodi API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|speech|/v1/audio/speech|mistralai%2Fvoxtral-mini-tts-2603\">Sintesi vocale</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Introduzione</h3><p class=\"mdesc-full\">Voxtral TTS è il modello 4B di generazione vocale di Mistral AI con adattamento vocale da reference in nove lingue. Trasforma testo preparato in audio espressivo, supporta prompt vocali riutilizzabili o singoli e streaming e produce output a 24 kHz nei formati audio documentati.</p><dl class=\"card-io\" data-card-io><div><dt>Input accettati</dt><dd>Testo</dd></div><div><dt>Risultati</dt><dd>Audio</dd></div></dl><details class=\"card-about\"><summary>Informazioni sul modello</summary><p class=\"note-s\" data-model-method-boundary>Questa descrizione illustra le funzionalità del modello. Gli input, gli output e le opzioni disponibili in Ailoot per il metodo selezionato sono elencati di seguito.</p><div class=\"mabout\" id=\"m-about\"><p>Voxtral TTS è il modello 4B di sintesi vocale di Mistral AI per generare audio parlato da testo e una voce di riferimento. La pagina del produttore identifica l’edizione 2603 come voxtral-mini-tts-2603, mentre la scheda dei pesi rilasciati è denominata Voxtral 4B TTS 2603. Questa voce riguarda quella release di generazione vocale, distinta da comprensione audio Voxtral Small, trascrizione e successivi modelli di input in tempo reale.</p><p>Parlato espressivo e adattamento vocale</p><p>Il modello è progettato per catturare pause, ritmo, intonazione, accento e resa emotiva della voce di riferimento. La voce agisce come un’istruzione su come dovrebbe suonare il testo; la panoramica del produttore non richiede tag separati di prosodia o emozione né una trascrizione della registrazione di riferimento. Il testo di origine determina ciò che viene detto, mentre la reference audio guida l’interpretazione.</p><p>La panoramica descrive l’adattamento vocale da appena due–tre secondi di audio. La descrizione dell’architettura tratta prompt vocali da cinque a venticinque secondi. Queste affermazioni hanno ambiti diversi: un esempio di adattamento breve non impone di usare la reference più corta possibile. Scegli parlato chiaro che rappresenti stile e accento desiderati per il risultato finale.</p><p>La scheda rilasciata include venti voci preimpostate e adattamento a nuove voci. Il flusso vocale del produttore può usare un profilo vocale salvato o una clip di riferimento singola. Salvare un profilo permette di riusare la stessa reference vocale tra richieste vocali separate, mentre una clip singola la fornisce per l’attività attuale. Un profilo e una registrazione generata sono artefatti diversi.</p><p>Lingue e interpretazione tra lingue</p><p>La release supporta inglese, francese, spagnolo, tedesco, italiano, portoghese, neerlandese, arabo e hindi, con variazione dialettale, trasferimento vocale tra lingue e mescolanza linguistica descritti dal produttore. Per il risultato migliore, la guida vocale raccomanda di abbinare lingua della reference e del testo. Il trasferimento tra lingue può preservare l’accento della reference pronunciando il testo preparato in un’altra lingua supportata.</p><p>Un’attività concreta di narrazione può usare lo stesso stile vocale per una spiegazione in diverse lingue supportate, con ogni testo preparato per l’ascoltatore previsto. Una risposta di assistente vocale può usare un copione breve e conversazionale anziché leggere ad alta voce un documento non adattato. Il modello di sintesi vocale rende le parole preparate; qualsiasi fase di traduzione o scrittura della risposta che produce quelle parole è un passaggio separato.</p><p>Preparazione del testo</p><p>La guida vocale del produttore raccomanda testo pronunciabile. Scrivi numeri e simboli nella forma da pronunciare, affinché il modello non debba scegliere tra letture possibili. Un numero può essere quantità, orario o identificatore; definisci la formulazione parlata prevista prima della sintesi. Espandi le abbreviazioni quando conta la pronuncia, usando lettere separate quando quella è la lettura desiderata.</p><p>Evita formattazione ricca, emoji e caratteri speciali che non saranno resi come contenuto parlato. Prepara frasi complete con punteggiatura e formulazione necessarie all’interpretazione. La guida raccomanda prompt sotto 300 parole per i risultati migliori. È una raccomandazione di qualità, non una lunghezza massima rigida dichiarata dell’input.</p><p>Per una spiegazione procedurale, scrivi azione e condizione in una frase comprensibile all’ascolto. Per un annuncio, metti le informazioni importanti prima dei dettagli facoltativi. Per una risposta vocale, conserva la risposta fattuale e rimuovi formattazione solo visiva o notazioni della fonte che non dovrebbero essere pronunciate. Queste preparazioni rendono il copione stesso adatto all’audio prima che la reference ne determini lo stile.</p><p>Streaming, output e durata</p><p>Il produttore documenta consegna di base e in streaming e descrive generazione nativa fino a due minuti di audio. La scheda dei pesi rilasciati elenca inoltre inferenza batch per preparare più attività vocali. Le generazioni di servizio più lunghe usano interleaving anziché trattare un segmento nativo come illimitato. Per una narrazione più lunga, prepara sezioni coerenti e mantieni la preparazione di voce e testo compatibile con il flusso di consegna che gestisce la continuazione.</p><p>La scheda rilasciata specifica audio a 24 kHz e indica formati di output WAV, PCM, FLAC, MP3, AAC e Opus. La guida del servizio vocale tratta MP3 per consegna compressa, WAV per PCM non compresso, FLAC per compressione senza perdita e PCM o Opus per streaming. Scegli un formato supportato dal flusso collegato e adatto al lettore o passaggio di elaborazione. Selezione del formato e comportamento in streaming sono distinti dall’adattamento vocale stesso.</p><p>Architettura del modello e confini pratici</p><p>L’annuncio descrive un’architettura autoregressiva con flow matching, con una base di decoder Transformer da 3,4 miliardi di parametri, un Transformer acustico da 390 milioni di parametri e un codec audio neurale da 300 milioni di parametri. Il decoder predice contenuto semantico e il componente acustico produce rappresentazione del parlato, mentre il codec gestisce l’audio. Questi componenti spiegano l’etichetta approssimativa di modello 4B; non sono lingue di input aggiuntive o un diverso modello di generazione delle risposte.</p><p>Un output concreto è la registrazione sintetizzata o il flusso audio associato al copione preparato e alla voce scelta. Mantieni tali associazioni quando generi più sezioni, affinché l’applicazione possa salvare, riprodurre o assemblare il materiale corretto. Il modello produce audio, non una trascrizione, un vettore di ricerca semantica o una risposta fattuale appena scritta.</p><p>Preserva l’edizione vocale 2603, la lingua supportata e lo stile di riferimento. Le fonti lette forniscono l’indicazione nativa di due minuti e la raccomandazione di preparazione sotto 300 parole, ma non stabiliscono un limite massimo rigido separato di caratteri del testo o una durata totale della registrazione raccordata. Usa i requisiti effettivi di testo, voce e consegna per definire l’artefatto audio finito.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponibile in Ailoot · input e metodi</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Sintesi vocale</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Tipi di input</dt><dd><code>text</code></dd></div><div><dt>Tipi di output</dt><dd><code>audio</code></dd></div><div><dt>Formato di output</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Campo</th><th>Tipo</th><th>Requisito</th><th>Valori e limiti</th><th>Predefinito</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>mistralai/voxtral-mini-tts-2603</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>Lunghezza minima: 1</div><div>Unità: caratteri Unicode</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>en_paul_sad, en_paul_neutral, en_paul_happy, en_paul_frustrated, en_paul_excited, en_paul_confident, en_paul_cheerful, en_paul_angry, gb_oliver_neutral, gb_oliver_sad, gb_oliver_excited, gb_oliver_curious, gb_oliver_confident, gb_oliver_cheerful, gb_oliver_angry, gb_jane_sarcasm, gb_jane_confused, gb_jane_shameful, gb_jane_sad, gb_jane_neutral, gb_jane_jealousy, gb_jane_frustrated, gb_jane_curious, gb_jane_confident, fr_marie_sad, fr_marie_neutral, fr_marie_happy, fr_marie_excited, fr_marie_curious, fr_marie_angry</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obbligatorio</td><td data-cell-label=\"Valori e limiti\"><span class=\"card-cell-label\">Valori e limiti</span><div>mp3</div></td><td data-cell-label=\"Predefinito\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predefinito</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinazioni di materiali in input</summary><p class=\"note-s\"><b>text_to_speech</b> · Obbligatorio: input</p></details><details class=\"note-s\" data-method-contract><summary>Parametri e ciclo di vita del metodo</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametro</th><th>Contratto</th></tr></thead><tbody><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>content_type</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>application/json</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>required</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>model, input, voice, response_format</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>voice_ids</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>en_paul_sad, en_paul_neutral, en_paul_happy, en_paul_frustrated, en_paul_excited, en_paul_confident, en_paul_cheerful, en_paul_angry, gb_oliver_neutral, gb_oliver_sad, gb_oliver_excited, gb_oliver_curious, gb_oliver_confident, gb_oliver_cheerful, gb_oliver_angry, gb_jane_sarcasm, gb_jane_confused, gb_jane_shameful, gb_jane_sad, gb_jane_neutral, gb_jane_jealousy, gb_jane_frustrated, gb_jane_curious, gb_jane_confident, fr_marie_sad, fr_marie_neutral, fr_marie_happy, fr_marie_excited, fr_marie_curious, fr_marie_angry</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>response_format</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>mp3</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>max_input_characters</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>null</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>other_options</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>false</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>input</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>testo UTF-8 esatto; conteggio dei caratteri Unicode senza normalizzazione</td></tr><tr><th data-cell-label=\"Parametro\" scope=\"row\"><span class=\"card-cell-label\">Parametro</span><code>material_types</code></th><td data-cell-label=\"Contratto\"><span class=\"card-cell-label\">Contratto</span>text</td></tr></tbody></table></div><p>Ciclo di vita: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id effettivamente restituito o record della libreria multimediale</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Seleziona la voce esatta dal profilo di questo modello.</p><p class=\"note-s\">I caratteri in ingresso e i secondi di audio sono unità di misurazione diverse.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tariffe</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Le tariffe non aggiungono opzioni alla richiesta. I parametri supportati sono elencati nel metodo selezionato.</p><dl data-price-conditions><dt>Modalità rapida</dt><dd>Non specificato <span class=\"note-s\">Quando è selezionata la modalità rapida</span></dd><dt>Modalità flex</dt><dd>Non specificato <span class=\"note-s\">Quando è selezionata la modalità flex</span></dd><dt>Sforzo massimo di ragionamento</dt><dd>Non specificato <span class=\"note-s\">Quando lo sforzo massimo di ragionamento usa l&#39;adeguamento predefinito (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tariffe Ailoot</h4><h4>Prezzi per configurazione</h4><p class=\"note-s\">Associa ogni costo alle condizioni indicate. Usa una sola tariffa per ogni insieme di configurazioni alternative.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configurazione</th><th>Listino delle tariffe</th><th>Quantità fatturabile</th><th>Unità di fatturazione</th><th>Costo</th></tr></thead><tbody><tr><th data-cell-label=\"Configurazione\" scope=\"row\"><span class=\"card-cell-label\">Configurazione</span>Tariffe base dei token</th><td data-cell-label=\"Listino delle tariffe\"><span class=\"card-cell-label\">Listino delle tariffe</span>Tariffa base</td><td data-cell-label=\"Quantità fatturabile\"><span class=\"card-cell-label\">Quantità fatturabile</span>—</td><td data-cell-label=\"Unità di fatturazione\"><span class=\"card-cell-label\">Unità di fatturazione</span>—</td><td data-cell-label=\"Costo\"><span class=\"card-cell-label\">Costo</span><div><span>Input · Token in input</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Output · Token in output</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Lettura dalla cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Scrittura nella cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Scrittura nella cache, 1 ora</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Configurazione\" scope=\"row\"><span class=\"card-cell-label\">Configurazione</span>Ultra</th><td data-cell-label=\"Listino delle tariffe\"><span class=\"card-cell-label\">Listino delle tariffe</span>—</td><td data-cell-label=\"Quantità fatturabile\"><span class=\"card-cell-label\">Quantità fatturabile</span>Ogni punto di codice Unicode conta come un carattere, inclusi i caratteri Han.</td><td data-cell-label=\"Unità di fatturazione\"><span class=\"card-cell-label\">Unità di fatturazione</span>per 1K caratteri in input</td><td data-cell-label=\"Costo\"><span class=\"card-cell-label\">Costo</span><div><span>Input · carattere in ingresso</span> <b>$0.032</b> <span class=\"price-unit\">per 1K caratteri in input</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>Dettagli della tariffa di riferimento</h4><p class=\"note-s\">I listini di riferimento del modello non modificano la selezione del metodo, i preventivi o gli addebiti. Gli addebiti attivi usano le tariffe del metodo Ailoot selezionato.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Mistral: Voxtral Mini TTS</summary><h4>Prezzi per configurazione</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configurazione</th><th>Condizioni di fatturazione</th><th>Costo</th></tr></thead><tbody><tr><th data-cell-label=\"Configurazione\" scope=\"row\"><span class=\"card-cell-label\">Configurazione</span>Mistral: Voxtral Mini TTS · Configurazione predefinita</th><td data-cell-label=\"Condizioni di fatturazione\"><span class=\"card-cell-label\">Condizioni di fatturazione</span>Configurazione predefinita</td><td data-cell-label=\"Costo\"><span class=\"card-cell-label\">Costo</span><div><span>Input · Caratteri in input</span> <b>0,000032 USD</b> <span class=\"price-unit\">per carattere in input</span></div></td></tr></tbody></table></div></details></div><p class=\"note-s\">Ailoot prenota un importo stimato prima di una richiesta. Dopo il risultato, addebita il costo finale in base all’utilizzo misurato. Per lo streaming, l’addebito usa il record finale di utilizzo. <a href=\"/docs/it/billing/reserve/\">Come funzionano la prenotazione e l’addebito finale →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esempi di richieste</h3><h4>Ailoot Ultra · Sintesi vocale</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianti di codice\"><button class=\"cg-tab\" id=\"model-code-1943-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1943-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copia il codice\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1943-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1943-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}&quot;\nexport AILOOT_VOICE_ID\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;mistralai/voxtral-mini-tts-2603&quot;, &quot;input&quot;: &quot;Good afternoon! This is a short voice take.&quot;}&#39;)\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nallowed=json.loads(&#39;[&quot;en_paul_sad&quot;, &quot;en_paul_neutral&quot;, &quot;en_paul_happy&quot;, &quot;en_paul_frustrated&quot;, &quot;en_paul_excited&quot;, &quot;en_paul_confident&quot;, &quot;en_paul_cheerful&quot;, &quot;en_paul_angry&quot;, &quot;gb_oliver_neutral&quot;, &quot;gb_oliver_sad&quot;, &quot;gb_oliver_excited&quot;, &quot;gb_oliver_curious&quot;, &quot;gb_oliver_confident&quot;, &quot;gb_oliver_cheerful&quot;, &quot;gb_oliver_angry&quot;, &quot;gb_jane_sarcasm&quot;, &quot;gb_jane_confused&quot;, &quot;gb_jane_shameful&quot;, &quot;gb_jane_sad&quot;, &quot;gb_jane_neutral&quot;, &quot;gb_jane_jealousy&quot;, &quot;gb_jane_frustrated&quot;, &quot;gb_jane_curious&quot;, &quot;gb_jane_confident&quot;, &quot;fr_marie_sad&quot;, &quot;fr_marie_neutral&quot;, &quot;fr_marie_happy&quot;, &quot;fr_marie_excited&quot;, &quot;fr_marie_curious&quot;, &quot;fr_marie_angry&quot;]&#39;)\nif voice not in allowed: raise SystemExit(&quot;Choose an accepted voice ID from this exact model profile&quot;)\np[&quot;voice&quot;]=voice\np[&quot;response_format&quot;]=&quot;mp3&quot;\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Ricevi e salva i risultati</h3><h4>Ailoot Ultra · Sintesi vocale</h4><p class=\"note-s\">mp3</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>Altre letture di contenuto</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Varianti di codice\"><button class=\"cg-tab\" id=\"model-code-1944-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1944-panel-0\" aria-selected=\"true\" tabindex=\"0\">Libreria multimediale</button><button class=\"cg-tab\" id=\"model-code-1944-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1944-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Stato dell’attività</button><button class=\"cg-tab\" id=\"model-code-1944-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1944-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Dettagli delle risorse</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copia il codice\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1944-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1944-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-assets.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1944-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1944-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_MEDIA_TASK_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/tasks/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-task.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-task.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1944-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1944-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_ASSET_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/assets/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-asset.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-asset.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Conserva tutti i risultati completati</h5><p class=\"note-s\">Conserva ogni risposta, file e parte di contenuto restituiti per intero.</p><p class=\"note-s\">Conserva il risultato binario completo e gli header. Se vengono restituiti JSON o più output, conserva ogni elemento data e recupera ogni URL firmato effettivo della risorsa.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Se occorre verificare la risposta originale</h5><p class=\"note-s\">Conserva operation_id/X-Client-Request-ID originale per la riconciliazione senza reinvio; non esiste una rotta dedicata al polling audio.</p></div><details class=\"card-about\" data-output-fields><summary>Campi della risposta</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Campo</th><th>Tipo</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>bytes</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Errori e passaggi successivi</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Risposta</th><th>Condizione</th><th>Passaggio successivo</th></tr></thead><tbody><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>Campi obbligatori, rappresentazione del materiale o valore del parametro non validi</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Correggi i campi indicati prima di una nuova richiesta di creazione.</td></tr><tr><th data-cell-label=\"Risposta\" scope=\"row\"><span class=\"card-cell-label\">Risposta</span><code>server_error</code></th><td data-cell-label=\"Condizione\"><span class=\"card-cell-label\">Condizione</span>La risposta restituita indica che l&#39;operazione o il risultato richiede una verifica</td><td data-cell-label=\"Passaggio successivo\"><span class=\"card-cell-label\">Passaggio successivo</span>Conserva l&#39;ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l&#39;operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias del modello</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=mistralai%2Fvoxtral-mini-tts-2603&amp;route=Ultra&amp;caller=mistralai%2Fvoxtral-mini-tts-2603&amp;fmt=speech\"><code>mistralai/voxtral-mini-tts-2603</code></a></span></p><h4>Alias dei percorsi dei metodi</h4><p class=\"note-s\">Usa i percorsi dei metodi indicati sopra.</p><h4>ID di chiamata correlati</h4><p class=\"note-s\"><a href=\"#m=mistralai%2Fvoxtral-mini-tts-2603&amp;route=Ultra&amp;caller=mistralai%2Fvoxtral-mini-tts-2603&amp;fmt=speech\"><code>mistralai/voxtral-mini-tts-2603</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "mistralai/voxtral-mini-tts-2603",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "mistralai/voxtral-mini-tts-2603",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|mistralai%2Fvoxtral-mini-tts-2603",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Campi obbligatori, rappresentazione del materiale o valore del parametro non validi",
                "http_status": 400,
                "recovery": "Correggi i campi indicati prima di una nuova richiesta di creazione.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La risposta restituita indica che l'operazione o il risultato richiede una verifica",
                "http_status": null,
                "recovery": "Conserva l'ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l'operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva operation_id/X-Client-Request-ID originale per la riconciliazione senza reinvio; non esiste una rotta dedicata al polling audio."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Conserva il risultato binario completo e gli header. Se vengono restituiti JSON o più output, conserva ogni elemento data e recupera ogni URL firmato effettivo della risorsa.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mistralai/voxtral-mini-tts-2603"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "caratteri Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "en_paul_sad",
                  "en_paul_neutral",
                  "en_paul_happy",
                  "en_paul_frustrated",
                  "en_paul_excited",
                  "en_paul_confident",
                  "en_paul_cheerful",
                  "en_paul_angry",
                  "gb_oliver_neutral",
                  "gb_oliver_sad",
                  "gb_oliver_excited",
                  "gb_oliver_curious",
                  "gb_oliver_confident",
                  "gb_oliver_cheerful",
                  "gb_oliver_angry",
                  "gb_jane_sarcasm",
                  "gb_jane_confused",
                  "gb_jane_shameful",
                  "gb_jane_sad",
                  "gb_jane_neutral",
                  "gb_jane_jealousy",
                  "gb_jane_frustrated",
                  "gb_jane_curious",
                  "gb_jane_confident",
                  "fr_marie_sad",
                  "fr_marie_neutral",
                  "fr_marie_happy",
                  "fr_marie_excited",
                  "fr_marie_curious",
                  "fr_marie_angry"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "Seleziona la voce esatta dal profilo di questo modello.",
            "I caratteri in ingresso e i secondi di audio sono unità di misurazione diverse."
          ],
          "input": {
            "content_type": "application/json",
            "input": "testo UTF-8 esatto; conteggio dei caratteri Unicode senza normalizzazione",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "en_paul_sad",
              "en_paul_neutral",
              "en_paul_happy",
              "en_paul_frustrated",
              "en_paul_excited",
              "en_paul_confident",
              "en_paul_cheerful",
              "en_paul_angry",
              "gb_oliver_neutral",
              "gb_oliver_sad",
              "gb_oliver_excited",
              "gb_oliver_curious",
              "gb_oliver_confident",
              "gb_oliver_cheerful",
              "gb_oliver_angry",
              "gb_jane_sarcasm",
              "gb_jane_confused",
              "gb_jane_shameful",
              "gb_jane_sad",
              "gb_jane_neutral",
              "gb_jane_jealousy",
              "gb_jane_frustrated",
              "gb_jane_curious",
              "gb_jane_confident",
              "fr_marie_sad",
              "fr_marie_neutral",
              "fr_marie_happy",
              "fr_marie_excited",
              "fr_marie_curious",
              "fr_marie_angry"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id effettivamente restituito o record della libreria multimediale",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.032000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.000032",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "20ebfeb88167b8c33fea",
            "label": "Mistral: Voxtral Mini TTS",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Configurazione predefinita"
                },
                "label": "Mistral: Voxtral Mini TTS · Configurazione predefinita",
                "units": [
                  {
                    "amount": "0.000032",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "3ceae9e888e4cc9cd6e6009e",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"mistralai/voxtral-mini-tts-2603\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"en_paul_sad\", \"en_paul_neutral\", \"en_paul_happy\", \"en_paul_frustrated\", \"en_paul_excited\", \"en_paul_confident\", \"en_paul_cheerful\", \"en_paul_angry\", \"gb_oliver_neutral\", \"gb_oliver_sad\", \"gb_oliver_excited\", \"gb_oliver_curious\", \"gb_oliver_confident\", \"gb_oliver_cheerful\", \"gb_oliver_angry\", \"gb_jane_sarcasm\", \"gb_jane_confused\", \"gb_jane_shameful\", \"gb_jane_sad\", \"gb_jane_neutral\", \"gb_jane_jealousy\", \"gb_jane_frustrated\", \"gb_jane_curious\", \"gb_jane_confident\", \"fr_marie_sad\", \"fr_marie_neutral\", \"fr_marie_happy\", \"fr_marie_excited\", \"fr_marie_curious\", \"fr_marie_angry\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_character": 3.2e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.032000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.000032",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "mistralai/voxtral-mini-tts-2603",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.032000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.000032",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    }
  ],
  "model_id": "mistralai/voxtral-mini-tts-2603",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "53b60976d520c12c4c7da0cb46e166d9c0dad8c4b8475917ab309adb43c079ba",
    "input_html_sha256": "aa743752c325ab4a0b12b38bd8fd7e0530306a47dffd5bba760c874f2366919a",
    "private_audit_sha256": "491b94d8ce3d4718e182f5cd7796903ddc95809c4cd3bb53adcb3abe1f21eef9",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/it/mistralai-voxtral-mini-tts-2603/",
    "description": "Voxtral TTS è il modello 4B di generazione vocale di Mistral AI con adattamento vocale da reference in nove lingue. Trasforma testo preparato in audio espressivo, supporta prompt vocali riutilizzabili o singoli e streaming e produce output a 24 kHz nei formati audio documentati.",
    "locale": "it",
    "md_url": "https://ailoot.ai/models/it/mistralai-voxtral-mini-tts-2603/index.md",
    "title": "Mistral: Voxtral Mini TTS — Ailoot",
    "url": "https://ailoot.ai/models/it/mistralai-voxtral-mini-tts-2603/"
  },
  "rawModel": {
    "about": "Voxtral TTS è il modello 4B di sintesi vocale di Mistral AI per generare audio parlato da testo e una voce di riferimento. La pagina del produttore identifica l’edizione 2603 come voxtral-mini-tts-2603, mentre la scheda dei pesi rilasciati è denominata Voxtral 4B TTS 2603. Questa voce riguarda quella release di generazione vocale, distinta da comprensione audio Voxtral Small, trascrizione e successivi modelli di input in tempo reale.\n\nParlato espressivo e adattamento vocale\n\nIl modello è progettato per catturare pause, ritmo, intonazione, accento e resa emotiva della voce di riferimento. La voce agisce come un’istruzione su come dovrebbe suonare il testo; la panoramica del produttore non richiede tag separati di prosodia o emozione né una trascrizione della registrazione di riferimento. Il testo di origine determina ciò che viene detto, mentre la reference audio guida l’interpretazione.\n\nLa panoramica descrive l’adattamento vocale da appena due–tre secondi di audio. La descrizione dell’architettura tratta prompt vocali da cinque a venticinque secondi. Queste affermazioni hanno ambiti diversi: un esempio di adattamento breve non impone di usare la reference più corta possibile. Scegli parlato chiaro che rappresenti stile e accento desiderati per il risultato finale.\n\nLa scheda rilasciata include venti voci preimpostate e adattamento a nuove voci. Il flusso vocale del produttore può usare un profilo vocale salvato o una clip di riferimento singola. Salvare un profilo permette di riusare la stessa reference vocale tra richieste vocali separate, mentre una clip singola la fornisce per l’attività attuale. Un profilo e una registrazione generata sono artefatti diversi.\n\nLingue e interpretazione tra lingue\n\nLa release supporta inglese, francese, spagnolo, tedesco, italiano, portoghese, neerlandese, arabo e hindi, con variazione dialettale, trasferimento vocale tra lingue e mescolanza linguistica descritti dal produttore. Per il risultato migliore, la guida vocale raccomanda di abbinare lingua della reference e del testo. Il trasferimento tra lingue può preservare l’accento della reference pronunciando il testo preparato in un’altra lingua supportata.\n\nUn’attività concreta di narrazione può usare lo stesso stile vocale per una spiegazione in diverse lingue supportate, con ogni testo preparato per l’ascoltatore previsto. Una risposta di assistente vocale può usare un copione breve e conversazionale anziché leggere ad alta voce un documento non adattato. Il modello di sintesi vocale rende le parole preparate; qualsiasi fase di traduzione o scrittura della risposta che produce quelle parole è un passaggio separato.\n\nPreparazione del testo\n\nLa guida vocale del produttore raccomanda testo pronunciabile. Scrivi numeri e simboli nella forma da pronunciare, affinché il modello non debba scegliere tra letture possibili. Un numero può essere quantità, orario o identificatore; definisci la formulazione parlata prevista prima della sintesi. Espandi le abbreviazioni quando conta la pronuncia, usando lettere separate quando quella è la lettura desiderata.\n\nEvita formattazione ricca, emoji e caratteri speciali che non saranno resi come contenuto parlato. Prepara frasi complete con punteggiatura e formulazione necessarie all’interpretazione. La guida raccomanda prompt sotto 300 parole per i risultati migliori. È una raccomandazione di qualità, non una lunghezza massima rigida dichiarata dell’input.\n\nPer una spiegazione procedurale, scrivi azione e condizione in una frase comprensibile all’ascolto. Per un annuncio, metti le informazioni importanti prima dei dettagli facoltativi. Per una risposta vocale, conserva la risposta fattuale e rimuovi formattazione solo visiva o notazioni della fonte che non dovrebbero essere pronunciate. Queste preparazioni rendono il copione stesso adatto all’audio prima che la reference ne determini lo stile.\n\nStreaming, output e durata\n\nIl produttore documenta consegna di base e in streaming e descrive generazione nativa fino a due minuti di audio. La scheda dei pesi rilasciati elenca inoltre inferenza batch per preparare più attività vocali. Le generazioni di servizio più lunghe usano interleaving anziché trattare un segmento nativo come illimitato. Per una narrazione più lunga, prepara sezioni coerenti e mantieni la preparazione di voce e testo compatibile con il flusso di consegna che gestisce la continuazione.\n\nLa scheda rilasciata specifica audio a 24 kHz e indica formati di output WAV, PCM, FLAC, MP3, AAC e Opus. La guida del servizio vocale tratta MP3 per consegna compressa, WAV per PCM non compresso, FLAC per compressione senza perdita e PCM o Opus per streaming. Scegli un formato supportato dal flusso collegato e adatto al lettore o passaggio di elaborazione. Selezione del formato e comportamento in streaming sono distinti dall’adattamento vocale stesso.\n\nArchitettura del modello e confini pratici\n\nL’annuncio descrive un’architettura autoregressiva con flow matching, con una base di decoder Transformer da 3,4 miliardi di parametri, un Transformer acustico da 390 milioni di parametri e un codec audio neurale da 300 milioni di parametri. Il decoder predice contenuto semantico e il componente acustico produce rappresentazione del parlato, mentre il codec gestisce l’audio. Questi componenti spiegano l’etichetta approssimativa di modello 4B; non sono lingue di input aggiuntive o un diverso modello di generazione delle risposte.\n\nUn output concreto è la registrazione sintetizzata o il flusso audio associato al copione preparato e alla voce scelta. Mantieni tali associazioni quando generi più sezioni, affinché l’applicazione possa salvare, riprodurre o assemblare il materiale corretto. Il modello produce audio, non una trascrizione, un vettore di ricerca semantica o una risposta fattuale appena scritta.\n\nPreserva l’edizione vocale 2603, la lingua supportata e lo stile di riferimento. Le fonti lette forniscono l’indicazione nativa di due minuti e la raccomandazione di preparazione sotto 300 parole, ma non stabiliscono un limite massimo rigido separato di caratteri del testo o una durata totale della registrazione raccordata. Usa i requisiti effettivi di testo, voce e consegna per definire l’artefatto audio finito.",
    "alias_of": null,
    "aliases": [],
    "author": "Mistral",
    "available": null,
    "canonical_model": "mistralai/voxtral-mini-tts-2603",
    "capabilities": {
      "context_length": 4096,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.032000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.000032",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ],
        "summary": "Tutte le tariffe della configurazione sono riportate nei dettagli."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "mistralai/voxtral-mini-tts-2603",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Campi obbligatori, rappresentazione del materiale o valore del parametro non validi",
                "http_status": 400,
                "recovery": "Correggi i campi indicati prima di una nuova richiesta di creazione.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La risposta restituita indica che l'operazione o il risultato richiede una verifica",
                "http_status": null,
                "recovery": "Conserva l'ID originale di operazione/task restituito, gli header della richiesta e la risposta; continua a leggere l'operazione originale tramite le modalità supportate. Non reinviare la richiesta di creazione.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva operation_id/X-Client-Request-ID originale per la riconciliazione senza reinvio; non esiste una rotta dedicata al polling audio."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Conserva il risultato binario completo e gli header. Se vengono restituiti JSON o più output, conserva ogni elemento data e recupera ogni URL firmato effettivo della risorsa.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mistralai/voxtral-mini-tts-2603"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "caratteri Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "en_paul_sad",
                  "en_paul_neutral",
                  "en_paul_happy",
                  "en_paul_frustrated",
                  "en_paul_excited",
                  "en_paul_confident",
                  "en_paul_cheerful",
                  "en_paul_angry",
                  "gb_oliver_neutral",
                  "gb_oliver_sad",
                  "gb_oliver_excited",
                  "gb_oliver_curious",
                  "gb_oliver_confident",
                  "gb_oliver_cheerful",
                  "gb_oliver_angry",
                  "gb_jane_sarcasm",
                  "gb_jane_confused",
                  "gb_jane_shameful",
                  "gb_jane_sad",
                  "gb_jane_neutral",
                  "gb_jane_jealousy",
                  "gb_jane_frustrated",
                  "gb_jane_curious",
                  "gb_jane_confident",
                  "fr_marie_sad",
                  "fr_marie_neutral",
                  "fr_marie_happy",
                  "fr_marie_excited",
                  "fr_marie_curious",
                  "fr_marie_angry"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "Seleziona la voce esatta dal profilo di questo modello.",
            "I caratteri in ingresso e i secondi di audio sono unità di misurazione diverse."
          ],
          "input": {
            "content_type": "application/json",
            "input": "testo UTF-8 esatto; conteggio dei caratteri Unicode senza normalizzazione",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "en_paul_sad",
              "en_paul_neutral",
              "en_paul_happy",
              "en_paul_frustrated",
              "en_paul_excited",
              "en_paul_confident",
              "en_paul_cheerful",
              "en_paul_angry",
              "gb_oliver_neutral",
              "gb_oliver_sad",
              "gb_oliver_excited",
              "gb_oliver_curious",
              "gb_oliver_confident",
              "gb_oliver_cheerful",
              "gb_oliver_angry",
              "gb_jane_sarcasm",
              "gb_jane_confused",
              "gb_jane_shameful",
              "gb_jane_sad",
              "gb_jane_neutral",
              "gb_jane_jealousy",
              "gb_jane_frustrated",
              "gb_jane_curious",
              "gb_jane_confident",
              "fr_marie_sad",
              "fr_marie_neutral",
              "fr_marie_happy",
              "fr_marie_excited",
              "fr_marie_curious",
              "fr_marie_angry"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id effettivamente restituito o record della libreria multimediale",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.032000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.000032",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "20ebfeb88167b8c33fea",
            "label": "Mistral: Voxtral Mini TTS",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Configurazione predefinita"
                },
                "label": "Mistral: Voxtral Mini TTS · Configurazione predefinita",
                "units": [
                  {
                    "amount": "0.000032",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "3ceae9e888e4cc9cd6e6009e",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"mistralai/voxtral-mini-tts-2603\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"en_paul_sad\", \"en_paul_neutral\", \"en_paul_happy\", \"en_paul_frustrated\", \"en_paul_excited\", \"en_paul_confident\", \"en_paul_cheerful\", \"en_paul_angry\", \"gb_oliver_neutral\", \"gb_oliver_sad\", \"gb_oliver_excited\", \"gb_oliver_curious\", \"gb_oliver_confident\", \"gb_oliver_cheerful\", \"gb_oliver_angry\", \"gb_jane_sarcasm\", \"gb_jane_confused\", \"gb_jane_shameful\", \"gb_jane_sad\", \"gb_jane_neutral\", \"gb_jane_jealousy\", \"gb_jane_frustrated\", \"gb_jane_curious\", \"gb_jane_confident\", \"fr_marie_sad\", \"fr_marie_neutral\", \"fr_marie_happy\", \"fr_marie_excited\", \"fr_marie_curious\", \"fr_marie_angry\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_character": 3.2e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.032000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.000032",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "mistralai/voxtral-mini-tts-2603",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.032000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.000032",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "mistralai/voxtral-mini-tts-2603",
        "request_model_id": "mistralai/voxtral-mini-tts-2603",
        "route_label": "Ultra"
      }
    ],
    "name": "Mistral: Voxtral Mini TTS",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "hosted_reference"
        },
        "dimensions": {
          "variant": null
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000032",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "variant": null
            },
            "key": "pricing.prompt",
            "label": "prompt",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_character"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_not_separately_charged_output",
            "conditions": {
              "variant": null
            },
            "key": "pricing.completion",
            "label": "completion",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "not_separately_charged_output"
          }
        ]
      }
    ],
    "public_id": "mistralai/voxtral-mini-tts-2603",
    "short": "Voxtral TTS è il modello 4B di generazione vocale di Mistral AI con adattamento vocale da reference in nove lingue. Trasforma testo preparato in audio espressivo, supporta prompt vocali riutilizzabili o singoli e streaming e produce output a 24 kHz nei formati audio documentati."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Voxtral TTS è il modello 4B di generazione vocale di Mistral AI con adattamento vocale da reference in nove lingue. Trasforma testo preparato in audio espressivo, supporta prompt vocali riutilizzabili o singoli e streaming e produce output a 24 kHz nei formati audio documentati.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "381cc0310ac9aceb0d10388249ad8c6e562a1af2ce1af596dd3e843570fa6036",
    "renderer_sha256": "3be1a96012c3c76b38a7b9bea6a57c0def38c56103737bee6a5e77aaa75e488a"
  },
  "sourceRevision": "459825689d0ade5430b61bf4118172ce4426ae0581fccafd4e71dbe2671d3b61"
}
