{
  "aboutHtml": "<p>Kokoro 82M è il modello di sintesi vocale a pesi aperti di hexgrad con ottantadue milioni di parametri. La scheda descrive un’architettura compatta solo decoder basata su StyleTTS 2 e iSTFTNet. Il testo scritto viene convertito in informazioni di pronuncia e poi in parlato con una voce selezionata. La release v1.0 documentata fornisce cinquantaquattro voci in otto lingue; quel profilo è distinto dalla precedente release v0.19 esclusivamente inglese.</p><h4>Selezionare lingua e voce corrispondenti</h4><p>Il catalogo delle voci copre inglese americano e britannico, giapponese, cinese mandarino, spagnolo, francese, hindi, italiano e portoghese brasiliano. I due accenti inglesi sono varianti di una lingua. Nomi delle voci e impostazioni linguistiche vanno insieme: af_heart è un esempio di inglese americano nel flusso ufficiale, mentre il catalogo ha gruppi separati per le altre lingue e accenti.</p><p>Scegli il parlante in base al materiale effettivo che leggerà. Una breve narrazione di corso può usare una voce preimpostata coerente nelle sezioni; una raccolta multilingue può selezionare una voce da ogni gruppo linguistico richiesto. La copertura del catalogo differisce tra i gruppi. Il francese, per esempio, è rappresentato da una sola voce elencata anziché dalla selezione più ampia disponibile per l’inglese.</p><h4>Preparare pronuncia e passaggi</h4><p>La pipeline di riferimento di Kokoro converte le forme scritte in fonemi. Gli esempi permettono una lettura fonetica esplicita per un termine, quindi un nome difficile può essere preparato anziché lasciato a una grafia ambigua. Mantieni naturale la frase circostante e preserva le parole che l’ascoltatore dovrebbe sentire.</p><p>Un passaggio concreto è: «La guida ha tre parti. Prima scegli il materiale. Poi confronta gli esempi. Infine salva la versione che vuoi usare». Scrivi frasi complete e mantieni le pause implicite nella punteggiatura. Per un contenuto lungo, organizza l’input in paragrafi coerenti anziché trattare l’intero documento come un unico enunciato ininterrotto.</p><p>La guida alle voci afferma che molti parlanti funzionano meglio con passaggi di circa 100–200 token nell’ambito di una lunghezza di circa 500 token. Osserva debolezze su enunciati molto brevi, soprattutto sotto 10–20 token, e una tendenza ad accelerare nei passaggi più lunghi, in particolare oltre 400 token. Sono osservazioni di preparazione basate sui token, non limiti di conteggio delle parole o durata della registrazione. Combinare frammenti brevi o suddividere un passaggio lungo può fornire un’unità di parlato più adatta.</p><h4>Output audio e ritmo</h4><p>Il flusso ufficiale produce testo elaborato, fonemi e un risultato audio per ogni segmento generato. Salva i segmenti come WAV a 24.000 Hz ed espone un’impostazione di velocità nella pipeline di riferimento. Mantieni testo e ordine dei segmenti associati all’audio, affinché la narrazione assemblata segua il copione previsto.</p><p>Un controllo utile di montaggio consiste nell’ascoltare il confine tra due passaggi e poi esaminare nomi ricorrenti e ritmo degli elenchi. L’output audio e la vista dei fonemi hanno scopi differenti: uno è la registrazione udita dall’ascoltatore, l’altra aiuta a esaminare come viene pronunciato il testo scritto.</p><h4>Copertura linguistica e limiti utili</h4><p>Il produttore osserva esplicitamente che il supporto non inglese può essere limitato perché elaborazione della pronuncia o dati di addestramento delle voci sono scarsi. I gruppi di voci preimpostate non dovrebbero quindi essere trattati come garanzie equivalenti di interpretazione per ogni passaggio. Scegli un parlante adatto e verifica nomi e formulazioni reali richiesti dall’attività.</p><p>Il risultato utile è un passaggio parlato o una narrazione assemblata con una voce preimpostata documentata, con testo preparato secondo le esigenze di pronuncia e lunghezza dei passaggi. Questo profilo segue il materiale v1.0 di Kokoro 82M del produttore; un altro checkpoint, un’implementazione quantizzata o una voce modificata esternamente ha un ambito tecnico proprio.</p>",
  "aboutText": "Kokoro 82M è il modello di sintesi vocale a pesi aperti di hexgrad con ottantadue milioni di parametri. La scheda descrive un’architettura compatta solo decoder basata su StyleTTS 2 e iSTFTNet. Il testo scritto viene convertito in informazioni di pronuncia e poi in parlato con una voce selezionata. La release v1.0 documentata fornisce cinquantaquattro voci in otto lingue; quel profilo è distinto dalla precedente release v0.19 esclusivamente inglese.\n\n### Selezionare lingua e voce corrispondenti\n\nIl catalogo delle voci copre inglese americano e britannico, giapponese, cinese mandarino, spagnolo, francese, hindi, italiano e portoghese brasiliano. I due accenti inglesi sono varianti di una lingua. Nomi delle voci e impostazioni linguistiche vanno insieme: af_heart è un esempio di inglese americano nel flusso ufficiale, mentre il catalogo ha gruppi separati per le altre lingue e accenti.\n\nScegli il parlante in base al materiale effettivo che leggerà. Una breve narrazione di corso può usare una voce preimpostata coerente nelle sezioni; una raccolta multilingue può selezionare una voce da ogni gruppo linguistico richiesto. La copertura del catalogo differisce tra i gruppi. Il francese, per esempio, è rappresentato da una sola voce elencata anziché dalla selezione più ampia disponibile per l’inglese.\n\n### Preparare pronuncia e passaggi\n\nLa pipeline di riferimento di Kokoro converte le forme scritte in fonemi. Gli esempi permettono una lettura fonetica esplicita per un termine, quindi un nome difficile può essere preparato anziché lasciato a una grafia ambigua. Mantieni naturale la frase circostante e preserva le parole che l’ascoltatore dovrebbe sentire.\n\nUn passaggio concreto è: «La guida ha tre parti. Prima scegli il materiale. Poi confronta gli esempi. Infine salva la versione che vuoi usare». Scrivi frasi complete e mantieni le pause implicite nella punteggiatura. Per un contenuto lungo, organizza l’input in paragrafi coerenti anziché trattare l’intero documento come un unico enunciato ininterrotto.\n\nLa guida alle voci afferma che molti parlanti funzionano meglio con passaggi di circa 100–200 token nell’ambito di una lunghezza di circa 500 token. Osserva debolezze su enunciati molto brevi, soprattutto sotto 10–20 token, e una tendenza ad accelerare nei passaggi più lunghi, in particolare oltre 400 token. Sono osservazioni di preparazione basate sui token, non limiti di conteggio delle parole o durata della registrazione. Combinare frammenti brevi o suddividere un passaggio lungo può fornire un’unità di parlato più adatta.\n\n### Output audio e ritmo\n\nIl flusso ufficiale produce testo elaborato, fonemi e un risultato audio per ogni segmento generato. Salva i segmenti come WAV a 24.000 Hz ed espone un’impostazione di velocità nella pipeline di riferimento. Mantieni testo e ordine dei segmenti associati all’audio, affinché la narrazione assemblata segua il copione previsto.\n\nUn controllo utile di montaggio consiste nell’ascoltare il confine tra due passaggi e poi esaminare nomi ricorrenti e ritmo degli elenchi. L’output audio e la vista dei fonemi hanno scopi differenti: uno è la registrazione udita dall’ascoltatore, l’altra aiuta a esaminare come viene pronunciato il testo scritto.\n\n### Copertura linguistica e limiti utili\n\nIl produttore osserva esplicitamente che il supporto non inglese può essere limitato perché elaborazione della pronuncia o dati di addestramento delle voci sono scarsi. I gruppi di voci preimpostate non dovrebbero quindi essere trattati come garanzie equivalenti di interpretazione per ogni passaggio. Scegli un parlante adatto e verifica nomi e formulazioni reali richiesti dall’attività.\n\nIl risultato utile è un passaggio parlato o una narrazione assemblata con una voce preimpostata documentata, con testo preparato secondo le esigenze di pronuncia e lunghezza dei passaggi. Questo profilo segue il materiale v1.0 di Kokoro 82M del produttore; un altro checkpoint, un’implementazione quantizzata o una voce modificata esternamente ha un ambito tecnico proprio.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "d19976a3662b9093a1dcf74a1e2dcfac683dc60f820c744bb437799393aea19b",
    "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\">hexgrad: Kokoro 82M</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Chiudi\">×</button></div><div class=\"idline\"><span>hexgrad /</span><code>hexgrad/kokoro-82m</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|hexgrad%2Fkokoro-82m\">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\">Kokoro 82M di hexgrad genera parlato con un modello compatto da 82 milioni di parametri e una voce preimpostata specifica della lingua. Il profilo v1.0 documentato comprende otto lingue, 54 voci e output audio a 24 kHz.</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>Kokoro 82M è il modello di sintesi vocale a pesi aperti di hexgrad con ottantadue milioni di parametri. La scheda descrive un’architettura compatta solo decoder basata su StyleTTS 2 e iSTFTNet. Il testo scritto viene convertito in informazioni di pronuncia e poi in parlato con una voce selezionata. La release v1.0 documentata fornisce cinquantaquattro voci in otto lingue; quel profilo è distinto dalla precedente release v0.19 esclusivamente inglese.</p><h4>Selezionare lingua e voce corrispondenti</h4><p>Il catalogo delle voci copre inglese americano e britannico, giapponese, cinese mandarino, spagnolo, francese, hindi, italiano e portoghese brasiliano. I due accenti inglesi sono varianti di una lingua. Nomi delle voci e impostazioni linguistiche vanno insieme: af_heart è un esempio di inglese americano nel flusso ufficiale, mentre il catalogo ha gruppi separati per le altre lingue e accenti.</p><p>Scegli il parlante in base al materiale effettivo che leggerà. Una breve narrazione di corso può usare una voce preimpostata coerente nelle sezioni; una raccolta multilingue può selezionare una voce da ogni gruppo linguistico richiesto. La copertura del catalogo differisce tra i gruppi. Il francese, per esempio, è rappresentato da una sola voce elencata anziché dalla selezione più ampia disponibile per l’inglese.</p><h4>Preparare pronuncia e passaggi</h4><p>La pipeline di riferimento di Kokoro converte le forme scritte in fonemi. Gli esempi permettono una lettura fonetica esplicita per un termine, quindi un nome difficile può essere preparato anziché lasciato a una grafia ambigua. Mantieni naturale la frase circostante e preserva le parole che l’ascoltatore dovrebbe sentire.</p><p>Un passaggio concreto è: «La guida ha tre parti. Prima scegli il materiale. Poi confronta gli esempi. Infine salva la versione che vuoi usare». Scrivi frasi complete e mantieni le pause implicite nella punteggiatura. Per un contenuto lungo, organizza l’input in paragrafi coerenti anziché trattare l’intero documento come un unico enunciato ininterrotto.</p><p>La guida alle voci afferma che molti parlanti funzionano meglio con passaggi di circa 100–200 token nell’ambito di una lunghezza di circa 500 token. Osserva debolezze su enunciati molto brevi, soprattutto sotto 10–20 token, e una tendenza ad accelerare nei passaggi più lunghi, in particolare oltre 400 token. Sono osservazioni di preparazione basate sui token, non limiti di conteggio delle parole o durata della registrazione. Combinare frammenti brevi o suddividere un passaggio lungo può fornire un’unità di parlato più adatta.</p><h4>Output audio e ritmo</h4><p>Il flusso ufficiale produce testo elaborato, fonemi e un risultato audio per ogni segmento generato. Salva i segmenti come WAV a 24.000 Hz ed espone un’impostazione di velocità nella pipeline di riferimento. Mantieni testo e ordine dei segmenti associati all’audio, affinché la narrazione assemblata segua il copione previsto.</p><p>Un controllo utile di montaggio consiste nell’ascoltare il confine tra due passaggi e poi esaminare nomi ricorrenti e ritmo degli elenchi. L’output audio e la vista dei fonemi hanno scopi differenti: uno è la registrazione udita dall’ascoltatore, l’altra aiuta a esaminare come viene pronunciato il testo scritto.</p><h4>Copertura linguistica e limiti utili</h4><p>Il produttore osserva esplicitamente che il supporto non inglese può essere limitato perché elaborazione della pronuncia o dati di addestramento delle voci sono scarsi. I gruppi di voci preimpostate non dovrebbero quindi essere trattati come garanzie equivalenti di interpretazione per ogni passaggio. Scegli un parlante adatto e verifica nomi e formulazioni reali richiesti dall’attività.</p><p>Il risultato utile è un passaggio parlato o una narrazione assemblata con una voce preimpostata documentata, con testo preparato secondo le esigenze di pronuncia e lunghezza dei passaggi. Questo profilo segue il materiale v1.0 di Kokoro 82M del produttore; un altro checkpoint, un’implementazione quantizzata o una voce modificata esternamente ha un ambito tecnico proprio.</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>hexgrad/kokoro-82m</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>af_alloy, af_aoede, af_bella, af_heart, af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky, am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa, bf_alice, bf_emma, bf_isabella, bf_lily, bm_daniel, bm_fable, bm_george, bm_lewis, ef_dora, em_alex, em_santa, ff_siwis, hf_alpha, hf_beta, hm_omega, hm_psi, if_sara, im_nicola, jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro, jm_kumo, pf_dora, pm_alex, pm_santa, zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi, zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang</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>af_alloy, af_aoede, af_bella, af_heart, af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky, am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa, bf_alice, bf_emma, bf_isabella, bf_lily, bm_daniel, bm_fable, bm_george, bm_lewis, ef_dora, em_alex, em_santa, ff_siwis, hf_alpha, hf_beta, hm_omega, hm_psi, if_sara, im_nicola, jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro, jm_kumo, pf_dora, pm_alex, pm_santa, zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi, zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang</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.008</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>hexgrad: Kokoro 82M</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>hexgrad: Kokoro 82M · 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,00000124 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-1709-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1709-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-1709-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1709-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;hexgrad/kokoro-82m&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;af_alloy&quot;, &quot;af_aoede&quot;, &quot;af_bella&quot;, &quot;af_heart&quot;, &quot;af_jessica&quot;, &quot;af_kore&quot;, &quot;af_nicole&quot;, &quot;af_nova&quot;, &quot;af_river&quot;, &quot;af_sarah&quot;, &quot;af_sky&quot;, &quot;am_adam&quot;, &quot;am_echo&quot;, &quot;am_eric&quot;, &quot;am_fenrir&quot;, &quot;am_liam&quot;, &quot;am_michael&quot;, &quot;am_onyx&quot;, &quot;am_puck&quot;, &quot;am_santa&quot;, &quot;bf_alice&quot;, &quot;bf_emma&quot;, &quot;bf_isabella&quot;, &quot;bf_lily&quot;, &quot;bm_daniel&quot;, &quot;bm_fable&quot;, &quot;bm_george&quot;, &quot;bm_lewis&quot;, &quot;ef_dora&quot;, &quot;em_alex&quot;, &quot;em_santa&quot;, &quot;ff_siwis&quot;, &quot;hf_alpha&quot;, &quot;hf_beta&quot;, &quot;hm_omega&quot;, &quot;hm_psi&quot;, &quot;if_sara&quot;, &quot;im_nicola&quot;, &quot;jf_alpha&quot;, &quot;jf_gongitsune&quot;, &quot;jf_nezumi&quot;, &quot;jf_tebukuro&quot;, &quot;jm_kumo&quot;, &quot;pf_dora&quot;, &quot;pm_alex&quot;, &quot;pm_santa&quot;, &quot;zf_xiaobei&quot;, &quot;zf_xiaoni&quot;, &quot;zf_xiaoxiao&quot;, &quot;zf_xiaoyi&quot;, &quot;zm_yunjian&quot;, &quot;zm_yunxi&quot;, &quot;zm_yunxia&quot;, &quot;zm_yunyang&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-1710-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1710-panel-0\" aria-selected=\"true\" tabindex=\"0\">Libreria multimediale</button><button class=\"cg-tab\" id=\"model-code-1710-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1710-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Stato dell’attività</button><button class=\"cg-tab\" id=\"model-code-1710-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1710-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-1710-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1710-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-1710-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1710-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-1710-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1710-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=hexgrad%2Fkokoro-82m&amp;route=Ultra&amp;caller=hexgrad%2Fkokoro-82m&amp;fmt=speech\"><code>hexgrad/kokoro-82m</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=hexgrad%2Fkokoro-82m&amp;route=Ultra&amp;caller=hexgrad%2Fkokoro-82m&amp;fmt=speech\"><code>hexgrad/kokoro-82m</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "hexgrad/kokoro-82m",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "hexgrad/kokoro-82m",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|hexgrad%2Fkokoro-82m",
      "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": [
                  "hexgrad/kokoro-82m"
                ],
                "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": [
                  "af_alloy",
                  "af_aoede",
                  "af_bella",
                  "af_heart",
                  "af_jessica",
                  "af_kore",
                  "af_nicole",
                  "af_nova",
                  "af_river",
                  "af_sarah",
                  "af_sky",
                  "am_adam",
                  "am_echo",
                  "am_eric",
                  "am_fenrir",
                  "am_liam",
                  "am_michael",
                  "am_onyx",
                  "am_puck",
                  "am_santa",
                  "bf_alice",
                  "bf_emma",
                  "bf_isabella",
                  "bf_lily",
                  "bm_daniel",
                  "bm_fable",
                  "bm_george",
                  "bm_lewis",
                  "ef_dora",
                  "em_alex",
                  "em_santa",
                  "ff_siwis",
                  "hf_alpha",
                  "hf_beta",
                  "hm_omega",
                  "hm_psi",
                  "if_sara",
                  "im_nicola",
                  "jf_alpha",
                  "jf_gongitsune",
                  "jf_nezumi",
                  "jf_tebukuro",
                  "jm_kumo",
                  "pf_dora",
                  "pm_alex",
                  "pm_santa",
                  "zf_xiaobei",
                  "zf_xiaoni",
                  "zf_xiaoxiao",
                  "zf_xiaoyi",
                  "zm_yunjian",
                  "zm_yunxi",
                  "zm_yunxia",
                  "zm_yunyang"
                ],
                "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": [
              "af_alloy",
              "af_aoede",
              "af_bella",
              "af_heart",
              "af_jessica",
              "af_kore",
              "af_nicole",
              "af_nova",
              "af_river",
              "af_sarah",
              "af_sky",
              "am_adam",
              "am_echo",
              "am_eric",
              "am_fenrir",
              "am_liam",
              "am_michael",
              "am_onyx",
              "am_puck",
              "am_santa",
              "bf_alice",
              "bf_emma",
              "bf_isabella",
              "bf_lily",
              "bm_daniel",
              "bm_fable",
              "bm_george",
              "bm_lewis",
              "ef_dora",
              "em_alex",
              "em_santa",
              "ff_siwis",
              "hf_alpha",
              "hf_beta",
              "hm_omega",
              "hm_psi",
              "if_sara",
              "im_nicola",
              "jf_alpha",
              "jf_gongitsune",
              "jf_nezumi",
              "jf_tebukuro",
              "jm_kumo",
              "pf_dora",
              "pm_alex",
              "pm_santa",
              "zf_xiaobei",
              "zf_xiaoni",
              "zf_xiaoxiao",
              "zf_xiaoyi",
              "zm_yunjian",
              "zm_yunxi",
              "zm_yunxia",
              "zm_yunyang"
            ]
          },
          "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.008000",
                "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.000008",
                "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": "e43e93397bc0f4d8af3d",
            "label": "hexgrad: Kokoro 82M",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Configurazione predefinita"
                },
                "label": "hexgrad: Kokoro 82M · Configurazione predefinita",
                "units": [
                  {
                    "amount": "0.00000124",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "2e6b47581d2d5355918a9389",
                    "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\": \"hexgrad/kokoro-82m\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"af_alloy\", \"af_aoede\", \"af_bella\", \"af_heart\", \"af_jessica\", \"af_kore\", \"af_nicole\", \"af_nova\", \"af_river\", \"af_sarah\", \"af_sky\", \"am_adam\", \"am_echo\", \"am_eric\", \"am_fenrir\", \"am_liam\", \"am_michael\", \"am_onyx\", \"am_puck\", \"am_santa\", \"bf_alice\", \"bf_emma\", \"bf_isabella\", \"bf_lily\", \"bm_daniel\", \"bm_fable\", \"bm_george\", \"bm_lewis\", \"ef_dora\", \"em_alex\", \"em_santa\", \"ff_siwis\", \"hf_alpha\", \"hf_beta\", \"hm_omega\", \"hm_psi\", \"if_sara\", \"im_nicola\", \"jf_alpha\", \"jf_gongitsune\", \"jf_nezumi\", \"jf_tebukuro\", \"jm_kumo\", \"pf_dora\", \"pm_alex\", \"pm_santa\", \"zf_xiaobei\", \"zf_xiaoni\", \"zf_xiaoxiao\", \"zf_xiaoyi\", \"zm_yunjian\", \"zm_yunxi\", \"zm_yunxia\", \"zm_yunyang\"]')\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": 8e-06
          }
        },
        "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.008000",
                "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.000008",
                "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": "hexgrad/kokoro-82m",
        "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.008000",
            "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.000008",
            "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": "hexgrad/kokoro-82m",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "00e016caaac855f7680a29911f4e3ca2161d2ac53594b9eff69bfe4e97d00364",
    "input_html_sha256": "7d1a4baa324f1278d39e59e3149baa59764512d57366ac4ebdc85c735dfdee99",
    "private_audit_sha256": "cd0358e1674342c1e120be891743230b3b02083d57655a772a387aeeb230c2b2",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/it/hexgrad-kokoro-82m/",
    "description": "Kokoro 82M di hexgrad genera parlato con un modello compatto da 82 milioni di parametri e una voce preimpostata specifica della lingua. Il profilo v1.0 documentato comprende otto lingue, 54 voci e output audio a 24 kHz.",
    "locale": "it",
    "md_url": "https://ailoot.ai/models/it/hexgrad-kokoro-82m/index.md",
    "title": "hexgrad: Kokoro 82M — Ailoot",
    "url": "https://ailoot.ai/models/it/hexgrad-kokoro-82m/"
  },
  "rawModel": {
    "about": "Kokoro 82M è il modello di sintesi vocale a pesi aperti di hexgrad con ottantadue milioni di parametri. La scheda descrive un’architettura compatta solo decoder basata su StyleTTS 2 e iSTFTNet. Il testo scritto viene convertito in informazioni di pronuncia e poi in parlato con una voce selezionata. La release v1.0 documentata fornisce cinquantaquattro voci in otto lingue; quel profilo è distinto dalla precedente release v0.19 esclusivamente inglese.\n\n### Selezionare lingua e voce corrispondenti\n\nIl catalogo delle voci copre inglese americano e britannico, giapponese, cinese mandarino, spagnolo, francese, hindi, italiano e portoghese brasiliano. I due accenti inglesi sono varianti di una lingua. Nomi delle voci e impostazioni linguistiche vanno insieme: af_heart è un esempio di inglese americano nel flusso ufficiale, mentre il catalogo ha gruppi separati per le altre lingue e accenti.\n\nScegli il parlante in base al materiale effettivo che leggerà. Una breve narrazione di corso può usare una voce preimpostata coerente nelle sezioni; una raccolta multilingue può selezionare una voce da ogni gruppo linguistico richiesto. La copertura del catalogo differisce tra i gruppi. Il francese, per esempio, è rappresentato da una sola voce elencata anziché dalla selezione più ampia disponibile per l’inglese.\n\n### Preparare pronuncia e passaggi\n\nLa pipeline di riferimento di Kokoro converte le forme scritte in fonemi. Gli esempi permettono una lettura fonetica esplicita per un termine, quindi un nome difficile può essere preparato anziché lasciato a una grafia ambigua. Mantieni naturale la frase circostante e preserva le parole che l’ascoltatore dovrebbe sentire.\n\nUn passaggio concreto è: «La guida ha tre parti. Prima scegli il materiale. Poi confronta gli esempi. Infine salva la versione che vuoi usare». Scrivi frasi complete e mantieni le pause implicite nella punteggiatura. Per un contenuto lungo, organizza l’input in paragrafi coerenti anziché trattare l’intero documento come un unico enunciato ininterrotto.\n\nLa guida alle voci afferma che molti parlanti funzionano meglio con passaggi di circa 100–200 token nell’ambito di una lunghezza di circa 500 token. Osserva debolezze su enunciati molto brevi, soprattutto sotto 10–20 token, e una tendenza ad accelerare nei passaggi più lunghi, in particolare oltre 400 token. Sono osservazioni di preparazione basate sui token, non limiti di conteggio delle parole o durata della registrazione. Combinare frammenti brevi o suddividere un passaggio lungo può fornire un’unità di parlato più adatta.\n\n### Output audio e ritmo\n\nIl flusso ufficiale produce testo elaborato, fonemi e un risultato audio per ogni segmento generato. Salva i segmenti come WAV a 24.000 Hz ed espone un’impostazione di velocità nella pipeline di riferimento. Mantieni testo e ordine dei segmenti associati all’audio, affinché la narrazione assemblata segua il copione previsto.\n\nUn controllo utile di montaggio consiste nell’ascoltare il confine tra due passaggi e poi esaminare nomi ricorrenti e ritmo degli elenchi. L’output audio e la vista dei fonemi hanno scopi differenti: uno è la registrazione udita dall’ascoltatore, l’altra aiuta a esaminare come viene pronunciato il testo scritto.\n\n### Copertura linguistica e limiti utili\n\nIl produttore osserva esplicitamente che il supporto non inglese può essere limitato perché elaborazione della pronuncia o dati di addestramento delle voci sono scarsi. I gruppi di voci preimpostate non dovrebbero quindi essere trattati come garanzie equivalenti di interpretazione per ogni passaggio. Scegli un parlante adatto e verifica nomi e formulazioni reali richiesti dall’attività.\n\nIl risultato utile è un passaggio parlato o una narrazione assemblata con una voce preimpostata documentata, con testo preparato secondo le esigenze di pronuncia e lunghezza dei passaggi. Questo profilo segue il materiale v1.0 di Kokoro 82M del produttore; un altro checkpoint, un’implementazione quantizzata o una voce modificata esternamente ha un ambito tecnico proprio.",
    "alias_of": null,
    "aliases": [],
    "author": "hexgrad",
    "available": null,
    "canonical_model": "hexgrad/kokoro-82m",
    "capabilities": {
      "context_length": 4096,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.008000",
            "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.000008",
            "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": "hexgrad/kokoro-82m",
    "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": [
                  "hexgrad/kokoro-82m"
                ],
                "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": [
                  "af_alloy",
                  "af_aoede",
                  "af_bella",
                  "af_heart",
                  "af_jessica",
                  "af_kore",
                  "af_nicole",
                  "af_nova",
                  "af_river",
                  "af_sarah",
                  "af_sky",
                  "am_adam",
                  "am_echo",
                  "am_eric",
                  "am_fenrir",
                  "am_liam",
                  "am_michael",
                  "am_onyx",
                  "am_puck",
                  "am_santa",
                  "bf_alice",
                  "bf_emma",
                  "bf_isabella",
                  "bf_lily",
                  "bm_daniel",
                  "bm_fable",
                  "bm_george",
                  "bm_lewis",
                  "ef_dora",
                  "em_alex",
                  "em_santa",
                  "ff_siwis",
                  "hf_alpha",
                  "hf_beta",
                  "hm_omega",
                  "hm_psi",
                  "if_sara",
                  "im_nicola",
                  "jf_alpha",
                  "jf_gongitsune",
                  "jf_nezumi",
                  "jf_tebukuro",
                  "jm_kumo",
                  "pf_dora",
                  "pm_alex",
                  "pm_santa",
                  "zf_xiaobei",
                  "zf_xiaoni",
                  "zf_xiaoxiao",
                  "zf_xiaoyi",
                  "zm_yunjian",
                  "zm_yunxi",
                  "zm_yunxia",
                  "zm_yunyang"
                ],
                "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": [
              "af_alloy",
              "af_aoede",
              "af_bella",
              "af_heart",
              "af_jessica",
              "af_kore",
              "af_nicole",
              "af_nova",
              "af_river",
              "af_sarah",
              "af_sky",
              "am_adam",
              "am_echo",
              "am_eric",
              "am_fenrir",
              "am_liam",
              "am_michael",
              "am_onyx",
              "am_puck",
              "am_santa",
              "bf_alice",
              "bf_emma",
              "bf_isabella",
              "bf_lily",
              "bm_daniel",
              "bm_fable",
              "bm_george",
              "bm_lewis",
              "ef_dora",
              "em_alex",
              "em_santa",
              "ff_siwis",
              "hf_alpha",
              "hf_beta",
              "hm_omega",
              "hm_psi",
              "if_sara",
              "im_nicola",
              "jf_alpha",
              "jf_gongitsune",
              "jf_nezumi",
              "jf_tebukuro",
              "jm_kumo",
              "pf_dora",
              "pm_alex",
              "pm_santa",
              "zf_xiaobei",
              "zf_xiaoni",
              "zf_xiaoxiao",
              "zf_xiaoyi",
              "zm_yunjian",
              "zm_yunxi",
              "zm_yunxia",
              "zm_yunyang"
            ]
          },
          "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.008000",
                "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.000008",
                "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": "e43e93397bc0f4d8af3d",
            "label": "hexgrad: Kokoro 82M",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Configurazione predefinita"
                },
                "label": "hexgrad: Kokoro 82M · Configurazione predefinita",
                "units": [
                  {
                    "amount": "0.00000124",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "2e6b47581d2d5355918a9389",
                    "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\": \"hexgrad/kokoro-82m\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"af_alloy\", \"af_aoede\", \"af_bella\", \"af_heart\", \"af_jessica\", \"af_kore\", \"af_nicole\", \"af_nova\", \"af_river\", \"af_sarah\", \"af_sky\", \"am_adam\", \"am_echo\", \"am_eric\", \"am_fenrir\", \"am_liam\", \"am_michael\", \"am_onyx\", \"am_puck\", \"am_santa\", \"bf_alice\", \"bf_emma\", \"bf_isabella\", \"bf_lily\", \"bm_daniel\", \"bm_fable\", \"bm_george\", \"bm_lewis\", \"ef_dora\", \"em_alex\", \"em_santa\", \"ff_siwis\", \"hf_alpha\", \"hf_beta\", \"hm_omega\", \"hm_psi\", \"if_sara\", \"im_nicola\", \"jf_alpha\", \"jf_gongitsune\", \"jf_nezumi\", \"jf_tebukuro\", \"jm_kumo\", \"pf_dora\", \"pm_alex\", \"pm_santa\", \"zf_xiaobei\", \"zf_xiaoni\", \"zf_xiaoxiao\", \"zf_xiaoyi\", \"zm_yunjian\", \"zm_yunxi\", \"zm_yunxia\", \"zm_yunyang\"]')\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": 8e-06
          }
        },
        "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.008000",
                "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.000008",
                "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": "hexgrad/kokoro-82m",
        "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.008000",
            "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.000008",
            "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": "hexgrad/kokoro-82m",
        "request_model_id": "hexgrad/kokoro-82m",
        "route_label": "Ultra"
      }
    ],
    "name": "hexgrad: Kokoro 82M",
    "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.000008",
            "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": "hexgrad/kokoro-82m",
    "short": "Kokoro 82M di hexgrad genera parlato con un modello compatto da 82 milioni di parametri e una voce preimpostata specifica della lingua. Il profilo v1.0 documentato comprende otto lingue, 54 voci e output audio a 24 kHz."
  },
  "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": "Kokoro 82M di hexgrad genera parlato con un modello compatto da 82 milioni di parametri e una voce preimpostata specifica della lingua. Il profilo v1.0 documentato comprende otto lingue, 54 voci e output audio a 24 kHz.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "923e38a6f5d4d64b7766b30f18d1395eb4d02670e60aa8985a4cd08b9e5089e8",
    "renderer_sha256": "3be1a96012c3c76b38a7b9bea6a57c0def38c56103737bee6a5e77aaa75e488a"
  },
  "sourceRevision": "f742382fe2e0393b0a21d59280010eba65e59f3376a6ec812a1109f35dd01ab0"
}
