{
  "aboutHtml": "<p>MAI-Voice-2.1 je model podjetja Microsoft AI za pretvorbo besedila v govor, usmerjano z navodili, za delo, pri katerem sta pomembni izrazno podajanje in zvočna zvestoba. Njegova kartica modela pokriva triindvajset jezikov in šestindvajset jezikovnih različic z naravno intonacijo, ritmom in čustvenimi odtenki. Proizvajalec kot osrednje uporabe navaja zvočne knjige, medijsko pripovedovanje, ustvarjanje vsebin in spremljevalni govor. Ta izdaja poudarja daljše izrazne vsebine; MAI-Voice-2.1-Flash je ločena izbira, zasnovana za interakcijo, občutljivo na zakasnitev.</p><h4>Pripovedovanje z doslednim govorcem</h4><p>Kartica modela dokumentira eno glasovno identiteto, dosledno upodobljeno v vseh podprtih jezikih. Ustvarjanje dolgih vsebin uporablja delitev in prenos konteksta za boljšo kontinuiteto med odlomki. To je uporabno za učno enoto, poglavje zvočne knjige ali zaporedje povezanih odsekov spremljevalnega govora, ki naj ohranijo pripovedovalčev značaj. Pripravite povezane odlomke z jasnimi mejami in skozi vsebino ohranite isto izbiro govorca.</p><p>Vnos je končno besedilo z neobvezno referenco govorca in izraznimi nastavitvami SSML. Izhodišče za pripoved naj razlikuje med tem, kar poslušalec sliši, in produkcijskimi opombami. Za tehnično razlago napišite jasen uvod, nato dejanske korake in zaključno navodilo. Imena izdelkov in ponavljajoče se izraze zapisujte dosledno. Za lokalizirano pripoved pripravite scenarij v ciljnem jeziku; izbrani jezik in glas določata njegovo govorno upodobitev.</p><h4>Govorci, vloge in izrazni nadzor</h4><p>Microsoft zagotavlja izbrano knjižnico glasov in dokumentira več govorcev za dialog. Harper in Grant ponazarjata identiteti govorcev z vnosi za več jezikovnih različic. Dvosebna izobraževalna izmenjava lahko vprašanje in razlago dodeli različnima glasovoma ter ohrani isto dodelitev, ko se vloga vrne. Govorjene vrstice jasno označite, da je želeni pogovor predstavljen v vhodu za sintezo.</p><p>Ton in podajanje je mogoče oblikovati na ravni govorne menjave ali stavka prek SSML. Slogi so specifični za govorca: upravljani katalog navaja namenski pripovedni ali izobraževalni slog za ustrezne glasove in čustvene izbire, kot sta veselje ali olajšanje, za druge. Ameriški vnos Harper podpira ta dva čustvena sloga. Govorca in njegov dokumentirani slog podajanja izberite skupaj, namesto da bi slog prenesli iz drugega glasu.</p><p>Pri zgodbi ali predstavitvi lahko izraznost razlikuje stvarno razlago, razmišljujoč odlomek in živahen navedek. Praktična vrstica je: »Prvi poskus nam je dal nepopolno sliko. Ko smo pogledali celotno zaporedje, je manjkajoči korak postal jasen.« Določite, kje se pomen spremeni, in temu primerno pripravite govorne enote. Poslušajte prehode, da podajanje sledi pripovedi, namesto da bi bil vsak stavek enako poudarjen.</p><h4>Referenčni glas in zvočni rezultat</h4><p>Neobvezni način prilagojenega glasu posnema govorca, ki je podal soglasje, iz pet- do šestdesetsekundne zvočne reference brez dodatnega učenja. Microsoft priporoča naravno pogovorno podajanje in zmerno energijo v tej referenci, saj vzorec vpliva na ustvarjeni glas. Njegov potek prilagojenega glasu zahteva odobritev proizvajalca in posneto izjavo soglasja. Vnaprej pripravljena knjižnica je ločena pot izbire glasu.</p><p>Proizvajalec omogoča izbiro izhodnega formata, njegov objavljeni primer sinteze pa shrani mono MP3 pri 24 kHz in 160 kbit/s. Te nastavitve opisujejo en izhodni potek. Zvočno predstavitev izberite za naslednjo stopnjo urejanja ali predvajanja ter z zapisom povežite scenarij, govorca in vrstni red razdelkov. Dokončano poglavje ali učna enota lahko vsebuje več ustvarjenih odlomkov, hkrati pa ostaja ena povezana poslušalska izkušnja.</p><h4>Uporabite rezultat dolge vsebine</h4><p>MAI-Voice-2.1 je usmerjen v naravnost in izraznost, kadar je takojšnji odzivni čas manj pomemben kot govorna izvedba. Pri daljši vsebini preverite ponavljajoča se imena, meje razdelkov, glasove, dodeljene dialogu, in spremembe čustvenega registra. Dokumentacija določa zmožnost dolgih vsebin in mehanizme doslednosti, ne da bi navedla neomejen scenarij ali zagotovljeno največje trajanje posnetka. Praktičen izdelek je izrazni zvok, katerega pripovedovalec, besedilo in potek ustrezajo pripravljenemu gradivu.</p>",
  "aboutText": "MAI-Voice-2.1 je model podjetja Microsoft AI za pretvorbo besedila v govor, usmerjano z navodili, za delo, pri katerem sta pomembni izrazno podajanje in zvočna zvestoba. Njegova kartica modela pokriva triindvajset jezikov in šestindvajset jezikovnih različic z naravno intonacijo, ritmom in čustvenimi odtenki. Proizvajalec kot osrednje uporabe navaja zvočne knjige, medijsko pripovedovanje, ustvarjanje vsebin in spremljevalni govor. Ta izdaja poudarja daljše izrazne vsebine; MAI-Voice-2.1-Flash je ločena izbira, zasnovana za interakcijo, občutljivo na zakasnitev.\n\n### Pripovedovanje z doslednim govorcem\n\nKartica modela dokumentira eno glasovno identiteto, dosledno upodobljeno v vseh podprtih jezikih. Ustvarjanje dolgih vsebin uporablja delitev in prenos konteksta za boljšo kontinuiteto med odlomki. To je uporabno za učno enoto, poglavje zvočne knjige ali zaporedje povezanih odsekov spremljevalnega govora, ki naj ohranijo pripovedovalčev značaj. Pripravite povezane odlomke z jasnimi mejami in skozi vsebino ohranite isto izbiro govorca.\n\nVnos je končno besedilo z neobvezno referenco govorca in izraznimi nastavitvami SSML. Izhodišče za pripoved naj razlikuje med tem, kar poslušalec sliši, in produkcijskimi opombami. Za tehnično razlago napišite jasen uvod, nato dejanske korake in zaključno navodilo. Imena izdelkov in ponavljajoče se izraze zapisujte dosledno. Za lokalizirano pripoved pripravite scenarij v ciljnem jeziku; izbrani jezik in glas določata njegovo govorno upodobitev.\n\n### Govorci, vloge in izrazni nadzor\n\nMicrosoft zagotavlja izbrano knjižnico glasov in dokumentira več govorcev za dialog. Harper in Grant ponazarjata identiteti govorcev z vnosi za več jezikovnih različic. Dvosebna izobraževalna izmenjava lahko vprašanje in razlago dodeli različnima glasovoma ter ohrani isto dodelitev, ko se vloga vrne. Govorjene vrstice jasno označite, da je želeni pogovor predstavljen v vhodu za sintezo.\n\nTon in podajanje je mogoče oblikovati na ravni govorne menjave ali stavka prek SSML. Slogi so specifični za govorca: upravljani katalog navaja namenski pripovedni ali izobraževalni slog za ustrezne glasove in čustvene izbire, kot sta veselje ali olajšanje, za druge. Ameriški vnos Harper podpira ta dva čustvena sloga. Govorca in njegov dokumentirani slog podajanja izberite skupaj, namesto da bi slog prenesli iz drugega glasu.\n\nPri zgodbi ali predstavitvi lahko izraznost razlikuje stvarno razlago, razmišljujoč odlomek in živahen navedek. Praktična vrstica je: »Prvi poskus nam je dal nepopolno sliko. Ko smo pogledali celotno zaporedje, je manjkajoči korak postal jasen.« Določite, kje se pomen spremeni, in temu primerno pripravite govorne enote. Poslušajte prehode, da podajanje sledi pripovedi, namesto da bi bil vsak stavek enako poudarjen.\n\n### Referenčni glas in zvočni rezultat\n\nNeobvezni način prilagojenega glasu posnema govorca, ki je podal soglasje, iz pet- do šestdesetsekundne zvočne reference brez dodatnega učenja. Microsoft priporoča naravno pogovorno podajanje in zmerno energijo v tej referenci, saj vzorec vpliva na ustvarjeni glas. Njegov potek prilagojenega glasu zahteva odobritev proizvajalca in posneto izjavo soglasja. Vnaprej pripravljena knjižnica je ločena pot izbire glasu.\n\nProizvajalec omogoča izbiro izhodnega formata, njegov objavljeni primer sinteze pa shrani mono MP3 pri 24 kHz in 160 kbit/s. Te nastavitve opisujejo en izhodni potek. Zvočno predstavitev izberite za naslednjo stopnjo urejanja ali predvajanja ter z zapisom povežite scenarij, govorca in vrstni red razdelkov. Dokončano poglavje ali učna enota lahko vsebuje več ustvarjenih odlomkov, hkrati pa ostaja ena povezana poslušalska izkušnja.\n\n### Uporabite rezultat dolge vsebine\n\nMAI-Voice-2.1 je usmerjen v naravnost in izraznost, kadar je takojšnji odzivni čas manj pomemben kot govorna izvedba. Pri daljši vsebini preverite ponavljajoča se imena, meje razdelkov, glasove, dodeljene dialogu, in spremembe čustvenega registra. Dokumentacija določa zmožnost dolgih vsebin in mehanizme doslednosti, ne da bi navedla neomejen scenarij ali zagotovljeno največje trajanje posnetka. Praktičen izdelek je izrazni zvok, katerega pripovedovalec, besedilo in potek ustrezajo pripravljenemu gradivu.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "92a269dd669238e9293fa017eb7a85e1275ed057742e6487d8d1e5d8fa5aaf2d",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "sl",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Microsoft AI: MAI-Voice-2.1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zapri\">×</button></div><div class=\"idline\"><span>Microsoft AI /</span><code>microsoft/mai-voice-2.1</code><button type=\"button\" id=\"copy-id\">Kopiraj ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Razdelki kartice modela\"><button type=\"button\" data-card-jump=\"overview\">Začetek</button><button type=\"button\" data-card-jump=\"methods\">Vhodi in metode</button><button type=\"button\" data-card-jump=\"pricing\">Cenik</button><button type=\"button\" data-card-jump=\"examples\">Primeri</button><button type=\"button\" data-card-jump=\"results\">Rezultati</button><button type=\"button\" data-card-jump=\"aliases\">Druga imena</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metode 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|microsoft%2Fmai-voice-2.1\">Pretvorba v govor</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\">Začetek</h3><p class=\"mdesc-full\">MAI-Voice-2.1 podjetja Microsoft AI ustvarja izrazni večjezični govor za pripovedovanje, zvočne knjige, izobraževalne vsebine in spremljevalni govor. Njegov profil s 23 jeziki podpira dosledno identiteto govorca, več govorcev in nadzorovano podajanje.</p><dl class=\"card-io\" data-card-io><div><dt>Dovoljeni vhodi</dt><dd>Besedilo</dd></div><div><dt>Rezultati</dt><dd>Zvok</dd></div></dl><details class=\"card-about\"><summary>O modelu</summary><p class=\"note-s\" data-model-method-boundary>Ta opis zajema zmožnosti modela. Vhodi, izhodi in možnosti, ki so na voljo v Ailoot, so spodaj navedeni za izbrano metodo.</p><div class=\"mabout\" id=\"m-about\"><p>MAI-Voice-2.1 je model podjetja Microsoft AI za pretvorbo besedila v govor, usmerjano z navodili, za delo, pri katerem sta pomembni izrazno podajanje in zvočna zvestoba. Njegova kartica modela pokriva triindvajset jezikov in šestindvajset jezikovnih različic z naravno intonacijo, ritmom in čustvenimi odtenki. Proizvajalec kot osrednje uporabe navaja zvočne knjige, medijsko pripovedovanje, ustvarjanje vsebin in spremljevalni govor. Ta izdaja poudarja daljše izrazne vsebine; MAI-Voice-2.1-Flash je ločena izbira, zasnovana za interakcijo, občutljivo na zakasnitev.</p><h4>Pripovedovanje z doslednim govorcem</h4><p>Kartica modela dokumentira eno glasovno identiteto, dosledno upodobljeno v vseh podprtih jezikih. Ustvarjanje dolgih vsebin uporablja delitev in prenos konteksta za boljšo kontinuiteto med odlomki. To je uporabno za učno enoto, poglavje zvočne knjige ali zaporedje povezanih odsekov spremljevalnega govora, ki naj ohranijo pripovedovalčev značaj. Pripravite povezane odlomke z jasnimi mejami in skozi vsebino ohranite isto izbiro govorca.</p><p>Vnos je končno besedilo z neobvezno referenco govorca in izraznimi nastavitvami SSML. Izhodišče za pripoved naj razlikuje med tem, kar poslušalec sliši, in produkcijskimi opombami. Za tehnično razlago napišite jasen uvod, nato dejanske korake in zaključno navodilo. Imena izdelkov in ponavljajoče se izraze zapisujte dosledno. Za lokalizirano pripoved pripravite scenarij v ciljnem jeziku; izbrani jezik in glas določata njegovo govorno upodobitev.</p><h4>Govorci, vloge in izrazni nadzor</h4><p>Microsoft zagotavlja izbrano knjižnico glasov in dokumentira več govorcev za dialog. Harper in Grant ponazarjata identiteti govorcev z vnosi za več jezikovnih različic. Dvosebna izobraževalna izmenjava lahko vprašanje in razlago dodeli različnima glasovoma ter ohrani isto dodelitev, ko se vloga vrne. Govorjene vrstice jasno označite, da je želeni pogovor predstavljen v vhodu za sintezo.</p><p>Ton in podajanje je mogoče oblikovati na ravni govorne menjave ali stavka prek SSML. Slogi so specifični za govorca: upravljani katalog navaja namenski pripovedni ali izobraževalni slog za ustrezne glasove in čustvene izbire, kot sta veselje ali olajšanje, za druge. Ameriški vnos Harper podpira ta dva čustvena sloga. Govorca in njegov dokumentirani slog podajanja izberite skupaj, namesto da bi slog prenesli iz drugega glasu.</p><p>Pri zgodbi ali predstavitvi lahko izraznost razlikuje stvarno razlago, razmišljujoč odlomek in živahen navedek. Praktična vrstica je: »Prvi poskus nam je dal nepopolno sliko. Ko smo pogledali celotno zaporedje, je manjkajoči korak postal jasen.« Določite, kje se pomen spremeni, in temu primerno pripravite govorne enote. Poslušajte prehode, da podajanje sledi pripovedi, namesto da bi bil vsak stavek enako poudarjen.</p><h4>Referenčni glas in zvočni rezultat</h4><p>Neobvezni način prilagojenega glasu posnema govorca, ki je podal soglasje, iz pet- do šestdesetsekundne zvočne reference brez dodatnega učenja. Microsoft priporoča naravno pogovorno podajanje in zmerno energijo v tej referenci, saj vzorec vpliva na ustvarjeni glas. Njegov potek prilagojenega glasu zahteva odobritev proizvajalca in posneto izjavo soglasja. Vnaprej pripravljena knjižnica je ločena pot izbire glasu.</p><p>Proizvajalec omogoča izbiro izhodnega formata, njegov objavljeni primer sinteze pa shrani mono MP3 pri 24 kHz in 160 kbit/s. Te nastavitve opisujejo en izhodni potek. Zvočno predstavitev izberite za naslednjo stopnjo urejanja ali predvajanja ter z zapisom povežite scenarij, govorca in vrstni red razdelkov. Dokončano poglavje ali učna enota lahko vsebuje več ustvarjenih odlomkov, hkrati pa ostaja ena povezana poslušalska izkušnja.</p><h4>Uporabite rezultat dolge vsebine</h4><p>MAI-Voice-2.1 je usmerjen v naravnost in izraznost, kadar je takojšnji odzivni čas manj pomemben kot govorna izvedba. Pri daljši vsebini preverite ponavljajoča se imena, meje razdelkov, glasove, dodeljene dialogu, in spremembe čustvenega registra. Dokumentacija določa zmožnost dolgih vsebin in mehanizme doslednosti, ne da bi navedla neomejen scenarij ali zagotovljeno največje trajanje posnetka. Praktičen izdelek je izrazni zvok, katerega pripovedovalec, besedilo in potek ustrezajo pripravljenemu gradivu.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Na voljo v Ailoot · vhodi in metode</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Pretvorba v govor</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Vhod</dt><dd><code>text</code></dd></div><div><dt>Izhod</dt><dd><code>audio</code></dd></div><div><dt>Izhodni format</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Polje</th><th>Vrsta</th><th>Zahteva</th><th>Vrednosti in omejitve</th><th>Privzeto</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>microsoft/mai-voice-2.1</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanjša dolžina: 1</div><div>Enota: znaki Unicode</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>cs-CZ-Grant:MAI-Voice-2.1, cs-CZ-Harper:MAI-Voice-2.1, da-DK-Grant:MAI-Voice-2.1, da-DK-Harper:MAI-Voice-2.1, de-DE-Grant:MAI-Voice-2.1, de-DE-Harper:MAI-Voice-2.1, de-DE-Klaus:MAI-Voice-2.1, de-DE-Mia:MAI-Voice-2.1, en-AU-Isla:MAI-Voice-2.1, en-GB-Emily:MAI-Voice-2.1, en-GB-Harry:MAI-Voice-2.1, en-IN-Dhruv:MAI-Voice-2.1, en-IN-Priya:MAI-Voice-2.1, en-US-Ethan:MAI-Voice-2.1, en-US-Grant:MAI-Voice-2.1, en-US-Harper:MAI-Voice-2.1, en-US-Iris:MAI-Voice-2.1, en-US-Jasper:MAI-Voice-2.1, en-US-Olivia:MAI-Voice-2.1, en-US-Sage:MAI-Voice-2.1, es-ES-Marta:MAI-Voice-2.1, es-MX-Alejo:MAI-Voice-2.1, es-MX-Grant:MAI-Voice-2.1, es-MX-Harper:MAI-Voice-2.1, es-MX-Valeria:MAI-Voice-2.1, fi-FI-Grant:MAI-Voice-2.1, fi-FI-Harper:MAI-Voice-2.1, fr-FR-Grant:MAI-Voice-2.1, fr-FR-Harper:MAI-Voice-2.1, fr-FR-Marc:MAI-Voice-2.1, fr-FR-Soleil:MAI-Voice-2.1, hi-IN-Arjun:MAI-Voice-2.1, hi-IN-Dhruv:MAI-Voice-2.1, hi-IN-Grant:MAI-Voice-2.1, hi-IN-Harper:MAI-Voice-2.1, hi-IN-Kavya:MAI-Voice-2.1, hi-IN-Priya:MAI-Voice-2.1, hu-HU-Bence:MAI-Voice-2.1, hu-HU-Grant:MAI-Voice-2.1, hu-HU-Harper:MAI-Voice-2.1, hu-HU-Levente:MAI-Voice-2.1, hu-HU-Lilla:MAI-Voice-2.1, hu-HU-Reka:MAI-Voice-2.1, id-ID-Grant:MAI-Voice-2.1, id-ID-Harper:MAI-Voice-2.1, it-IT-Grant:MAI-Voice-2.1, it-IT-Harper:MAI-Voice-2.1, it-IT-Luca:MAI-Voice-2.1, it-IT-Rosa:MAI-Voice-2.1, ko-KR-Grant:MAI-Voice-2.1, ko-KR-Haena:MAI-Voice-2.1, ko-KR-Harper:MAI-Voice-2.1, ko-KR-Junho:MAI-Voice-2.1, nb-NO-Grant:MAI-Voice-2.1, nb-NO-Harper:MAI-Voice-2.1, nl-NL-Grant:MAI-Voice-2.1, nl-NL-Harper:MAI-Voice-2.1, nl-NL-Sander:MAI-Voice-2.1, pl-PL-Grant:MAI-Voice-2.1, pl-PL-Harper:MAI-Voice-2.1, pt-BR-Caio:MAI-Voice-2.1, pt-BR-Grant:MAI-Voice-2.1, pt-BR-Harper:MAI-Voice-2.1, pt-BR-Luana:MAI-Voice-2.1, pt-BR-Pedro:MAI-Voice-2.1, pt-BR-Rafael:MAI-Voice-2.1, pt-PT-Grant:MAI-Voice-2.1, pt-PT-Harper:MAI-Voice-2.1, pt-PT-Rui:MAI-Voice-2.1, ro-RO-Andrei:MAI-Voice-2.1, ro-RO-Elena:MAI-Voice-2.1, ro-RO-Grant:MAI-Voice-2.1, ro-RO-Harper:MAI-Voice-2.1, ro-RO-Ioana:MAI-Voice-2.1, ro-RO-Radu:MAI-Voice-2.1, ru-RU-Grant:MAI-Voice-2.1, ru-RU-Harper:MAI-Voice-2.1, ru-RU-Lev:MAI-Voice-2.1, ru-RU-Masha:MAI-Voice-2.1, sv-SE-Grant:MAI-Voice-2.1, sv-SE-Harper:MAI-Voice-2.1, th-TH-Grant:MAI-Voice-2.1, th-TH-Harper:MAI-Voice-2.1, th-TH-Krit:MAI-Voice-2.1, th-TH-Nattapong:MAI-Voice-2.1, tr-TR-Aydin:MAI-Voice-2.1, tr-TR-Elif:MAI-Voice-2.1, tr-TR-Grant:MAI-Voice-2.1, tr-TR-Harper:MAI-Voice-2.1, vi-VN-Grant:MAI-Voice-2.1, vi-VN-Harper:MAI-Voice-2.1, zh-CN-Bo:MAI-Voice-2.1, zh-CN-Grant:MAI-Voice-2.1, zh-CN-Harper:MAI-Voice-2.1, zh-CN-Lan:MAI-Voice-2.1, zh-CN-Mei:MAI-Voice-2.1, zh-CN-Wei:MAI-Voice-2.1</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>mp3</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinacije vhodnih gradiv</summary><p class=\"note-s\"><b>text_to_speech</b> · Obvezno: input</p></details><details class=\"note-s\" data-method-contract><summary>Parametri in življenjski cikel metode</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Specifikacija</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>model, input, voice, response_format</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>voice_ids</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>cs-CZ-Grant:MAI-Voice-2.1, cs-CZ-Harper:MAI-Voice-2.1, da-DK-Grant:MAI-Voice-2.1, da-DK-Harper:MAI-Voice-2.1, de-DE-Grant:MAI-Voice-2.1, de-DE-Harper:MAI-Voice-2.1, de-DE-Klaus:MAI-Voice-2.1, de-DE-Mia:MAI-Voice-2.1, en-AU-Isla:MAI-Voice-2.1, en-GB-Emily:MAI-Voice-2.1, en-GB-Harry:MAI-Voice-2.1, en-IN-Dhruv:MAI-Voice-2.1, en-IN-Priya:MAI-Voice-2.1, en-US-Ethan:MAI-Voice-2.1, en-US-Grant:MAI-Voice-2.1, en-US-Harper:MAI-Voice-2.1, en-US-Iris:MAI-Voice-2.1, en-US-Jasper:MAI-Voice-2.1, en-US-Olivia:MAI-Voice-2.1, en-US-Sage:MAI-Voice-2.1, es-ES-Marta:MAI-Voice-2.1, es-MX-Alejo:MAI-Voice-2.1, es-MX-Grant:MAI-Voice-2.1, es-MX-Harper:MAI-Voice-2.1, es-MX-Valeria:MAI-Voice-2.1, fi-FI-Grant:MAI-Voice-2.1, fi-FI-Harper:MAI-Voice-2.1, fr-FR-Grant:MAI-Voice-2.1, fr-FR-Harper:MAI-Voice-2.1, fr-FR-Marc:MAI-Voice-2.1, fr-FR-Soleil:MAI-Voice-2.1, hi-IN-Arjun:MAI-Voice-2.1, hi-IN-Dhruv:MAI-Voice-2.1, hi-IN-Grant:MAI-Voice-2.1, hi-IN-Harper:MAI-Voice-2.1, hi-IN-Kavya:MAI-Voice-2.1, hi-IN-Priya:MAI-Voice-2.1, hu-HU-Bence:MAI-Voice-2.1, hu-HU-Grant:MAI-Voice-2.1, hu-HU-Harper:MAI-Voice-2.1, hu-HU-Levente:MAI-Voice-2.1, hu-HU-Lilla:MAI-Voice-2.1, hu-HU-Reka:MAI-Voice-2.1, id-ID-Grant:MAI-Voice-2.1, id-ID-Harper:MAI-Voice-2.1, it-IT-Grant:MAI-Voice-2.1, it-IT-Harper:MAI-Voice-2.1, it-IT-Luca:MAI-Voice-2.1, it-IT-Rosa:MAI-Voice-2.1, ko-KR-Grant:MAI-Voice-2.1, ko-KR-Haena:MAI-Voice-2.1, ko-KR-Harper:MAI-Voice-2.1, ko-KR-Junho:MAI-Voice-2.1, nb-NO-Grant:MAI-Voice-2.1, nb-NO-Harper:MAI-Voice-2.1, nl-NL-Grant:MAI-Voice-2.1, nl-NL-Harper:MAI-Voice-2.1, nl-NL-Sander:MAI-Voice-2.1, pl-PL-Grant:MAI-Voice-2.1, pl-PL-Harper:MAI-Voice-2.1, pt-BR-Caio:MAI-Voice-2.1, pt-BR-Grant:MAI-Voice-2.1, pt-BR-Harper:MAI-Voice-2.1, pt-BR-Luana:MAI-Voice-2.1, pt-BR-Pedro:MAI-Voice-2.1, pt-BR-Rafael:MAI-Voice-2.1, pt-PT-Grant:MAI-Voice-2.1, pt-PT-Harper:MAI-Voice-2.1, pt-PT-Rui:MAI-Voice-2.1, ro-RO-Andrei:MAI-Voice-2.1, ro-RO-Elena:MAI-Voice-2.1, ro-RO-Grant:MAI-Voice-2.1, ro-RO-Harper:MAI-Voice-2.1, ro-RO-Ioana:MAI-Voice-2.1, ro-RO-Radu:MAI-Voice-2.1, ru-RU-Grant:MAI-Voice-2.1, ru-RU-Harper:MAI-Voice-2.1, ru-RU-Lev:MAI-Voice-2.1, ru-RU-Masha:MAI-Voice-2.1, sv-SE-Grant:MAI-Voice-2.1, sv-SE-Harper:MAI-Voice-2.1, th-TH-Grant:MAI-Voice-2.1, th-TH-Harper:MAI-Voice-2.1, th-TH-Krit:MAI-Voice-2.1, th-TH-Nattapong:MAI-Voice-2.1, tr-TR-Aydin:MAI-Voice-2.1, tr-TR-Elif:MAI-Voice-2.1, tr-TR-Grant:MAI-Voice-2.1, tr-TR-Harper:MAI-Voice-2.1, vi-VN-Grant:MAI-Voice-2.1, vi-VN-Harper:MAI-Voice-2.1, zh-CN-Bo:MAI-Voice-2.1, zh-CN-Grant:MAI-Voice-2.1, zh-CN-Harper:MAI-Voice-2.1, zh-CN-Lan:MAI-Voice-2.1, zh-CN-Mei:MAI-Voice-2.1, zh-CN-Wei:MAI-Voice-2.1</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>response_format</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>mp3</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>max_input_characters</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>other_options</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>input</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>natančno besedilo UTF-8; število znakov Unicode brez normalizacije</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>text</td></tr></tbody></table></div><p>Življenjski cikel: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · Dejansko vrnjeni task_id ali zapis v medijski knjižnici</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\">Izberite natančen glas iz profila tega modela.</p><p class=\"note-s\">Vhodni znaki in zvočne sekunde so različni merili porabe.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cenik</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifni podatki ne dodajajo možnosti zahteve. Podprti parametri so navedeni pri izbrani metodi.</p><dl data-price-conditions><dt>Hitri način</dt><dd>Ni navedeno <span class=\"note-s\">Ko je izbran hitri način</span></dd><dt>Način flex</dt><dd>Ni navedeno <span class=\"note-s\">Ko je izbran način flex</span></dd><dt>Najvišja raven razmišljanja</dt><dd>Ni navedeno <span class=\"note-s\">Ko najvišja raven razmišljanja uporablja privzeto prilagoditev (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Cene Ailoot</h4><h4>Cene po nastavitvah</h4><p class=\"note-s\">Vsak strošek povežite s prikazanimi pogoji. Za vsak nabor alternativnih nastavitev uporabite eno ceno.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Nastavitev</th><th>Cenovna lestvica</th><th>Obračunana količina</th><th>Obračunska enota</th><th>Strošek</th></tr></thead><tbody><tr><th data-cell-label=\"Nastavitev\" scope=\"row\"><span class=\"card-cell-label\">Nastavitev</span>Osnovne cene žetonov</th><td data-cell-label=\"Cenovna lestvica\"><span class=\"card-cell-label\">Cenovna lestvica</span>Osnovna cena</td><td data-cell-label=\"Obračunana količina\"><span class=\"card-cell-label\">Obračunana količina</span>—</td><td data-cell-label=\"Obračunska enota\"><span class=\"card-cell-label\">Obračunska enota</span>—</td><td data-cell-label=\"Strošek\"><span class=\"card-cell-label\">Strošek</span><div><span>Vhod · Vhodni žetoni</span> <b>—</b> <span class=\"price-unit\">/ 1K žetonov</span></div><div><span>Izhod · Izhodni žetoni</span> <b>—</b> <span class=\"price-unit\">/ 1K žetonov</span></div><div><span>Vhod · Branje predpomnilnika</span> <b>—</b> <span class=\"price-unit\">/ 1K žetonov</span></div><div><span>Vhod · Zapis v predpomnilnik</span> <b>—</b> <span class=\"price-unit\">/ 1K žetonov</span></div><div><span>Vhod · Zapis v predpomnilnik, 1 ura</span> <b>—</b> <span class=\"price-unit\">/ 1K žetonov</span></div></td></tr><tr><th data-cell-label=\"Nastavitev\" scope=\"row\"><span class=\"card-cell-label\">Nastavitev</span>Ultra</th><td data-cell-label=\"Cenovna lestvica\"><span class=\"card-cell-label\">Cenovna lestvica</span>—</td><td data-cell-label=\"Obračunana količina\"><span class=\"card-cell-label\">Obračunana količina</span>Vsaka kodna točka Unicode šteje kot en znak, vključno z znaki Han.</td><td data-cell-label=\"Obračunska enota\"><span class=\"card-cell-label\">Obračunska enota</span>na 1K vhodnih znakov</td><td data-cell-label=\"Strošek\"><span class=\"card-cell-label\">Strošek</span><div><span>Vhod · vhodni znak</span> <b>$0.044</b> <span class=\"price-unit\">na 1K vhodnih znakov</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>Podrobnosti referenčne tarife</h4><p class=\"note-s\">Referenčne lestvice modela ne spreminjajo izbire metode, ocen cen ali stroškov. Veljavni stroški uporabljajo cene izbrane metode Ailoot.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Microsoft AI: MAI-Voice-2.1</summary><h4>Cene po nastavitvah</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Nastavitev</th><th>Obračunski pogoji</th><th>Strošek</th></tr></thead><tbody><tr><th data-cell-label=\"Nastavitev\" scope=\"row\"><span class=\"card-cell-label\">Nastavitev</span>Microsoft AI: MAI-Voice-2.1 · Privzeta konfiguracija</th><td data-cell-label=\"Obračunski pogoji\"><span class=\"card-cell-label\">Obračunski pogoji</span>Privzeta konfiguracija</td><td data-cell-label=\"Strošek\"><span class=\"card-cell-label\">Strošek</span><div><span>Vhod · Vhodni znaki</span> <b>0,000044 $</b> <span class=\"price-unit\">na vhodni znak</span></div></td></tr></tbody></table></div></details></div><p class=\"note-s\">Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. <a href=\"/docs/sl/billing/reserve/\">Kako delujeta rezervacija in obračun →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Primeri zahtev</h3><h4>Ailoot Ultra · Pretvorba v govor</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Primeri kode\"><button class=\"cg-tab\" id=\"model-code-1853-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1853-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiraj kodo\"><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-1853-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1853-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;microsoft/mai-voice-2.1&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;cs-CZ-Grant:MAI-Voice-2.1&quot;, &quot;cs-CZ-Harper:MAI-Voice-2.1&quot;, &quot;da-DK-Grant:MAI-Voice-2.1&quot;, &quot;da-DK-Harper:MAI-Voice-2.1&quot;, &quot;de-DE-Grant:MAI-Voice-2.1&quot;, &quot;de-DE-Harper:MAI-Voice-2.1&quot;, &quot;de-DE-Klaus:MAI-Voice-2.1&quot;, &quot;de-DE-Mia:MAI-Voice-2.1&quot;, &quot;en-AU-Isla:MAI-Voice-2.1&quot;, &quot;en-GB-Emily:MAI-Voice-2.1&quot;, &quot;en-GB-Harry:MAI-Voice-2.1&quot;, &quot;en-IN-Dhruv:MAI-Voice-2.1&quot;, &quot;en-IN-Priya:MAI-Voice-2.1&quot;, &quot;en-US-Ethan:MAI-Voice-2.1&quot;, &quot;en-US-Grant:MAI-Voice-2.1&quot;, &quot;en-US-Harper:MAI-Voice-2.1&quot;, &quot;en-US-Iris:MAI-Voice-2.1&quot;, &quot;en-US-Jasper:MAI-Voice-2.1&quot;, &quot;en-US-Olivia:MAI-Voice-2.1&quot;, &quot;en-US-Sage:MAI-Voice-2.1&quot;, &quot;es-ES-Marta:MAI-Voice-2.1&quot;, &quot;es-MX-Alejo:MAI-Voice-2.1&quot;, &quot;es-MX-Grant:MAI-Voice-2.1&quot;, &quot;es-MX-Harper:MAI-Voice-2.1&quot;, &quot;es-MX-Valeria:MAI-Voice-2.1&quot;, &quot;fi-FI-Grant:MAI-Voice-2.1&quot;, &quot;fi-FI-Harper:MAI-Voice-2.1&quot;, &quot;fr-FR-Grant:MAI-Voice-2.1&quot;, &quot;fr-FR-Harper:MAI-Voice-2.1&quot;, &quot;fr-FR-Marc:MAI-Voice-2.1&quot;, &quot;fr-FR-Soleil:MAI-Voice-2.1&quot;, &quot;hi-IN-Arjun:MAI-Voice-2.1&quot;, &quot;hi-IN-Dhruv:MAI-Voice-2.1&quot;, &quot;hi-IN-Grant:MAI-Voice-2.1&quot;, &quot;hi-IN-Harper:MAI-Voice-2.1&quot;, &quot;hi-IN-Kavya:MAI-Voice-2.1&quot;, &quot;hi-IN-Priya:MAI-Voice-2.1&quot;, &quot;hu-HU-Bence:MAI-Voice-2.1&quot;, &quot;hu-HU-Grant:MAI-Voice-2.1&quot;, &quot;hu-HU-Harper:MAI-Voice-2.1&quot;, &quot;hu-HU-Levente:MAI-Voice-2.1&quot;, &quot;hu-HU-Lilla:MAI-Voice-2.1&quot;, &quot;hu-HU-Reka:MAI-Voice-2.1&quot;, &quot;id-ID-Grant:MAI-Voice-2.1&quot;, &quot;id-ID-Harper:MAI-Voice-2.1&quot;, &quot;it-IT-Grant:MAI-Voice-2.1&quot;, &quot;it-IT-Harper:MAI-Voice-2.1&quot;, &quot;it-IT-Luca:MAI-Voice-2.1&quot;, &quot;it-IT-Rosa:MAI-Voice-2.1&quot;, &quot;ko-KR-Grant:MAI-Voice-2.1&quot;, &quot;ko-KR-Haena:MAI-Voice-2.1&quot;, &quot;ko-KR-Harper:MAI-Voice-2.1&quot;, &quot;ko-KR-Junho:MAI-Voice-2.1&quot;, &quot;nb-NO-Grant:MAI-Voice-2.1&quot;, &quot;nb-NO-Harper:MAI-Voice-2.1&quot;, &quot;nl-NL-Grant:MAI-Voice-2.1&quot;, &quot;nl-NL-Harper:MAI-Voice-2.1&quot;, &quot;nl-NL-Sander:MAI-Voice-2.1&quot;, &quot;pl-PL-Grant:MAI-Voice-2.1&quot;, &quot;pl-PL-Harper:MAI-Voice-2.1&quot;, &quot;pt-BR-Caio:MAI-Voice-2.1&quot;, &quot;pt-BR-Grant:MAI-Voice-2.1&quot;, &quot;pt-BR-Harper:MAI-Voice-2.1&quot;, &quot;pt-BR-Luana:MAI-Voice-2.1&quot;, &quot;pt-BR-Pedro:MAI-Voice-2.1&quot;, &quot;pt-BR-Rafael:MAI-Voice-2.1&quot;, &quot;pt-PT-Grant:MAI-Voice-2.1&quot;, &quot;pt-PT-Harper:MAI-Voice-2.1&quot;, &quot;pt-PT-Rui:MAI-Voice-2.1&quot;, &quot;ro-RO-Andrei:MAI-Voice-2.1&quot;, &quot;ro-RO-Elena:MAI-Voice-2.1&quot;, &quot;ro-RO-Grant:MAI-Voice-2.1&quot;, &quot;ro-RO-Harper:MAI-Voice-2.1&quot;, &quot;ro-RO-Ioana:MAI-Voice-2.1&quot;, &quot;ro-RO-Radu:MAI-Voice-2.1&quot;, &quot;ru-RU-Grant:MAI-Voice-2.1&quot;, &quot;ru-RU-Harper:MAI-Voice-2.1&quot;, &quot;ru-RU-Lev:MAI-Voice-2.1&quot;, &quot;ru-RU-Masha:MAI-Voice-2.1&quot;, &quot;sv-SE-Grant:MAI-Voice-2.1&quot;, &quot;sv-SE-Harper:MAI-Voice-2.1&quot;, &quot;th-TH-Grant:MAI-Voice-2.1&quot;, &quot;th-TH-Harper:MAI-Voice-2.1&quot;, &quot;th-TH-Krit:MAI-Voice-2.1&quot;, &quot;th-TH-Nattapong:MAI-Voice-2.1&quot;, &quot;tr-TR-Aydin:MAI-Voice-2.1&quot;, &quot;tr-TR-Elif:MAI-Voice-2.1&quot;, &quot;tr-TR-Grant:MAI-Voice-2.1&quot;, &quot;tr-TR-Harper:MAI-Voice-2.1&quot;, &quot;vi-VN-Grant:MAI-Voice-2.1&quot;, &quot;vi-VN-Harper:MAI-Voice-2.1&quot;, &quot;zh-CN-Bo:MAI-Voice-2.1&quot;, &quot;zh-CN-Grant:MAI-Voice-2.1&quot;, &quot;zh-CN-Harper:MAI-Voice-2.1&quot;, &quot;zh-CN-Lan:MAI-Voice-2.1&quot;, &quot;zh-CN-Mei:MAI-Voice-2.1&quot;, &quot;zh-CN-Wei:MAI-Voice-2.1&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\">Prejmi in shrani rezultate</h3><h4>Ailoot Ultra · Pretvorba v govor</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>Branje druge vsebine</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Primeri kode\"><button class=\"cg-tab\" id=\"model-code-1854-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1854-panel-0\" aria-selected=\"true\" tabindex=\"0\">Medijska knjižnica</button><button class=\"cg-tab\" id=\"model-code-1854-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1854-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Stanje opravila</button><button class=\"cg-tab\" id=\"model-code-1854-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1854-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Podrobnosti gradiva</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiraj kodo\"><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-1854-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1854-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-1854-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1854-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-1854-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1854-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>Ohrani vse dokončane rezultate</h5><p class=\"note-s\">Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.</p><p class=\"note-s\">Shranite celoten binarni rezultat in glave. Če so vrnjeni podatki JSON ali več izhodov, shranite vsak podatkovni element in pridobite vsebino z vsakega dejanskega podpisanega URL datoteke.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Če je treba preveriti izvirni odgovor</h5><p class=\"note-s\">Shranite izvirni operation_id/X-Client-Request-ID za uskladitev evidenc brez ponovnega pošiljanja; namenska pot za periodično preverjanje zvoka ne obstaja.</p></div><details class=\"card-about\" data-output-fields><summary>Polja odgovora</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Polje</th><th>Vrsta</th></tr></thead><tbody><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>bytes</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Napake in naslednji koraki</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Odgovor</th><th>Pogoj</th><th>Naslednji korak</th></tr></thead><tbody><tr><th data-cell-label=\"Odgovor\" scope=\"row\"><span class=\"card-cell-label\">Odgovor</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Pogoj\"><span class=\"card-cell-label\">Pogoj</span>Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra</td><td data-cell-label=\"Naslednji korak\"><span class=\"card-cell-label\">Naslednji korak</span>Pred novo zahtevo za ustvarjanje popravite navedena polja.</td></tr><tr><th data-cell-label=\"Odgovor\" scope=\"row\"><span class=\"card-cell-label\">Odgovor</span><code>server_error</code></th><td data-cell-label=\"Pogoj\"><span class=\"card-cell-label\">Pogoj</span>Vrnjeni odgovor navaja, da je treba operacijo ali rezultat preveriti</td><td data-cell-label=\"Naslednji korak\"><span class=\"card-cell-label\">Naslednji korak</span>Shranite izvirni vrnjeni ID operacije/opravila, glave zahteve in odgovor; nadaljujte s podprtimi branji te izvirne operacije. Zahteve za ustvarjanje ne pošiljajte znova.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Druga imena</h3><h4>Druga imena modelov</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=microsoft%2Fmai-voice-2.1&amp;route=Ultra&amp;caller=microsoft%2Fmai-voice-2.1&amp;fmt=speech\"><code>microsoft/mai-voice-2.1</code></a></span></p><h4>Druga imena poti metod</h4><p class=\"note-s\">Uporabite zgoraj navedene poti metod.</p><h4>Povezani ID-ji za klic</h4><p class=\"note-s\"><a href=\"#m=microsoft%2Fmai-voice-2.1&amp;route=Ultra&amp;caller=microsoft%2Fmai-voice-2.1&amp;fmt=speech\"><code>microsoft/mai-voice-2.1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "microsoft/mai-voice-2.1",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "microsoft/mai-voice-2.1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|microsoft%2Fmai-voice-2.1",
      "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": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Vrnjeni odgovor navaja, da je treba operacijo ali rezultat preveriti",
                "http_status": null,
                "recovery": "Shranite izvirni vrnjeni ID operacije/opravila, glave zahteve in odgovor; nadaljujte s podprtimi branji te izvirne operacije. Zahteve za ustvarjanje ne pošiljajte znova.",
                "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": "Shranite izvirni operation_id/X-Client-Request-ID za uskladitev evidenc brez ponovnega pošiljanja; namenska pot za periodično preverjanje zvoka ne obstaja."
            },
            "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": "Shranite celoten binarni rezultat in glave. Če so vrnjeni podatki JSON ali več izhodov, shranite vsak podatkovni element in pridobite vsebino z vsakega dejanskega podpisanega URL datoteke.",
              "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": [
                  "microsoft/mai-voice-2.1"
                ],
                "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": "znaki Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "cs-CZ-Grant:MAI-Voice-2.1",
                  "cs-CZ-Harper:MAI-Voice-2.1",
                  "da-DK-Grant:MAI-Voice-2.1",
                  "da-DK-Harper:MAI-Voice-2.1",
                  "de-DE-Grant:MAI-Voice-2.1",
                  "de-DE-Harper:MAI-Voice-2.1",
                  "de-DE-Klaus:MAI-Voice-2.1",
                  "de-DE-Mia:MAI-Voice-2.1",
                  "en-AU-Isla:MAI-Voice-2.1",
                  "en-GB-Emily:MAI-Voice-2.1",
                  "en-GB-Harry:MAI-Voice-2.1",
                  "en-IN-Dhruv:MAI-Voice-2.1",
                  "en-IN-Priya:MAI-Voice-2.1",
                  "en-US-Ethan:MAI-Voice-2.1",
                  "en-US-Grant:MAI-Voice-2.1",
                  "en-US-Harper:MAI-Voice-2.1",
                  "en-US-Iris:MAI-Voice-2.1",
                  "en-US-Jasper:MAI-Voice-2.1",
                  "en-US-Olivia:MAI-Voice-2.1",
                  "en-US-Sage:MAI-Voice-2.1",
                  "es-ES-Marta:MAI-Voice-2.1",
                  "es-MX-Alejo:MAI-Voice-2.1",
                  "es-MX-Grant:MAI-Voice-2.1",
                  "es-MX-Harper:MAI-Voice-2.1",
                  "es-MX-Valeria:MAI-Voice-2.1",
                  "fi-FI-Grant:MAI-Voice-2.1",
                  "fi-FI-Harper:MAI-Voice-2.1",
                  "fr-FR-Grant:MAI-Voice-2.1",
                  "fr-FR-Harper:MAI-Voice-2.1",
                  "fr-FR-Marc:MAI-Voice-2.1",
                  "fr-FR-Soleil:MAI-Voice-2.1",
                  "hi-IN-Arjun:MAI-Voice-2.1",
                  "hi-IN-Dhruv:MAI-Voice-2.1",
                  "hi-IN-Grant:MAI-Voice-2.1",
                  "hi-IN-Harper:MAI-Voice-2.1",
                  "hi-IN-Kavya:MAI-Voice-2.1",
                  "hi-IN-Priya:MAI-Voice-2.1",
                  "hu-HU-Bence:MAI-Voice-2.1",
                  "hu-HU-Grant:MAI-Voice-2.1",
                  "hu-HU-Harper:MAI-Voice-2.1",
                  "hu-HU-Levente:MAI-Voice-2.1",
                  "hu-HU-Lilla:MAI-Voice-2.1",
                  "hu-HU-Reka:MAI-Voice-2.1",
                  "id-ID-Grant:MAI-Voice-2.1",
                  "id-ID-Harper:MAI-Voice-2.1",
                  "it-IT-Grant:MAI-Voice-2.1",
                  "it-IT-Harper:MAI-Voice-2.1",
                  "it-IT-Luca:MAI-Voice-2.1",
                  "it-IT-Rosa:MAI-Voice-2.1",
                  "ko-KR-Grant:MAI-Voice-2.1",
                  "ko-KR-Haena:MAI-Voice-2.1",
                  "ko-KR-Harper:MAI-Voice-2.1",
                  "ko-KR-Junho:MAI-Voice-2.1",
                  "nb-NO-Grant:MAI-Voice-2.1",
                  "nb-NO-Harper:MAI-Voice-2.1",
                  "nl-NL-Grant:MAI-Voice-2.1",
                  "nl-NL-Harper:MAI-Voice-2.1",
                  "nl-NL-Sander:MAI-Voice-2.1",
                  "pl-PL-Grant:MAI-Voice-2.1",
                  "pl-PL-Harper:MAI-Voice-2.1",
                  "pt-BR-Caio:MAI-Voice-2.1",
                  "pt-BR-Grant:MAI-Voice-2.1",
                  "pt-BR-Harper:MAI-Voice-2.1",
                  "pt-BR-Luana:MAI-Voice-2.1",
                  "pt-BR-Pedro:MAI-Voice-2.1",
                  "pt-BR-Rafael:MAI-Voice-2.1",
                  "pt-PT-Grant:MAI-Voice-2.1",
                  "pt-PT-Harper:MAI-Voice-2.1",
                  "pt-PT-Rui:MAI-Voice-2.1",
                  "ro-RO-Andrei:MAI-Voice-2.1",
                  "ro-RO-Elena:MAI-Voice-2.1",
                  "ro-RO-Grant:MAI-Voice-2.1",
                  "ro-RO-Harper:MAI-Voice-2.1",
                  "ro-RO-Ioana:MAI-Voice-2.1",
                  "ro-RO-Radu:MAI-Voice-2.1",
                  "ru-RU-Grant:MAI-Voice-2.1",
                  "ru-RU-Harper:MAI-Voice-2.1",
                  "ru-RU-Lev:MAI-Voice-2.1",
                  "ru-RU-Masha:MAI-Voice-2.1",
                  "sv-SE-Grant:MAI-Voice-2.1",
                  "sv-SE-Harper:MAI-Voice-2.1",
                  "th-TH-Grant:MAI-Voice-2.1",
                  "th-TH-Harper:MAI-Voice-2.1",
                  "th-TH-Krit:MAI-Voice-2.1",
                  "th-TH-Nattapong:MAI-Voice-2.1",
                  "tr-TR-Aydin:MAI-Voice-2.1",
                  "tr-TR-Elif:MAI-Voice-2.1",
                  "tr-TR-Grant:MAI-Voice-2.1",
                  "tr-TR-Harper:MAI-Voice-2.1",
                  "vi-VN-Grant:MAI-Voice-2.1",
                  "vi-VN-Harper:MAI-Voice-2.1",
                  "zh-CN-Bo:MAI-Voice-2.1",
                  "zh-CN-Grant:MAI-Voice-2.1",
                  "zh-CN-Harper:MAI-Voice-2.1",
                  "zh-CN-Lan:MAI-Voice-2.1",
                  "zh-CN-Mei:MAI-Voice-2.1",
                  "zh-CN-Wei:MAI-Voice-2.1"
                ],
                "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": [
            "Izberite natančen glas iz profila tega modela.",
            "Vhodni znaki in zvočne sekunde so različni merili porabe."
          ],
          "input": {
            "content_type": "application/json",
            "input": "natančno besedilo UTF-8; število znakov Unicode brez normalizacije",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "cs-CZ-Grant:MAI-Voice-2.1",
              "cs-CZ-Harper:MAI-Voice-2.1",
              "da-DK-Grant:MAI-Voice-2.1",
              "da-DK-Harper:MAI-Voice-2.1",
              "de-DE-Grant:MAI-Voice-2.1",
              "de-DE-Harper:MAI-Voice-2.1",
              "de-DE-Klaus:MAI-Voice-2.1",
              "de-DE-Mia:MAI-Voice-2.1",
              "en-AU-Isla:MAI-Voice-2.1",
              "en-GB-Emily:MAI-Voice-2.1",
              "en-GB-Harry:MAI-Voice-2.1",
              "en-IN-Dhruv:MAI-Voice-2.1",
              "en-IN-Priya:MAI-Voice-2.1",
              "en-US-Ethan:MAI-Voice-2.1",
              "en-US-Grant:MAI-Voice-2.1",
              "en-US-Harper:MAI-Voice-2.1",
              "en-US-Iris:MAI-Voice-2.1",
              "en-US-Jasper:MAI-Voice-2.1",
              "en-US-Olivia:MAI-Voice-2.1",
              "en-US-Sage:MAI-Voice-2.1",
              "es-ES-Marta:MAI-Voice-2.1",
              "es-MX-Alejo:MAI-Voice-2.1",
              "es-MX-Grant:MAI-Voice-2.1",
              "es-MX-Harper:MAI-Voice-2.1",
              "es-MX-Valeria:MAI-Voice-2.1",
              "fi-FI-Grant:MAI-Voice-2.1",
              "fi-FI-Harper:MAI-Voice-2.1",
              "fr-FR-Grant:MAI-Voice-2.1",
              "fr-FR-Harper:MAI-Voice-2.1",
              "fr-FR-Marc:MAI-Voice-2.1",
              "fr-FR-Soleil:MAI-Voice-2.1",
              "hi-IN-Arjun:MAI-Voice-2.1",
              "hi-IN-Dhruv:MAI-Voice-2.1",
              "hi-IN-Grant:MAI-Voice-2.1",
              "hi-IN-Harper:MAI-Voice-2.1",
              "hi-IN-Kavya:MAI-Voice-2.1",
              "hi-IN-Priya:MAI-Voice-2.1",
              "hu-HU-Bence:MAI-Voice-2.1",
              "hu-HU-Grant:MAI-Voice-2.1",
              "hu-HU-Harper:MAI-Voice-2.1",
              "hu-HU-Levente:MAI-Voice-2.1",
              "hu-HU-Lilla:MAI-Voice-2.1",
              "hu-HU-Reka:MAI-Voice-2.1",
              "id-ID-Grant:MAI-Voice-2.1",
              "id-ID-Harper:MAI-Voice-2.1",
              "it-IT-Grant:MAI-Voice-2.1",
              "it-IT-Harper:MAI-Voice-2.1",
              "it-IT-Luca:MAI-Voice-2.1",
              "it-IT-Rosa:MAI-Voice-2.1",
              "ko-KR-Grant:MAI-Voice-2.1",
              "ko-KR-Haena:MAI-Voice-2.1",
              "ko-KR-Harper:MAI-Voice-2.1",
              "ko-KR-Junho:MAI-Voice-2.1",
              "nb-NO-Grant:MAI-Voice-2.1",
              "nb-NO-Harper:MAI-Voice-2.1",
              "nl-NL-Grant:MAI-Voice-2.1",
              "nl-NL-Harper:MAI-Voice-2.1",
              "nl-NL-Sander:MAI-Voice-2.1",
              "pl-PL-Grant:MAI-Voice-2.1",
              "pl-PL-Harper:MAI-Voice-2.1",
              "pt-BR-Caio:MAI-Voice-2.1",
              "pt-BR-Grant:MAI-Voice-2.1",
              "pt-BR-Harper:MAI-Voice-2.1",
              "pt-BR-Luana:MAI-Voice-2.1",
              "pt-BR-Pedro:MAI-Voice-2.1",
              "pt-BR-Rafael:MAI-Voice-2.1",
              "pt-PT-Grant:MAI-Voice-2.1",
              "pt-PT-Harper:MAI-Voice-2.1",
              "pt-PT-Rui:MAI-Voice-2.1",
              "ro-RO-Andrei:MAI-Voice-2.1",
              "ro-RO-Elena:MAI-Voice-2.1",
              "ro-RO-Grant:MAI-Voice-2.1",
              "ro-RO-Harper:MAI-Voice-2.1",
              "ro-RO-Ioana:MAI-Voice-2.1",
              "ro-RO-Radu:MAI-Voice-2.1",
              "ru-RU-Grant:MAI-Voice-2.1",
              "ru-RU-Harper:MAI-Voice-2.1",
              "ru-RU-Lev:MAI-Voice-2.1",
              "ru-RU-Masha:MAI-Voice-2.1",
              "sv-SE-Grant:MAI-Voice-2.1",
              "sv-SE-Harper:MAI-Voice-2.1",
              "th-TH-Grant:MAI-Voice-2.1",
              "th-TH-Harper:MAI-Voice-2.1",
              "th-TH-Krit:MAI-Voice-2.1",
              "th-TH-Nattapong:MAI-Voice-2.1",
              "tr-TR-Aydin:MAI-Voice-2.1",
              "tr-TR-Elif:MAI-Voice-2.1",
              "tr-TR-Grant:MAI-Voice-2.1",
              "tr-TR-Harper:MAI-Voice-2.1",
              "vi-VN-Grant:MAI-Voice-2.1",
              "vi-VN-Harper:MAI-Voice-2.1",
              "zh-CN-Bo:MAI-Voice-2.1",
              "zh-CN-Grant:MAI-Voice-2.1",
              "zh-CN-Harper:MAI-Voice-2.1",
              "zh-CN-Lan:MAI-Voice-2.1",
              "zh-CN-Mei:MAI-Voice-2.1",
              "zh-CN-Wei:MAI-Voice-2.1"
            ]
          },
          "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": "Dejansko vrnjeni task_id ali zapis v medijski knjižnici",
                "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.044000",
                "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.000044",
                "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": "53ceea2ccaa50cadb12f",
            "label": "Microsoft AI: MAI-Voice-2.1",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Privzeta konfiguracija"
                },
                "label": "Microsoft AI: MAI-Voice-2.1 · Privzeta konfiguracija",
                "units": [
                  {
                    "amount": "0.000044",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "8d1e4e9bf0f3647249d90a3c",
                    "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\": \"microsoft/mai-voice-2.1\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"cs-CZ-Grant:MAI-Voice-2.1\", \"cs-CZ-Harper:MAI-Voice-2.1\", \"da-DK-Grant:MAI-Voice-2.1\", \"da-DK-Harper:MAI-Voice-2.1\", \"de-DE-Grant:MAI-Voice-2.1\", \"de-DE-Harper:MAI-Voice-2.1\", \"de-DE-Klaus:MAI-Voice-2.1\", \"de-DE-Mia:MAI-Voice-2.1\", \"en-AU-Isla:MAI-Voice-2.1\", \"en-GB-Emily:MAI-Voice-2.1\", \"en-GB-Harry:MAI-Voice-2.1\", \"en-IN-Dhruv:MAI-Voice-2.1\", \"en-IN-Priya:MAI-Voice-2.1\", \"en-US-Ethan:MAI-Voice-2.1\", \"en-US-Grant:MAI-Voice-2.1\", \"en-US-Harper:MAI-Voice-2.1\", \"en-US-Iris:MAI-Voice-2.1\", \"en-US-Jasper:MAI-Voice-2.1\", \"en-US-Olivia:MAI-Voice-2.1\", \"en-US-Sage:MAI-Voice-2.1\", \"es-ES-Marta:MAI-Voice-2.1\", \"es-MX-Alejo:MAI-Voice-2.1\", \"es-MX-Grant:MAI-Voice-2.1\", \"es-MX-Harper:MAI-Voice-2.1\", \"es-MX-Valeria:MAI-Voice-2.1\", \"fi-FI-Grant:MAI-Voice-2.1\", \"fi-FI-Harper:MAI-Voice-2.1\", \"fr-FR-Grant:MAI-Voice-2.1\", \"fr-FR-Harper:MAI-Voice-2.1\", \"fr-FR-Marc:MAI-Voice-2.1\", \"fr-FR-Soleil:MAI-Voice-2.1\", \"hi-IN-Arjun:MAI-Voice-2.1\", \"hi-IN-Dhruv:MAI-Voice-2.1\", \"hi-IN-Grant:MAI-Voice-2.1\", \"hi-IN-Harper:MAI-Voice-2.1\", \"hi-IN-Kavya:MAI-Voice-2.1\", \"hi-IN-Priya:MAI-Voice-2.1\", \"hu-HU-Bence:MAI-Voice-2.1\", \"hu-HU-Grant:MAI-Voice-2.1\", \"hu-HU-Harper:MAI-Voice-2.1\", \"hu-HU-Levente:MAI-Voice-2.1\", \"hu-HU-Lilla:MAI-Voice-2.1\", \"hu-HU-Reka:MAI-Voice-2.1\", \"id-ID-Grant:MAI-Voice-2.1\", \"id-ID-Harper:MAI-Voice-2.1\", \"it-IT-Grant:MAI-Voice-2.1\", \"it-IT-Harper:MAI-Voice-2.1\", \"it-IT-Luca:MAI-Voice-2.1\", \"it-IT-Rosa:MAI-Voice-2.1\", \"ko-KR-Grant:MAI-Voice-2.1\", \"ko-KR-Haena:MAI-Voice-2.1\", \"ko-KR-Harper:MAI-Voice-2.1\", \"ko-KR-Junho:MAI-Voice-2.1\", \"nb-NO-Grant:MAI-Voice-2.1\", \"nb-NO-Harper:MAI-Voice-2.1\", \"nl-NL-Grant:MAI-Voice-2.1\", \"nl-NL-Harper:MAI-Voice-2.1\", \"nl-NL-Sander:MAI-Voice-2.1\", \"pl-PL-Grant:MAI-Voice-2.1\", \"pl-PL-Harper:MAI-Voice-2.1\", \"pt-BR-Caio:MAI-Voice-2.1\", \"pt-BR-Grant:MAI-Voice-2.1\", \"pt-BR-Harper:MAI-Voice-2.1\", \"pt-BR-Luana:MAI-Voice-2.1\", \"pt-BR-Pedro:MAI-Voice-2.1\", \"pt-BR-Rafael:MAI-Voice-2.1\", \"pt-PT-Grant:MAI-Voice-2.1\", \"pt-PT-Harper:MAI-Voice-2.1\", \"pt-PT-Rui:MAI-Voice-2.1\", \"ro-RO-Andrei:MAI-Voice-2.1\", \"ro-RO-Elena:MAI-Voice-2.1\", \"ro-RO-Grant:MAI-Voice-2.1\", \"ro-RO-Harper:MAI-Voice-2.1\", \"ro-RO-Ioana:MAI-Voice-2.1\", \"ro-RO-Radu:MAI-Voice-2.1\", \"ru-RU-Grant:MAI-Voice-2.1\", \"ru-RU-Harper:MAI-Voice-2.1\", \"ru-RU-Lev:MAI-Voice-2.1\", \"ru-RU-Masha:MAI-Voice-2.1\", \"sv-SE-Grant:MAI-Voice-2.1\", \"sv-SE-Harper:MAI-Voice-2.1\", \"th-TH-Grant:MAI-Voice-2.1\", \"th-TH-Harper:MAI-Voice-2.1\", \"th-TH-Krit:MAI-Voice-2.1\", \"th-TH-Nattapong:MAI-Voice-2.1\", \"tr-TR-Aydin:MAI-Voice-2.1\", \"tr-TR-Elif:MAI-Voice-2.1\", \"tr-TR-Grant:MAI-Voice-2.1\", \"tr-TR-Harper:MAI-Voice-2.1\", \"vi-VN-Grant:MAI-Voice-2.1\", \"vi-VN-Harper:MAI-Voice-2.1\", \"zh-CN-Bo:MAI-Voice-2.1\", \"zh-CN-Grant:MAI-Voice-2.1\", \"zh-CN-Harper:MAI-Voice-2.1\", \"zh-CN-Lan:MAI-Voice-2.1\", \"zh-CN-Mei:MAI-Voice-2.1\", \"zh-CN-Wei:MAI-Voice-2.1\"]')\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": 4.4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.044000",
                "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.000044",
                "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": "microsoft/mai-voice-2.1",
        "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.044000",
            "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.000044",
            "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": "microsoft/mai-voice-2.1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "94c55e257d57cc5a37eec45ad095339d78c2afeca482b31e4f80b0c90ae82227",
    "input_html_sha256": "ba619464fa9c01802764ad1659b917af296fbaf29120d0eb05052520f9689e33",
    "private_audit_sha256": "fef2209b84b5e559ebc06ab224bef9de7eb62d46ce216212acb2c80292036afc",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sl/microsoft-mai-voice-2-1/",
    "description": "MAI-Voice-2.1 podjetja Microsoft AI ustvarja izrazni večjezični govor za pripovedovanje, zvočne knjige, izobraževalne vsebine in spremljevalni govor. Njegov profil s 23 jeziki podpira dosledno identiteto govorca, več govorcev in nadzorovano podajanje.",
    "locale": "sl",
    "md_url": "https://ailoot.ai/models/sl/microsoft-mai-voice-2-1/index.md",
    "title": "Microsoft AI: MAI-Voice-2.1 — Ailoot",
    "url": "https://ailoot.ai/models/sl/microsoft-mai-voice-2-1/"
  },
  "rawModel": {
    "about": "MAI-Voice-2.1 je model podjetja Microsoft AI za pretvorbo besedila v govor, usmerjano z navodili, za delo, pri katerem sta pomembni izrazno podajanje in zvočna zvestoba. Njegova kartica modela pokriva triindvajset jezikov in šestindvajset jezikovnih različic z naravno intonacijo, ritmom in čustvenimi odtenki. Proizvajalec kot osrednje uporabe navaja zvočne knjige, medijsko pripovedovanje, ustvarjanje vsebin in spremljevalni govor. Ta izdaja poudarja daljše izrazne vsebine; MAI-Voice-2.1-Flash je ločena izbira, zasnovana za interakcijo, občutljivo na zakasnitev.\n\n### Pripovedovanje z doslednim govorcem\n\nKartica modela dokumentira eno glasovno identiteto, dosledno upodobljeno v vseh podprtih jezikih. Ustvarjanje dolgih vsebin uporablja delitev in prenos konteksta za boljšo kontinuiteto med odlomki. To je uporabno za učno enoto, poglavje zvočne knjige ali zaporedje povezanih odsekov spremljevalnega govora, ki naj ohranijo pripovedovalčev značaj. Pripravite povezane odlomke z jasnimi mejami in skozi vsebino ohranite isto izbiro govorca.\n\nVnos je končno besedilo z neobvezno referenco govorca in izraznimi nastavitvami SSML. Izhodišče za pripoved naj razlikuje med tem, kar poslušalec sliši, in produkcijskimi opombami. Za tehnično razlago napišite jasen uvod, nato dejanske korake in zaključno navodilo. Imena izdelkov in ponavljajoče se izraze zapisujte dosledno. Za lokalizirano pripoved pripravite scenarij v ciljnem jeziku; izbrani jezik in glas določata njegovo govorno upodobitev.\n\n### Govorci, vloge in izrazni nadzor\n\nMicrosoft zagotavlja izbrano knjižnico glasov in dokumentira več govorcev za dialog. Harper in Grant ponazarjata identiteti govorcev z vnosi za več jezikovnih različic. Dvosebna izobraževalna izmenjava lahko vprašanje in razlago dodeli različnima glasovoma ter ohrani isto dodelitev, ko se vloga vrne. Govorjene vrstice jasno označite, da je želeni pogovor predstavljen v vhodu za sintezo.\n\nTon in podajanje je mogoče oblikovati na ravni govorne menjave ali stavka prek SSML. Slogi so specifični za govorca: upravljani katalog navaja namenski pripovedni ali izobraževalni slog za ustrezne glasove in čustvene izbire, kot sta veselje ali olajšanje, za druge. Ameriški vnos Harper podpira ta dva čustvena sloga. Govorca in njegov dokumentirani slog podajanja izberite skupaj, namesto da bi slog prenesli iz drugega glasu.\n\nPri zgodbi ali predstavitvi lahko izraznost razlikuje stvarno razlago, razmišljujoč odlomek in živahen navedek. Praktična vrstica je: »Prvi poskus nam je dal nepopolno sliko. Ko smo pogledali celotno zaporedje, je manjkajoči korak postal jasen.« Določite, kje se pomen spremeni, in temu primerno pripravite govorne enote. Poslušajte prehode, da podajanje sledi pripovedi, namesto da bi bil vsak stavek enako poudarjen.\n\n### Referenčni glas in zvočni rezultat\n\nNeobvezni način prilagojenega glasu posnema govorca, ki je podal soglasje, iz pet- do šestdesetsekundne zvočne reference brez dodatnega učenja. Microsoft priporoča naravno pogovorno podajanje in zmerno energijo v tej referenci, saj vzorec vpliva na ustvarjeni glas. Njegov potek prilagojenega glasu zahteva odobritev proizvajalca in posneto izjavo soglasja. Vnaprej pripravljena knjižnica je ločena pot izbire glasu.\n\nProizvajalec omogoča izbiro izhodnega formata, njegov objavljeni primer sinteze pa shrani mono MP3 pri 24 kHz in 160 kbit/s. Te nastavitve opisujejo en izhodni potek. Zvočno predstavitev izberite za naslednjo stopnjo urejanja ali predvajanja ter z zapisom povežite scenarij, govorca in vrstni red razdelkov. Dokončano poglavje ali učna enota lahko vsebuje več ustvarjenih odlomkov, hkrati pa ostaja ena povezana poslušalska izkušnja.\n\n### Uporabite rezultat dolge vsebine\n\nMAI-Voice-2.1 je usmerjen v naravnost in izraznost, kadar je takojšnji odzivni čas manj pomemben kot govorna izvedba. Pri daljši vsebini preverite ponavljajoča se imena, meje razdelkov, glasove, dodeljene dialogu, in spremembe čustvenega registra. Dokumentacija določa zmožnost dolgih vsebin in mehanizme doslednosti, ne da bi navedla neomejen scenarij ali zagotovljeno največje trajanje posnetka. Praktičen izdelek je izrazni zvok, katerega pripovedovalec, besedilo in potek ustrezajo pripravljenemu gradivu.",
    "alias_of": null,
    "aliases": [],
    "author": "Microsoft AI",
    "available": null,
    "canonical_model": "microsoft/mai-voice-2.1",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.044000",
            "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.000044",
            "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": "Celoten cenik konfiguracije je v podrobnostih."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "microsoft/mai-voice-2.1",
    "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": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Vrnjeni odgovor navaja, da je treba operacijo ali rezultat preveriti",
                "http_status": null,
                "recovery": "Shranite izvirni vrnjeni ID operacije/opravila, glave zahteve in odgovor; nadaljujte s podprtimi branji te izvirne operacije. Zahteve za ustvarjanje ne pošiljajte znova.",
                "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": "Shranite izvirni operation_id/X-Client-Request-ID za uskladitev evidenc brez ponovnega pošiljanja; namenska pot za periodično preverjanje zvoka ne obstaja."
            },
            "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": "Shranite celoten binarni rezultat in glave. Če so vrnjeni podatki JSON ali več izhodov, shranite vsak podatkovni element in pridobite vsebino z vsakega dejanskega podpisanega URL datoteke.",
              "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": [
                  "microsoft/mai-voice-2.1"
                ],
                "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": "znaki Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "cs-CZ-Grant:MAI-Voice-2.1",
                  "cs-CZ-Harper:MAI-Voice-2.1",
                  "da-DK-Grant:MAI-Voice-2.1",
                  "da-DK-Harper:MAI-Voice-2.1",
                  "de-DE-Grant:MAI-Voice-2.1",
                  "de-DE-Harper:MAI-Voice-2.1",
                  "de-DE-Klaus:MAI-Voice-2.1",
                  "de-DE-Mia:MAI-Voice-2.1",
                  "en-AU-Isla:MAI-Voice-2.1",
                  "en-GB-Emily:MAI-Voice-2.1",
                  "en-GB-Harry:MAI-Voice-2.1",
                  "en-IN-Dhruv:MAI-Voice-2.1",
                  "en-IN-Priya:MAI-Voice-2.1",
                  "en-US-Ethan:MAI-Voice-2.1",
                  "en-US-Grant:MAI-Voice-2.1",
                  "en-US-Harper:MAI-Voice-2.1",
                  "en-US-Iris:MAI-Voice-2.1",
                  "en-US-Jasper:MAI-Voice-2.1",
                  "en-US-Olivia:MAI-Voice-2.1",
                  "en-US-Sage:MAI-Voice-2.1",
                  "es-ES-Marta:MAI-Voice-2.1",
                  "es-MX-Alejo:MAI-Voice-2.1",
                  "es-MX-Grant:MAI-Voice-2.1",
                  "es-MX-Harper:MAI-Voice-2.1",
                  "es-MX-Valeria:MAI-Voice-2.1",
                  "fi-FI-Grant:MAI-Voice-2.1",
                  "fi-FI-Harper:MAI-Voice-2.1",
                  "fr-FR-Grant:MAI-Voice-2.1",
                  "fr-FR-Harper:MAI-Voice-2.1",
                  "fr-FR-Marc:MAI-Voice-2.1",
                  "fr-FR-Soleil:MAI-Voice-2.1",
                  "hi-IN-Arjun:MAI-Voice-2.1",
                  "hi-IN-Dhruv:MAI-Voice-2.1",
                  "hi-IN-Grant:MAI-Voice-2.1",
                  "hi-IN-Harper:MAI-Voice-2.1",
                  "hi-IN-Kavya:MAI-Voice-2.1",
                  "hi-IN-Priya:MAI-Voice-2.1",
                  "hu-HU-Bence:MAI-Voice-2.1",
                  "hu-HU-Grant:MAI-Voice-2.1",
                  "hu-HU-Harper:MAI-Voice-2.1",
                  "hu-HU-Levente:MAI-Voice-2.1",
                  "hu-HU-Lilla:MAI-Voice-2.1",
                  "hu-HU-Reka:MAI-Voice-2.1",
                  "id-ID-Grant:MAI-Voice-2.1",
                  "id-ID-Harper:MAI-Voice-2.1",
                  "it-IT-Grant:MAI-Voice-2.1",
                  "it-IT-Harper:MAI-Voice-2.1",
                  "it-IT-Luca:MAI-Voice-2.1",
                  "it-IT-Rosa:MAI-Voice-2.1",
                  "ko-KR-Grant:MAI-Voice-2.1",
                  "ko-KR-Haena:MAI-Voice-2.1",
                  "ko-KR-Harper:MAI-Voice-2.1",
                  "ko-KR-Junho:MAI-Voice-2.1",
                  "nb-NO-Grant:MAI-Voice-2.1",
                  "nb-NO-Harper:MAI-Voice-2.1",
                  "nl-NL-Grant:MAI-Voice-2.1",
                  "nl-NL-Harper:MAI-Voice-2.1",
                  "nl-NL-Sander:MAI-Voice-2.1",
                  "pl-PL-Grant:MAI-Voice-2.1",
                  "pl-PL-Harper:MAI-Voice-2.1",
                  "pt-BR-Caio:MAI-Voice-2.1",
                  "pt-BR-Grant:MAI-Voice-2.1",
                  "pt-BR-Harper:MAI-Voice-2.1",
                  "pt-BR-Luana:MAI-Voice-2.1",
                  "pt-BR-Pedro:MAI-Voice-2.1",
                  "pt-BR-Rafael:MAI-Voice-2.1",
                  "pt-PT-Grant:MAI-Voice-2.1",
                  "pt-PT-Harper:MAI-Voice-2.1",
                  "pt-PT-Rui:MAI-Voice-2.1",
                  "ro-RO-Andrei:MAI-Voice-2.1",
                  "ro-RO-Elena:MAI-Voice-2.1",
                  "ro-RO-Grant:MAI-Voice-2.1",
                  "ro-RO-Harper:MAI-Voice-2.1",
                  "ro-RO-Ioana:MAI-Voice-2.1",
                  "ro-RO-Radu:MAI-Voice-2.1",
                  "ru-RU-Grant:MAI-Voice-2.1",
                  "ru-RU-Harper:MAI-Voice-2.1",
                  "ru-RU-Lev:MAI-Voice-2.1",
                  "ru-RU-Masha:MAI-Voice-2.1",
                  "sv-SE-Grant:MAI-Voice-2.1",
                  "sv-SE-Harper:MAI-Voice-2.1",
                  "th-TH-Grant:MAI-Voice-2.1",
                  "th-TH-Harper:MAI-Voice-2.1",
                  "th-TH-Krit:MAI-Voice-2.1",
                  "th-TH-Nattapong:MAI-Voice-2.1",
                  "tr-TR-Aydin:MAI-Voice-2.1",
                  "tr-TR-Elif:MAI-Voice-2.1",
                  "tr-TR-Grant:MAI-Voice-2.1",
                  "tr-TR-Harper:MAI-Voice-2.1",
                  "vi-VN-Grant:MAI-Voice-2.1",
                  "vi-VN-Harper:MAI-Voice-2.1",
                  "zh-CN-Bo:MAI-Voice-2.1",
                  "zh-CN-Grant:MAI-Voice-2.1",
                  "zh-CN-Harper:MAI-Voice-2.1",
                  "zh-CN-Lan:MAI-Voice-2.1",
                  "zh-CN-Mei:MAI-Voice-2.1",
                  "zh-CN-Wei:MAI-Voice-2.1"
                ],
                "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": [
            "Izberite natančen glas iz profila tega modela.",
            "Vhodni znaki in zvočne sekunde so različni merili porabe."
          ],
          "input": {
            "content_type": "application/json",
            "input": "natančno besedilo UTF-8; število znakov Unicode brez normalizacije",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "cs-CZ-Grant:MAI-Voice-2.1",
              "cs-CZ-Harper:MAI-Voice-2.1",
              "da-DK-Grant:MAI-Voice-2.1",
              "da-DK-Harper:MAI-Voice-2.1",
              "de-DE-Grant:MAI-Voice-2.1",
              "de-DE-Harper:MAI-Voice-2.1",
              "de-DE-Klaus:MAI-Voice-2.1",
              "de-DE-Mia:MAI-Voice-2.1",
              "en-AU-Isla:MAI-Voice-2.1",
              "en-GB-Emily:MAI-Voice-2.1",
              "en-GB-Harry:MAI-Voice-2.1",
              "en-IN-Dhruv:MAI-Voice-2.1",
              "en-IN-Priya:MAI-Voice-2.1",
              "en-US-Ethan:MAI-Voice-2.1",
              "en-US-Grant:MAI-Voice-2.1",
              "en-US-Harper:MAI-Voice-2.1",
              "en-US-Iris:MAI-Voice-2.1",
              "en-US-Jasper:MAI-Voice-2.1",
              "en-US-Olivia:MAI-Voice-2.1",
              "en-US-Sage:MAI-Voice-2.1",
              "es-ES-Marta:MAI-Voice-2.1",
              "es-MX-Alejo:MAI-Voice-2.1",
              "es-MX-Grant:MAI-Voice-2.1",
              "es-MX-Harper:MAI-Voice-2.1",
              "es-MX-Valeria:MAI-Voice-2.1",
              "fi-FI-Grant:MAI-Voice-2.1",
              "fi-FI-Harper:MAI-Voice-2.1",
              "fr-FR-Grant:MAI-Voice-2.1",
              "fr-FR-Harper:MAI-Voice-2.1",
              "fr-FR-Marc:MAI-Voice-2.1",
              "fr-FR-Soleil:MAI-Voice-2.1",
              "hi-IN-Arjun:MAI-Voice-2.1",
              "hi-IN-Dhruv:MAI-Voice-2.1",
              "hi-IN-Grant:MAI-Voice-2.1",
              "hi-IN-Harper:MAI-Voice-2.1",
              "hi-IN-Kavya:MAI-Voice-2.1",
              "hi-IN-Priya:MAI-Voice-2.1",
              "hu-HU-Bence:MAI-Voice-2.1",
              "hu-HU-Grant:MAI-Voice-2.1",
              "hu-HU-Harper:MAI-Voice-2.1",
              "hu-HU-Levente:MAI-Voice-2.1",
              "hu-HU-Lilla:MAI-Voice-2.1",
              "hu-HU-Reka:MAI-Voice-2.1",
              "id-ID-Grant:MAI-Voice-2.1",
              "id-ID-Harper:MAI-Voice-2.1",
              "it-IT-Grant:MAI-Voice-2.1",
              "it-IT-Harper:MAI-Voice-2.1",
              "it-IT-Luca:MAI-Voice-2.1",
              "it-IT-Rosa:MAI-Voice-2.1",
              "ko-KR-Grant:MAI-Voice-2.1",
              "ko-KR-Haena:MAI-Voice-2.1",
              "ko-KR-Harper:MAI-Voice-2.1",
              "ko-KR-Junho:MAI-Voice-2.1",
              "nb-NO-Grant:MAI-Voice-2.1",
              "nb-NO-Harper:MAI-Voice-2.1",
              "nl-NL-Grant:MAI-Voice-2.1",
              "nl-NL-Harper:MAI-Voice-2.1",
              "nl-NL-Sander:MAI-Voice-2.1",
              "pl-PL-Grant:MAI-Voice-2.1",
              "pl-PL-Harper:MAI-Voice-2.1",
              "pt-BR-Caio:MAI-Voice-2.1",
              "pt-BR-Grant:MAI-Voice-2.1",
              "pt-BR-Harper:MAI-Voice-2.1",
              "pt-BR-Luana:MAI-Voice-2.1",
              "pt-BR-Pedro:MAI-Voice-2.1",
              "pt-BR-Rafael:MAI-Voice-2.1",
              "pt-PT-Grant:MAI-Voice-2.1",
              "pt-PT-Harper:MAI-Voice-2.1",
              "pt-PT-Rui:MAI-Voice-2.1",
              "ro-RO-Andrei:MAI-Voice-2.1",
              "ro-RO-Elena:MAI-Voice-2.1",
              "ro-RO-Grant:MAI-Voice-2.1",
              "ro-RO-Harper:MAI-Voice-2.1",
              "ro-RO-Ioana:MAI-Voice-2.1",
              "ro-RO-Radu:MAI-Voice-2.1",
              "ru-RU-Grant:MAI-Voice-2.1",
              "ru-RU-Harper:MAI-Voice-2.1",
              "ru-RU-Lev:MAI-Voice-2.1",
              "ru-RU-Masha:MAI-Voice-2.1",
              "sv-SE-Grant:MAI-Voice-2.1",
              "sv-SE-Harper:MAI-Voice-2.1",
              "th-TH-Grant:MAI-Voice-2.1",
              "th-TH-Harper:MAI-Voice-2.1",
              "th-TH-Krit:MAI-Voice-2.1",
              "th-TH-Nattapong:MAI-Voice-2.1",
              "tr-TR-Aydin:MAI-Voice-2.1",
              "tr-TR-Elif:MAI-Voice-2.1",
              "tr-TR-Grant:MAI-Voice-2.1",
              "tr-TR-Harper:MAI-Voice-2.1",
              "vi-VN-Grant:MAI-Voice-2.1",
              "vi-VN-Harper:MAI-Voice-2.1",
              "zh-CN-Bo:MAI-Voice-2.1",
              "zh-CN-Grant:MAI-Voice-2.1",
              "zh-CN-Harper:MAI-Voice-2.1",
              "zh-CN-Lan:MAI-Voice-2.1",
              "zh-CN-Mei:MAI-Voice-2.1",
              "zh-CN-Wei:MAI-Voice-2.1"
            ]
          },
          "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": "Dejansko vrnjeni task_id ali zapis v medijski knjižnici",
                "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.044000",
                "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.000044",
                "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": "53ceea2ccaa50cadb12f",
            "label": "Microsoft AI: MAI-Voice-2.1",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Privzeta konfiguracija"
                },
                "label": "Microsoft AI: MAI-Voice-2.1 · Privzeta konfiguracija",
                "units": [
                  {
                    "amount": "0.000044",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "8d1e4e9bf0f3647249d90a3c",
                    "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\": \"microsoft/mai-voice-2.1\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"cs-CZ-Grant:MAI-Voice-2.1\", \"cs-CZ-Harper:MAI-Voice-2.1\", \"da-DK-Grant:MAI-Voice-2.1\", \"da-DK-Harper:MAI-Voice-2.1\", \"de-DE-Grant:MAI-Voice-2.1\", \"de-DE-Harper:MAI-Voice-2.1\", \"de-DE-Klaus:MAI-Voice-2.1\", \"de-DE-Mia:MAI-Voice-2.1\", \"en-AU-Isla:MAI-Voice-2.1\", \"en-GB-Emily:MAI-Voice-2.1\", \"en-GB-Harry:MAI-Voice-2.1\", \"en-IN-Dhruv:MAI-Voice-2.1\", \"en-IN-Priya:MAI-Voice-2.1\", \"en-US-Ethan:MAI-Voice-2.1\", \"en-US-Grant:MAI-Voice-2.1\", \"en-US-Harper:MAI-Voice-2.1\", \"en-US-Iris:MAI-Voice-2.1\", \"en-US-Jasper:MAI-Voice-2.1\", \"en-US-Olivia:MAI-Voice-2.1\", \"en-US-Sage:MAI-Voice-2.1\", \"es-ES-Marta:MAI-Voice-2.1\", \"es-MX-Alejo:MAI-Voice-2.1\", \"es-MX-Grant:MAI-Voice-2.1\", \"es-MX-Harper:MAI-Voice-2.1\", \"es-MX-Valeria:MAI-Voice-2.1\", \"fi-FI-Grant:MAI-Voice-2.1\", \"fi-FI-Harper:MAI-Voice-2.1\", \"fr-FR-Grant:MAI-Voice-2.1\", \"fr-FR-Harper:MAI-Voice-2.1\", \"fr-FR-Marc:MAI-Voice-2.1\", \"fr-FR-Soleil:MAI-Voice-2.1\", \"hi-IN-Arjun:MAI-Voice-2.1\", \"hi-IN-Dhruv:MAI-Voice-2.1\", \"hi-IN-Grant:MAI-Voice-2.1\", \"hi-IN-Harper:MAI-Voice-2.1\", \"hi-IN-Kavya:MAI-Voice-2.1\", \"hi-IN-Priya:MAI-Voice-2.1\", \"hu-HU-Bence:MAI-Voice-2.1\", \"hu-HU-Grant:MAI-Voice-2.1\", \"hu-HU-Harper:MAI-Voice-2.1\", \"hu-HU-Levente:MAI-Voice-2.1\", \"hu-HU-Lilla:MAI-Voice-2.1\", \"hu-HU-Reka:MAI-Voice-2.1\", \"id-ID-Grant:MAI-Voice-2.1\", \"id-ID-Harper:MAI-Voice-2.1\", \"it-IT-Grant:MAI-Voice-2.1\", \"it-IT-Harper:MAI-Voice-2.1\", \"it-IT-Luca:MAI-Voice-2.1\", \"it-IT-Rosa:MAI-Voice-2.1\", \"ko-KR-Grant:MAI-Voice-2.1\", \"ko-KR-Haena:MAI-Voice-2.1\", \"ko-KR-Harper:MAI-Voice-2.1\", \"ko-KR-Junho:MAI-Voice-2.1\", \"nb-NO-Grant:MAI-Voice-2.1\", \"nb-NO-Harper:MAI-Voice-2.1\", \"nl-NL-Grant:MAI-Voice-2.1\", \"nl-NL-Harper:MAI-Voice-2.1\", \"nl-NL-Sander:MAI-Voice-2.1\", \"pl-PL-Grant:MAI-Voice-2.1\", \"pl-PL-Harper:MAI-Voice-2.1\", \"pt-BR-Caio:MAI-Voice-2.1\", \"pt-BR-Grant:MAI-Voice-2.1\", \"pt-BR-Harper:MAI-Voice-2.1\", \"pt-BR-Luana:MAI-Voice-2.1\", \"pt-BR-Pedro:MAI-Voice-2.1\", \"pt-BR-Rafael:MAI-Voice-2.1\", \"pt-PT-Grant:MAI-Voice-2.1\", \"pt-PT-Harper:MAI-Voice-2.1\", \"pt-PT-Rui:MAI-Voice-2.1\", \"ro-RO-Andrei:MAI-Voice-2.1\", \"ro-RO-Elena:MAI-Voice-2.1\", \"ro-RO-Grant:MAI-Voice-2.1\", \"ro-RO-Harper:MAI-Voice-2.1\", \"ro-RO-Ioana:MAI-Voice-2.1\", \"ro-RO-Radu:MAI-Voice-2.1\", \"ru-RU-Grant:MAI-Voice-2.1\", \"ru-RU-Harper:MAI-Voice-2.1\", \"ru-RU-Lev:MAI-Voice-2.1\", \"ru-RU-Masha:MAI-Voice-2.1\", \"sv-SE-Grant:MAI-Voice-2.1\", \"sv-SE-Harper:MAI-Voice-2.1\", \"th-TH-Grant:MAI-Voice-2.1\", \"th-TH-Harper:MAI-Voice-2.1\", \"th-TH-Krit:MAI-Voice-2.1\", \"th-TH-Nattapong:MAI-Voice-2.1\", \"tr-TR-Aydin:MAI-Voice-2.1\", \"tr-TR-Elif:MAI-Voice-2.1\", \"tr-TR-Grant:MAI-Voice-2.1\", \"tr-TR-Harper:MAI-Voice-2.1\", \"vi-VN-Grant:MAI-Voice-2.1\", \"vi-VN-Harper:MAI-Voice-2.1\", \"zh-CN-Bo:MAI-Voice-2.1\", \"zh-CN-Grant:MAI-Voice-2.1\", \"zh-CN-Harper:MAI-Voice-2.1\", \"zh-CN-Lan:MAI-Voice-2.1\", \"zh-CN-Mei:MAI-Voice-2.1\", \"zh-CN-Wei:MAI-Voice-2.1\"]')\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": 4.4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.044000",
                "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.000044",
                "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": "microsoft/mai-voice-2.1",
        "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.044000",
            "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.000044",
            "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": "microsoft/mai-voice-2.1",
        "request_model_id": "microsoft/mai-voice-2.1",
        "route_label": "Ultra"
      }
    ],
    "name": "Microsoft AI: MAI-Voice-2.1",
    "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.000044",
            "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": "microsoft/mai-voice-2.1",
    "short": "MAI-Voice-2.1 podjetja Microsoft AI ustvarja izrazni večjezični govor za pripovedovanje, zvočne knjige, izobraževalne vsebine in spremljevalni govor. Njegov profil s 23 jeziki podpira dosledno identiteto govorca, več govorcev in nadzorovano podajanje."
  },
  "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": "MAI-Voice-2.1 podjetja Microsoft AI ustvarja izrazni večjezični govor za pripovedovanje, zvočne knjige, izobraževalne vsebine in spremljevalni govor. Njegov profil s 23 jeziki podpira dosledno identiteto govorca, več govorcev in nadzorovano podajanje.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "3da73720676fc6bf3c0585545ea753ed0b1b5d1298fe88b3c924fc897eed2449",
    "renderer_sha256": "dcba2271c18b0f9570a8b166e8d1e3166f121e096a58609c3a46da31562a1bf2"
  },
  "sourceRevision": "4c7125abf87299572ee0aa6733db32334937c8aa6af8a25dbe77bc26b5ff14a4"
}
