{
  "aboutHtml": "<p>MAI-Voice-2.1-Flash je model podjetja Microsoft AI za pretvorbo besedila v govor, usmerjano z navodili, zasnovan za odzivno govorno interakcijo. Njegov proizvajalec ga namenja glasovnim pomočnikom, pogovorom podpore strankam in telefonskim menijem. Ustvarja naraven, izrazni govor v triindvajsetih jezikih z nadzorom tona in podajanja. Flash je različica, usmerjena v odziv v živo; ločeno poimenovani MAI-Voice-2.1 daje prednost podrobni izraznosti in zvestobi pri daljši vsebini.</p><h4>Besedilo, govorec in jezik</h4><p>Vnos je besedilo za izgovarjavo z izbranim glasom in neobveznimi izraznimi navodili v SSML. Upravljani katalog glasov razlikuje govorca, jezikovno različico in različico modela. Harper in Grant sta primera poimenovanih govorcev z jezikovno specifičnimi vnosi. Uporabite predvideno besedilo v ciljnem jeziku in izberite ustrezno jezikovno različico; pripravljen angleški pozdrav in španska razlaga sta ločena govorna odlomka, vsak z lastnim besedilom.</p><p>Kartica modela dokumentira dosledno glasovno identiteto skozi podprte jezike in več govorcev za dialog. To lahko podpira aplikacijo, ki potrebuje enega prepoznavnega pripovedovalca skozi lokalizirane pozive ali kratek dialog z različnimi vlogami. Vrstice izrecno dodelite predvidenim govorcem in te dodelitve ohranite stabilne. Zvok je govorjena različica tega scenarija, ne nov odgovor, sestavljen iz odprtega vprašanja.</p><h4>Ton in govorni slog</h4><p>Microsoft dokumentira nadzor čustev in podajanja na ravni stavka ter govorne menjave prek SSML. Razpoložljivi slogi so odvisni od izbranega glasu. Upravljani katalog vključuje namenske sloge, kot so narrator, educational in customer_call_center, skupaj z izraznimi slogi za določene govorce. Ameriški vnos Harper na primer vključuje joyful in relieved. Izberite slog, ki ga glas podpira, namesto da bi predpostavljali, da vsak govorec sprejme isti nabor.</p><p>Praktična podporna vrstica je: »Lahko vam pomagam najti pravi dokument. Povejte mi njegov naslov ali opišite temo.« Zahteva naj bo dovolj kratka, da poslušalec lahko ukrepa, podajanje pa mirno ali spodbudno glede na interakcijo. Pri učni dejavnosti razlago in naslednje vprašanje napišite kot ločeni govorni enoti. Izraznost služi pomenu, kadar scenarij jasno pokaže spremembo namena.</p><h4>Pretakanje in dostava zvoka</h4><p>Kartica modela Flash posebej dokumentira pretočni izhod za dialog v živo, vključno s poteki, ki obravnavajo poslušalčev govor med odgovorom. Aplikacija lahko zvok predvaja ob prihodu in usklajuje prekinitev ter naslednjo govorno menjavo. Tako časovni potek govornega sporočila postane del interakcije, namesto da bi bilo treba vsak odgovor najprej pripraviti kot celoten posnetek.</p><p>Proizvajalec omogoča, da potek sinteze določi izhodni format. Njegov objavljeni primer ustvari mono datoteko MP3 pri 24 kHz in 160 kbit/s. To je ena dokumentirana izhodna konfiguracija, ne fiksna omejitev izvornega formata. Izberite zvočno predstavitev, ki jo predvidena pot predvajanja sprejme, ter ohranite govorca in govorjeno besedilo na voljo za pregled rezultata.</p><h4>Neobvezni način referenčnega glasu</h4><p>Microsoftov način prilagojenega glasu lahko iz pet- do šestdesetsekundnega referenčnega izseka posnema govorca, ki je podal soglasje, brez dodatnega učenja. Kartica modela priporoča naravno pogovorno podajanje z zmerno energijo, saj referenca vpliva na ustvarjeno izvedbo. Ta način ima ločen postopek odobritve proizvajalca in posnetega soglasja; prednastavljeni glasovi knjižnice tvorijo drugo pripravljalno pot.</p><p>Pri referenci, namenjeni določitvi pripovedovalca znamke, uporabite čist, reprezentativen odlomek in določite, katero podajanje naj se prenese v novi scenarij. Pri prednastavljenem govoru pripravite dejanska imena, ukaze in fraze v ciljnem jeziku, ki jih bo aplikacija uporabljala. Te odlomke poslušajte z izbranim glasom in preverite prehod med govornimi menjavami. Uporaben rezultat je izrazna govorna interakcija s premišljeno izbranim govorcem, jasnim besedilom in zvokom, prilagojenim poslušalčevemu okolju predvajanja.</p>",
  "aboutText": "MAI-Voice-2.1-Flash je model podjetja Microsoft AI za pretvorbo besedila v govor, usmerjano z navodili, zasnovan za odzivno govorno interakcijo. Njegov proizvajalec ga namenja glasovnim pomočnikom, pogovorom podpore strankam in telefonskim menijem. Ustvarja naraven, izrazni govor v triindvajsetih jezikih z nadzorom tona in podajanja. Flash je različica, usmerjena v odziv v živo; ločeno poimenovani MAI-Voice-2.1 daje prednost podrobni izraznosti in zvestobi pri daljši vsebini.\n\n### Besedilo, govorec in jezik\n\nVnos je besedilo za izgovarjavo z izbranim glasom in neobveznimi izraznimi navodili v SSML. Upravljani katalog glasov razlikuje govorca, jezikovno različico in različico modela. Harper in Grant sta primera poimenovanih govorcev z jezikovno specifičnimi vnosi. Uporabite predvideno besedilo v ciljnem jeziku in izberite ustrezno jezikovno različico; pripravljen angleški pozdrav in španska razlaga sta ločena govorna odlomka, vsak z lastnim besedilom.\n\nKartica modela dokumentira dosledno glasovno identiteto skozi podprte jezike in več govorcev za dialog. To lahko podpira aplikacijo, ki potrebuje enega prepoznavnega pripovedovalca skozi lokalizirane pozive ali kratek dialog z različnimi vlogami. Vrstice izrecno dodelite predvidenim govorcem in te dodelitve ohranite stabilne. Zvok je govorjena različica tega scenarija, ne nov odgovor, sestavljen iz odprtega vprašanja.\n\n### Ton in govorni slog\n\nMicrosoft dokumentira nadzor čustev in podajanja na ravni stavka ter govorne menjave prek SSML. Razpoložljivi slogi so odvisni od izbranega glasu. Upravljani katalog vključuje namenske sloge, kot so narrator, educational in customer_call_center, skupaj z izraznimi slogi za določene govorce. Ameriški vnos Harper na primer vključuje joyful in relieved. Izberite slog, ki ga glas podpira, namesto da bi predpostavljali, da vsak govorec sprejme isti nabor.\n\nPraktična podporna vrstica je: »Lahko vam pomagam najti pravi dokument. Povejte mi njegov naslov ali opišite temo.« Zahteva naj bo dovolj kratka, da poslušalec lahko ukrepa, podajanje pa mirno ali spodbudno glede na interakcijo. Pri učni dejavnosti razlago in naslednje vprašanje napišite kot ločeni govorni enoti. Izraznost služi pomenu, kadar scenarij jasno pokaže spremembo namena.\n\n### Pretakanje in dostava zvoka\n\nKartica modela Flash posebej dokumentira pretočni izhod za dialog v živo, vključno s poteki, ki obravnavajo poslušalčev govor med odgovorom. Aplikacija lahko zvok predvaja ob prihodu in usklajuje prekinitev ter naslednjo govorno menjavo. Tako časovni potek govornega sporočila postane del interakcije, namesto da bi bilo treba vsak odgovor najprej pripraviti kot celoten posnetek.\n\nProizvajalec omogoča, da potek sinteze določi izhodni format. Njegov objavljeni primer ustvari mono datoteko MP3 pri 24 kHz in 160 kbit/s. To je ena dokumentirana izhodna konfiguracija, ne fiksna omejitev izvornega formata. Izberite zvočno predstavitev, ki jo predvidena pot predvajanja sprejme, ter ohranite govorca in govorjeno besedilo na voljo za pregled rezultata.\n\n### Neobvezni način referenčnega glasu\n\nMicrosoftov način prilagojenega glasu lahko iz pet- do šestdesetsekundnega referenčnega izseka posnema govorca, ki je podal soglasje, brez dodatnega učenja. Kartica modela priporoča naravno pogovorno podajanje z zmerno energijo, saj referenca vpliva na ustvarjeno izvedbo. Ta način ima ločen postopek odobritve proizvajalca in posnetega soglasja; prednastavljeni glasovi knjižnice tvorijo drugo pripravljalno pot.\n\nPri referenci, namenjeni določitvi pripovedovalca znamke, uporabite čist, reprezentativen odlomek in določite, katero podajanje naj se prenese v novi scenarij. Pri prednastavljenem govoru pripravite dejanska imena, ukaze in fraze v ciljnem jeziku, ki jih bo aplikacija uporabljala. Te odlomke poslušajte z izbranim glasom in preverite prehod med govornimi menjavami. Uporaben rezultat je izrazna govorna interakcija s premišljeno izbranim govorcem, jasnim besedilom in zvokom, prilagojenim poslušalčevemu okolju predvajanja.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "38c64579cb2d4c34f919a52390bd158cecbdf10191d1e3031a78a5bd930857f9",
    "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-Flash</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-flash</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-flash\">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-Flash podjetja Microsoft AI ustvarja izrazni govor v 23 jezikih za interaktivne glasovne aplikacije. Podpira pretakanje, več govorcev in nadzor podajanja na ravni stavka ter ponuja izbrano knjižnico glasov.</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-Flash je model podjetja Microsoft AI za pretvorbo besedila v govor, usmerjano z navodili, zasnovan za odzivno govorno interakcijo. Njegov proizvajalec ga namenja glasovnim pomočnikom, pogovorom podpore strankam in telefonskim menijem. Ustvarja naraven, izrazni govor v triindvajsetih jezikih z nadzorom tona in podajanja. Flash je različica, usmerjena v odziv v živo; ločeno poimenovani MAI-Voice-2.1 daje prednost podrobni izraznosti in zvestobi pri daljši vsebini.</p><h4>Besedilo, govorec in jezik</h4><p>Vnos je besedilo za izgovarjavo z izbranim glasom in neobveznimi izraznimi navodili v SSML. Upravljani katalog glasov razlikuje govorca, jezikovno različico in različico modela. Harper in Grant sta primera poimenovanih govorcev z jezikovno specifičnimi vnosi. Uporabite predvideno besedilo v ciljnem jeziku in izberite ustrezno jezikovno različico; pripravljen angleški pozdrav in španska razlaga sta ločena govorna odlomka, vsak z lastnim besedilom.</p><p>Kartica modela dokumentira dosledno glasovno identiteto skozi podprte jezike in več govorcev za dialog. To lahko podpira aplikacijo, ki potrebuje enega prepoznavnega pripovedovalca skozi lokalizirane pozive ali kratek dialog z različnimi vlogami. Vrstice izrecno dodelite predvidenim govorcem in te dodelitve ohranite stabilne. Zvok je govorjena različica tega scenarija, ne nov odgovor, sestavljen iz odprtega vprašanja.</p><h4>Ton in govorni slog</h4><p>Microsoft dokumentira nadzor čustev in podajanja na ravni stavka ter govorne menjave prek SSML. Razpoložljivi slogi so odvisni od izbranega glasu. Upravljani katalog vključuje namenske sloge, kot so narrator, educational in customer_call_center, skupaj z izraznimi slogi za določene govorce. Ameriški vnos Harper na primer vključuje joyful in relieved. Izberite slog, ki ga glas podpira, namesto da bi predpostavljali, da vsak govorec sprejme isti nabor.</p><p>Praktična podporna vrstica je: »Lahko vam pomagam najti pravi dokument. Povejte mi njegov naslov ali opišite temo.« Zahteva naj bo dovolj kratka, da poslušalec lahko ukrepa, podajanje pa mirno ali spodbudno glede na interakcijo. Pri učni dejavnosti razlago in naslednje vprašanje napišite kot ločeni govorni enoti. Izraznost služi pomenu, kadar scenarij jasno pokaže spremembo namena.</p><h4>Pretakanje in dostava zvoka</h4><p>Kartica modela Flash posebej dokumentira pretočni izhod za dialog v živo, vključno s poteki, ki obravnavajo poslušalčev govor med odgovorom. Aplikacija lahko zvok predvaja ob prihodu in usklajuje prekinitev ter naslednjo govorno menjavo. Tako časovni potek govornega sporočila postane del interakcije, namesto da bi bilo treba vsak odgovor najprej pripraviti kot celoten posnetek.</p><p>Proizvajalec omogoča, da potek sinteze določi izhodni format. Njegov objavljeni primer ustvari mono datoteko MP3 pri 24 kHz in 160 kbit/s. To je ena dokumentirana izhodna konfiguracija, ne fiksna omejitev izvornega formata. Izberite zvočno predstavitev, ki jo predvidena pot predvajanja sprejme, ter ohranite govorca in govorjeno besedilo na voljo za pregled rezultata.</p><h4>Neobvezni način referenčnega glasu</h4><p>Microsoftov način prilagojenega glasu lahko iz pet- do šestdesetsekundnega referenčnega izseka posnema govorca, ki je podal soglasje, brez dodatnega učenja. Kartica modela priporoča naravno pogovorno podajanje z zmerno energijo, saj referenca vpliva na ustvarjeno izvedbo. Ta način ima ločen postopek odobritve proizvajalca in posnetega soglasja; prednastavljeni glasovi knjižnice tvorijo drugo pripravljalno pot.</p><p>Pri referenci, namenjeni določitvi pripovedovalca znamke, uporabite čist, reprezentativen odlomek in določite, katero podajanje naj se prenese v novi scenarij. Pri prednastavljenem govoru pripravite dejanska imena, ukaze in fraze v ciljnem jeziku, ki jih bo aplikacija uporabljala. Te odlomke poslušajte z izbranim glasom in preverite prehod med govornimi menjavami. Uporaben rezultat je izrazna govorna interakcija s premišljeno izbranim govorcem, jasnim besedilom in zvokom, prilagojenim poslušalčevemu okolju predvajanja.</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-flash</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-Flash, cs-CZ-Harper:MAI-Voice-2.1-Flash, da-DK-Grant:MAI-Voice-2.1-Flash, da-DK-Harper:MAI-Voice-2.1-Flash, de-DE-Grant:MAI-Voice-2.1-Flash, de-DE-Harper:MAI-Voice-2.1-Flash, de-DE-Klaus:MAI-Voice-2.1-Flash, de-DE-Mia:MAI-Voice-2.1-Flash, en-AU-Isla:MAI-Voice-2.1-Flash, en-GB-Emily:MAI-Voice-2.1-Flash, en-GB-Harry:MAI-Voice-2.1-Flash, en-IN-Dhruv:MAI-Voice-2.1-Flash, en-IN-Priya:MAI-Voice-2.1-Flash, en-US-Ethan:MAI-Voice-2.1-Flash, en-US-Grant:MAI-Voice-2.1-Flash, en-US-Harper:MAI-Voice-2.1-Flash, en-US-Iris:MAI-Voice-2.1-Flash, en-US-Jasper:MAI-Voice-2.1-Flash, en-US-Olivia:MAI-Voice-2.1-Flash, en-US-Sage:MAI-Voice-2.1-Flash, es-ES-Marta:MAI-Voice-2.1-Flash, es-MX-Alejo:MAI-Voice-2.1-Flash, es-MX-Grant:MAI-Voice-2.1-Flash, es-MX-Harper:MAI-Voice-2.1-Flash, es-MX-Valeria:MAI-Voice-2.1-Flash, fi-FI-Grant:MAI-Voice-2.1-Flash, fi-FI-Harper:MAI-Voice-2.1-Flash, fr-FR-Grant:MAI-Voice-2.1-Flash, fr-FR-Harper:MAI-Voice-2.1-Flash, fr-FR-Marc:MAI-Voice-2.1-Flash, fr-FR-Soleil:MAI-Voice-2.1-Flash, hi-IN-Arjun:MAI-Voice-2.1-Flash, hi-IN-Dhruv:MAI-Voice-2.1-Flash, hi-IN-Grant:MAI-Voice-2.1-Flash, hi-IN-Harper:MAI-Voice-2.1-Flash, hi-IN-Kavya:MAI-Voice-2.1-Flash, hi-IN-Priya:MAI-Voice-2.1-Flash, hu-HU-Bence:MAI-Voice-2.1-Flash, hu-HU-Grant:MAI-Voice-2.1-Flash, hu-HU-Harper:MAI-Voice-2.1-Flash, hu-HU-Levente:MAI-Voice-2.1-Flash, hu-HU-Lilla:MAI-Voice-2.1-Flash, hu-HU-Reka:MAI-Voice-2.1-Flash, id-ID-Grant:MAI-Voice-2.1-Flash, id-ID-Harper:MAI-Voice-2.1-Flash, it-IT-Grant:MAI-Voice-2.1-Flash, it-IT-Harper:MAI-Voice-2.1-Flash, it-IT-Luca:MAI-Voice-2.1-Flash, it-IT-Rosa:MAI-Voice-2.1-Flash, ko-KR-Grant:MAI-Voice-2.1-Flash, ko-KR-Haena:MAI-Voice-2.1-Flash, ko-KR-Harper:MAI-Voice-2.1-Flash, ko-KR-Junho:MAI-Voice-2.1-Flash, nb-NO-Grant:MAI-Voice-2.1-Flash, nb-NO-Harper:MAI-Voice-2.1-Flash, nl-NL-Grant:MAI-Voice-2.1-Flash, nl-NL-Harper:MAI-Voice-2.1-Flash, nl-NL-Sander:MAI-Voice-2.1-Flash, pl-PL-Grant:MAI-Voice-2.1-Flash, pl-PL-Harper:MAI-Voice-2.1-Flash, pt-BR-Caio:MAI-Voice-2.1-Flash, pt-BR-Grant:MAI-Voice-2.1-Flash, pt-BR-Harper:MAI-Voice-2.1-Flash, pt-BR-Luana:MAI-Voice-2.1-Flash, pt-BR-Pedro:MAI-Voice-2.1-Flash, pt-BR-Rafael:MAI-Voice-2.1-Flash, pt-PT-Grant:MAI-Voice-2.1-Flash, pt-PT-Harper:MAI-Voice-2.1-Flash, pt-PT-Rui:MAI-Voice-2.1-Flash, ro-RO-Andrei:MAI-Voice-2.1-Flash, ro-RO-Elena:MAI-Voice-2.1-Flash, ro-RO-Grant:MAI-Voice-2.1-Flash, ro-RO-Harper:MAI-Voice-2.1-Flash, ro-RO-Ioana:MAI-Voice-2.1-Flash, ro-RO-Radu:MAI-Voice-2.1-Flash, ru-RU-Grant:MAI-Voice-2.1-Flash, ru-RU-Harper:MAI-Voice-2.1-Flash, ru-RU-Lev:MAI-Voice-2.1-Flash, ru-RU-Masha:MAI-Voice-2.1-Flash, sv-SE-Grant:MAI-Voice-2.1-Flash, sv-SE-Harper:MAI-Voice-2.1-Flash, th-TH-Grant:MAI-Voice-2.1-Flash, th-TH-Harper:MAI-Voice-2.1-Flash, th-TH-Krit:MAI-Voice-2.1-Flash, th-TH-Nattapong:MAI-Voice-2.1-Flash, tr-TR-Aydin:MAI-Voice-2.1-Flash, tr-TR-Elif:MAI-Voice-2.1-Flash, tr-TR-Grant:MAI-Voice-2.1-Flash, tr-TR-Harper:MAI-Voice-2.1-Flash, vi-VN-Grant:MAI-Voice-2.1-Flash, vi-VN-Harper:MAI-Voice-2.1-Flash, zh-CN-Bo:MAI-Voice-2.1-Flash, zh-CN-Grant:MAI-Voice-2.1-Flash, zh-CN-Harper:MAI-Voice-2.1-Flash, zh-CN-Lan:MAI-Voice-2.1-Flash, zh-CN-Mei:MAI-Voice-2.1-Flash, zh-CN-Wei:MAI-Voice-2.1-Flash</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-Flash, cs-CZ-Harper:MAI-Voice-2.1-Flash, da-DK-Grant:MAI-Voice-2.1-Flash, da-DK-Harper:MAI-Voice-2.1-Flash, de-DE-Grant:MAI-Voice-2.1-Flash, de-DE-Harper:MAI-Voice-2.1-Flash, de-DE-Klaus:MAI-Voice-2.1-Flash, de-DE-Mia:MAI-Voice-2.1-Flash, en-AU-Isla:MAI-Voice-2.1-Flash, en-GB-Emily:MAI-Voice-2.1-Flash, en-GB-Harry:MAI-Voice-2.1-Flash, en-IN-Dhruv:MAI-Voice-2.1-Flash, en-IN-Priya:MAI-Voice-2.1-Flash, en-US-Ethan:MAI-Voice-2.1-Flash, en-US-Grant:MAI-Voice-2.1-Flash, en-US-Harper:MAI-Voice-2.1-Flash, en-US-Iris:MAI-Voice-2.1-Flash, en-US-Jasper:MAI-Voice-2.1-Flash, en-US-Olivia:MAI-Voice-2.1-Flash, en-US-Sage:MAI-Voice-2.1-Flash, es-ES-Marta:MAI-Voice-2.1-Flash, es-MX-Alejo:MAI-Voice-2.1-Flash, es-MX-Grant:MAI-Voice-2.1-Flash, es-MX-Harper:MAI-Voice-2.1-Flash, es-MX-Valeria:MAI-Voice-2.1-Flash, fi-FI-Grant:MAI-Voice-2.1-Flash, fi-FI-Harper:MAI-Voice-2.1-Flash, fr-FR-Grant:MAI-Voice-2.1-Flash, fr-FR-Harper:MAI-Voice-2.1-Flash, fr-FR-Marc:MAI-Voice-2.1-Flash, fr-FR-Soleil:MAI-Voice-2.1-Flash, hi-IN-Arjun:MAI-Voice-2.1-Flash, hi-IN-Dhruv:MAI-Voice-2.1-Flash, hi-IN-Grant:MAI-Voice-2.1-Flash, hi-IN-Harper:MAI-Voice-2.1-Flash, hi-IN-Kavya:MAI-Voice-2.1-Flash, hi-IN-Priya:MAI-Voice-2.1-Flash, hu-HU-Bence:MAI-Voice-2.1-Flash, hu-HU-Grant:MAI-Voice-2.1-Flash, hu-HU-Harper:MAI-Voice-2.1-Flash, hu-HU-Levente:MAI-Voice-2.1-Flash, hu-HU-Lilla:MAI-Voice-2.1-Flash, hu-HU-Reka:MAI-Voice-2.1-Flash, id-ID-Grant:MAI-Voice-2.1-Flash, id-ID-Harper:MAI-Voice-2.1-Flash, it-IT-Grant:MAI-Voice-2.1-Flash, it-IT-Harper:MAI-Voice-2.1-Flash, it-IT-Luca:MAI-Voice-2.1-Flash, it-IT-Rosa:MAI-Voice-2.1-Flash, ko-KR-Grant:MAI-Voice-2.1-Flash, ko-KR-Haena:MAI-Voice-2.1-Flash, ko-KR-Harper:MAI-Voice-2.1-Flash, ko-KR-Junho:MAI-Voice-2.1-Flash, nb-NO-Grant:MAI-Voice-2.1-Flash, nb-NO-Harper:MAI-Voice-2.1-Flash, nl-NL-Grant:MAI-Voice-2.1-Flash, nl-NL-Harper:MAI-Voice-2.1-Flash, nl-NL-Sander:MAI-Voice-2.1-Flash, pl-PL-Grant:MAI-Voice-2.1-Flash, pl-PL-Harper:MAI-Voice-2.1-Flash, pt-BR-Caio:MAI-Voice-2.1-Flash, pt-BR-Grant:MAI-Voice-2.1-Flash, pt-BR-Harper:MAI-Voice-2.1-Flash, pt-BR-Luana:MAI-Voice-2.1-Flash, pt-BR-Pedro:MAI-Voice-2.1-Flash, pt-BR-Rafael:MAI-Voice-2.1-Flash, pt-PT-Grant:MAI-Voice-2.1-Flash, pt-PT-Harper:MAI-Voice-2.1-Flash, pt-PT-Rui:MAI-Voice-2.1-Flash, ro-RO-Andrei:MAI-Voice-2.1-Flash, ro-RO-Elena:MAI-Voice-2.1-Flash, ro-RO-Grant:MAI-Voice-2.1-Flash, ro-RO-Harper:MAI-Voice-2.1-Flash, ro-RO-Ioana:MAI-Voice-2.1-Flash, ro-RO-Radu:MAI-Voice-2.1-Flash, ru-RU-Grant:MAI-Voice-2.1-Flash, ru-RU-Harper:MAI-Voice-2.1-Flash, ru-RU-Lev:MAI-Voice-2.1-Flash, ru-RU-Masha:MAI-Voice-2.1-Flash, sv-SE-Grant:MAI-Voice-2.1-Flash, sv-SE-Harper:MAI-Voice-2.1-Flash, th-TH-Grant:MAI-Voice-2.1-Flash, th-TH-Harper:MAI-Voice-2.1-Flash, th-TH-Krit:MAI-Voice-2.1-Flash, th-TH-Nattapong:MAI-Voice-2.1-Flash, tr-TR-Aydin:MAI-Voice-2.1-Flash, tr-TR-Elif:MAI-Voice-2.1-Flash, tr-TR-Grant:MAI-Voice-2.1-Flash, tr-TR-Harper:MAI-Voice-2.1-Flash, vi-VN-Grant:MAI-Voice-2.1-Flash, vi-VN-Harper:MAI-Voice-2.1-Flash, zh-CN-Bo:MAI-Voice-2.1-Flash, zh-CN-Grant:MAI-Voice-2.1-Flash, zh-CN-Harper:MAI-Voice-2.1-Flash, zh-CN-Lan:MAI-Voice-2.1-Flash, zh-CN-Mei:MAI-Voice-2.1-Flash, zh-CN-Wei:MAI-Voice-2.1-Flash</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.03</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-Flash</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-Flash · 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,00003 $</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-1855-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1855-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-1855-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1855-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-flash&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-Flash&quot;, &quot;cs-CZ-Harper:MAI-Voice-2.1-Flash&quot;, &quot;da-DK-Grant:MAI-Voice-2.1-Flash&quot;, &quot;da-DK-Harper:MAI-Voice-2.1-Flash&quot;, &quot;de-DE-Grant:MAI-Voice-2.1-Flash&quot;, &quot;de-DE-Harper:MAI-Voice-2.1-Flash&quot;, &quot;de-DE-Klaus:MAI-Voice-2.1-Flash&quot;, &quot;de-DE-Mia:MAI-Voice-2.1-Flash&quot;, &quot;en-AU-Isla:MAI-Voice-2.1-Flash&quot;, &quot;en-GB-Emily:MAI-Voice-2.1-Flash&quot;, &quot;en-GB-Harry:MAI-Voice-2.1-Flash&quot;, &quot;en-IN-Dhruv:MAI-Voice-2.1-Flash&quot;, &quot;en-IN-Priya:MAI-Voice-2.1-Flash&quot;, &quot;en-US-Ethan:MAI-Voice-2.1-Flash&quot;, &quot;en-US-Grant:MAI-Voice-2.1-Flash&quot;, &quot;en-US-Harper:MAI-Voice-2.1-Flash&quot;, &quot;en-US-Iris:MAI-Voice-2.1-Flash&quot;, &quot;en-US-Jasper:MAI-Voice-2.1-Flash&quot;, &quot;en-US-Olivia:MAI-Voice-2.1-Flash&quot;, &quot;en-US-Sage:MAI-Voice-2.1-Flash&quot;, &quot;es-ES-Marta:MAI-Voice-2.1-Flash&quot;, &quot;es-MX-Alejo:MAI-Voice-2.1-Flash&quot;, &quot;es-MX-Grant:MAI-Voice-2.1-Flash&quot;, &quot;es-MX-Harper:MAI-Voice-2.1-Flash&quot;, &quot;es-MX-Valeria:MAI-Voice-2.1-Flash&quot;, &quot;fi-FI-Grant:MAI-Voice-2.1-Flash&quot;, &quot;fi-FI-Harper:MAI-Voice-2.1-Flash&quot;, &quot;fr-FR-Grant:MAI-Voice-2.1-Flash&quot;, &quot;fr-FR-Harper:MAI-Voice-2.1-Flash&quot;, &quot;fr-FR-Marc:MAI-Voice-2.1-Flash&quot;, &quot;fr-FR-Soleil:MAI-Voice-2.1-Flash&quot;, &quot;hi-IN-Arjun:MAI-Voice-2.1-Flash&quot;, &quot;hi-IN-Dhruv:MAI-Voice-2.1-Flash&quot;, &quot;hi-IN-Grant:MAI-Voice-2.1-Flash&quot;, &quot;hi-IN-Harper:MAI-Voice-2.1-Flash&quot;, &quot;hi-IN-Kavya:MAI-Voice-2.1-Flash&quot;, &quot;hi-IN-Priya:MAI-Voice-2.1-Flash&quot;, &quot;hu-HU-Bence:MAI-Voice-2.1-Flash&quot;, &quot;hu-HU-Grant:MAI-Voice-2.1-Flash&quot;, &quot;hu-HU-Harper:MAI-Voice-2.1-Flash&quot;, &quot;hu-HU-Levente:MAI-Voice-2.1-Flash&quot;, &quot;hu-HU-Lilla:MAI-Voice-2.1-Flash&quot;, &quot;hu-HU-Reka:MAI-Voice-2.1-Flash&quot;, &quot;id-ID-Grant:MAI-Voice-2.1-Flash&quot;, &quot;id-ID-Harper:MAI-Voice-2.1-Flash&quot;, &quot;it-IT-Grant:MAI-Voice-2.1-Flash&quot;, &quot;it-IT-Harper:MAI-Voice-2.1-Flash&quot;, &quot;it-IT-Luca:MAI-Voice-2.1-Flash&quot;, &quot;it-IT-Rosa:MAI-Voice-2.1-Flash&quot;, &quot;ko-KR-Grant:MAI-Voice-2.1-Flash&quot;, &quot;ko-KR-Haena:MAI-Voice-2.1-Flash&quot;, &quot;ko-KR-Harper:MAI-Voice-2.1-Flash&quot;, &quot;ko-KR-Junho:MAI-Voice-2.1-Flash&quot;, &quot;nb-NO-Grant:MAI-Voice-2.1-Flash&quot;, &quot;nb-NO-Harper:MAI-Voice-2.1-Flash&quot;, &quot;nl-NL-Grant:MAI-Voice-2.1-Flash&quot;, &quot;nl-NL-Harper:MAI-Voice-2.1-Flash&quot;, &quot;nl-NL-Sander:MAI-Voice-2.1-Flash&quot;, &quot;pl-PL-Grant:MAI-Voice-2.1-Flash&quot;, &quot;pl-PL-Harper:MAI-Voice-2.1-Flash&quot;, &quot;pt-BR-Caio:MAI-Voice-2.1-Flash&quot;, &quot;pt-BR-Grant:MAI-Voice-2.1-Flash&quot;, &quot;pt-BR-Harper:MAI-Voice-2.1-Flash&quot;, &quot;pt-BR-Luana:MAI-Voice-2.1-Flash&quot;, &quot;pt-BR-Pedro:MAI-Voice-2.1-Flash&quot;, &quot;pt-BR-Rafael:MAI-Voice-2.1-Flash&quot;, &quot;pt-PT-Grant:MAI-Voice-2.1-Flash&quot;, &quot;pt-PT-Harper:MAI-Voice-2.1-Flash&quot;, &quot;pt-PT-Rui:MAI-Voice-2.1-Flash&quot;, &quot;ro-RO-Andrei:MAI-Voice-2.1-Flash&quot;, &quot;ro-RO-Elena:MAI-Voice-2.1-Flash&quot;, &quot;ro-RO-Grant:MAI-Voice-2.1-Flash&quot;, &quot;ro-RO-Harper:MAI-Voice-2.1-Flash&quot;, &quot;ro-RO-Ioana:MAI-Voice-2.1-Flash&quot;, &quot;ro-RO-Radu:MAI-Voice-2.1-Flash&quot;, &quot;ru-RU-Grant:MAI-Voice-2.1-Flash&quot;, &quot;ru-RU-Harper:MAI-Voice-2.1-Flash&quot;, &quot;ru-RU-Lev:MAI-Voice-2.1-Flash&quot;, &quot;ru-RU-Masha:MAI-Voice-2.1-Flash&quot;, &quot;sv-SE-Grant:MAI-Voice-2.1-Flash&quot;, &quot;sv-SE-Harper:MAI-Voice-2.1-Flash&quot;, &quot;th-TH-Grant:MAI-Voice-2.1-Flash&quot;, &quot;th-TH-Harper:MAI-Voice-2.1-Flash&quot;, &quot;th-TH-Krit:MAI-Voice-2.1-Flash&quot;, &quot;th-TH-Nattapong:MAI-Voice-2.1-Flash&quot;, &quot;tr-TR-Aydin:MAI-Voice-2.1-Flash&quot;, &quot;tr-TR-Elif:MAI-Voice-2.1-Flash&quot;, &quot;tr-TR-Grant:MAI-Voice-2.1-Flash&quot;, &quot;tr-TR-Harper:MAI-Voice-2.1-Flash&quot;, &quot;vi-VN-Grant:MAI-Voice-2.1-Flash&quot;, &quot;vi-VN-Harper:MAI-Voice-2.1-Flash&quot;, &quot;zh-CN-Bo:MAI-Voice-2.1-Flash&quot;, &quot;zh-CN-Grant:MAI-Voice-2.1-Flash&quot;, &quot;zh-CN-Harper:MAI-Voice-2.1-Flash&quot;, &quot;zh-CN-Lan:MAI-Voice-2.1-Flash&quot;, &quot;zh-CN-Mei:MAI-Voice-2.1-Flash&quot;, &quot;zh-CN-Wei:MAI-Voice-2.1-Flash&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-1856-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1856-panel-0\" aria-selected=\"true\" tabindex=\"0\">Medijska knjižnica</button><button class=\"cg-tab\" id=\"model-code-1856-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1856-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Stanje opravila</button><button class=\"cg-tab\" id=\"model-code-1856-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1856-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-1856-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1856-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-1856-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1856-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-1856-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1856-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-flash&amp;route=Ultra&amp;caller=microsoft%2Fmai-voice-2.1-flash&amp;fmt=speech\"><code>microsoft/mai-voice-2.1-flash</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-flash&amp;route=Ultra&amp;caller=microsoft%2Fmai-voice-2.1-flash&amp;fmt=speech\"><code>microsoft/mai-voice-2.1-flash</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "microsoft/mai-voice-2.1-flash",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "microsoft/mai-voice-2.1-flash",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|microsoft%2Fmai-voice-2.1-flash",
      "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-flash"
                ],
                "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-Flash",
                  "cs-CZ-Harper:MAI-Voice-2.1-Flash",
                  "da-DK-Grant:MAI-Voice-2.1-Flash",
                  "da-DK-Harper:MAI-Voice-2.1-Flash",
                  "de-DE-Grant:MAI-Voice-2.1-Flash",
                  "de-DE-Harper:MAI-Voice-2.1-Flash",
                  "de-DE-Klaus:MAI-Voice-2.1-Flash",
                  "de-DE-Mia:MAI-Voice-2.1-Flash",
                  "en-AU-Isla:MAI-Voice-2.1-Flash",
                  "en-GB-Emily:MAI-Voice-2.1-Flash",
                  "en-GB-Harry:MAI-Voice-2.1-Flash",
                  "en-IN-Dhruv:MAI-Voice-2.1-Flash",
                  "en-IN-Priya:MAI-Voice-2.1-Flash",
                  "en-US-Ethan:MAI-Voice-2.1-Flash",
                  "en-US-Grant:MAI-Voice-2.1-Flash",
                  "en-US-Harper:MAI-Voice-2.1-Flash",
                  "en-US-Iris:MAI-Voice-2.1-Flash",
                  "en-US-Jasper:MAI-Voice-2.1-Flash",
                  "en-US-Olivia:MAI-Voice-2.1-Flash",
                  "en-US-Sage:MAI-Voice-2.1-Flash",
                  "es-ES-Marta:MAI-Voice-2.1-Flash",
                  "es-MX-Alejo:MAI-Voice-2.1-Flash",
                  "es-MX-Grant:MAI-Voice-2.1-Flash",
                  "es-MX-Harper:MAI-Voice-2.1-Flash",
                  "es-MX-Valeria:MAI-Voice-2.1-Flash",
                  "fi-FI-Grant:MAI-Voice-2.1-Flash",
                  "fi-FI-Harper:MAI-Voice-2.1-Flash",
                  "fr-FR-Grant:MAI-Voice-2.1-Flash",
                  "fr-FR-Harper:MAI-Voice-2.1-Flash",
                  "fr-FR-Marc:MAI-Voice-2.1-Flash",
                  "fr-FR-Soleil:MAI-Voice-2.1-Flash",
                  "hi-IN-Arjun:MAI-Voice-2.1-Flash",
                  "hi-IN-Dhruv:MAI-Voice-2.1-Flash",
                  "hi-IN-Grant:MAI-Voice-2.1-Flash",
                  "hi-IN-Harper:MAI-Voice-2.1-Flash",
                  "hi-IN-Kavya:MAI-Voice-2.1-Flash",
                  "hi-IN-Priya:MAI-Voice-2.1-Flash",
                  "hu-HU-Bence:MAI-Voice-2.1-Flash",
                  "hu-HU-Grant:MAI-Voice-2.1-Flash",
                  "hu-HU-Harper:MAI-Voice-2.1-Flash",
                  "hu-HU-Levente:MAI-Voice-2.1-Flash",
                  "hu-HU-Lilla:MAI-Voice-2.1-Flash",
                  "hu-HU-Reka:MAI-Voice-2.1-Flash",
                  "id-ID-Grant:MAI-Voice-2.1-Flash",
                  "id-ID-Harper:MAI-Voice-2.1-Flash",
                  "it-IT-Grant:MAI-Voice-2.1-Flash",
                  "it-IT-Harper:MAI-Voice-2.1-Flash",
                  "it-IT-Luca:MAI-Voice-2.1-Flash",
                  "it-IT-Rosa:MAI-Voice-2.1-Flash",
                  "ko-KR-Grant:MAI-Voice-2.1-Flash",
                  "ko-KR-Haena:MAI-Voice-2.1-Flash",
                  "ko-KR-Harper:MAI-Voice-2.1-Flash",
                  "ko-KR-Junho:MAI-Voice-2.1-Flash",
                  "nb-NO-Grant:MAI-Voice-2.1-Flash",
                  "nb-NO-Harper:MAI-Voice-2.1-Flash",
                  "nl-NL-Grant:MAI-Voice-2.1-Flash",
                  "nl-NL-Harper:MAI-Voice-2.1-Flash",
                  "nl-NL-Sander:MAI-Voice-2.1-Flash",
                  "pl-PL-Grant:MAI-Voice-2.1-Flash",
                  "pl-PL-Harper:MAI-Voice-2.1-Flash",
                  "pt-BR-Caio:MAI-Voice-2.1-Flash",
                  "pt-BR-Grant:MAI-Voice-2.1-Flash",
                  "pt-BR-Harper:MAI-Voice-2.1-Flash",
                  "pt-BR-Luana:MAI-Voice-2.1-Flash",
                  "pt-BR-Pedro:MAI-Voice-2.1-Flash",
                  "pt-BR-Rafael:MAI-Voice-2.1-Flash",
                  "pt-PT-Grant:MAI-Voice-2.1-Flash",
                  "pt-PT-Harper:MAI-Voice-2.1-Flash",
                  "pt-PT-Rui:MAI-Voice-2.1-Flash",
                  "ro-RO-Andrei:MAI-Voice-2.1-Flash",
                  "ro-RO-Elena:MAI-Voice-2.1-Flash",
                  "ro-RO-Grant:MAI-Voice-2.1-Flash",
                  "ro-RO-Harper:MAI-Voice-2.1-Flash",
                  "ro-RO-Ioana:MAI-Voice-2.1-Flash",
                  "ro-RO-Radu:MAI-Voice-2.1-Flash",
                  "ru-RU-Grant:MAI-Voice-2.1-Flash",
                  "ru-RU-Harper:MAI-Voice-2.1-Flash",
                  "ru-RU-Lev:MAI-Voice-2.1-Flash",
                  "ru-RU-Masha:MAI-Voice-2.1-Flash",
                  "sv-SE-Grant:MAI-Voice-2.1-Flash",
                  "sv-SE-Harper:MAI-Voice-2.1-Flash",
                  "th-TH-Grant:MAI-Voice-2.1-Flash",
                  "th-TH-Harper:MAI-Voice-2.1-Flash",
                  "th-TH-Krit:MAI-Voice-2.1-Flash",
                  "th-TH-Nattapong:MAI-Voice-2.1-Flash",
                  "tr-TR-Aydin:MAI-Voice-2.1-Flash",
                  "tr-TR-Elif:MAI-Voice-2.1-Flash",
                  "tr-TR-Grant:MAI-Voice-2.1-Flash",
                  "tr-TR-Harper:MAI-Voice-2.1-Flash",
                  "vi-VN-Grant:MAI-Voice-2.1-Flash",
                  "vi-VN-Harper:MAI-Voice-2.1-Flash",
                  "zh-CN-Bo:MAI-Voice-2.1-Flash",
                  "zh-CN-Grant:MAI-Voice-2.1-Flash",
                  "zh-CN-Harper:MAI-Voice-2.1-Flash",
                  "zh-CN-Lan:MAI-Voice-2.1-Flash",
                  "zh-CN-Mei:MAI-Voice-2.1-Flash",
                  "zh-CN-Wei:MAI-Voice-2.1-Flash"
                ],
                "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-Flash",
              "cs-CZ-Harper:MAI-Voice-2.1-Flash",
              "da-DK-Grant:MAI-Voice-2.1-Flash",
              "da-DK-Harper:MAI-Voice-2.1-Flash",
              "de-DE-Grant:MAI-Voice-2.1-Flash",
              "de-DE-Harper:MAI-Voice-2.1-Flash",
              "de-DE-Klaus:MAI-Voice-2.1-Flash",
              "de-DE-Mia:MAI-Voice-2.1-Flash",
              "en-AU-Isla:MAI-Voice-2.1-Flash",
              "en-GB-Emily:MAI-Voice-2.1-Flash",
              "en-GB-Harry:MAI-Voice-2.1-Flash",
              "en-IN-Dhruv:MAI-Voice-2.1-Flash",
              "en-IN-Priya:MAI-Voice-2.1-Flash",
              "en-US-Ethan:MAI-Voice-2.1-Flash",
              "en-US-Grant:MAI-Voice-2.1-Flash",
              "en-US-Harper:MAI-Voice-2.1-Flash",
              "en-US-Iris:MAI-Voice-2.1-Flash",
              "en-US-Jasper:MAI-Voice-2.1-Flash",
              "en-US-Olivia:MAI-Voice-2.1-Flash",
              "en-US-Sage:MAI-Voice-2.1-Flash",
              "es-ES-Marta:MAI-Voice-2.1-Flash",
              "es-MX-Alejo:MAI-Voice-2.1-Flash",
              "es-MX-Grant:MAI-Voice-2.1-Flash",
              "es-MX-Harper:MAI-Voice-2.1-Flash",
              "es-MX-Valeria:MAI-Voice-2.1-Flash",
              "fi-FI-Grant:MAI-Voice-2.1-Flash",
              "fi-FI-Harper:MAI-Voice-2.1-Flash",
              "fr-FR-Grant:MAI-Voice-2.1-Flash",
              "fr-FR-Harper:MAI-Voice-2.1-Flash",
              "fr-FR-Marc:MAI-Voice-2.1-Flash",
              "fr-FR-Soleil:MAI-Voice-2.1-Flash",
              "hi-IN-Arjun:MAI-Voice-2.1-Flash",
              "hi-IN-Dhruv:MAI-Voice-2.1-Flash",
              "hi-IN-Grant:MAI-Voice-2.1-Flash",
              "hi-IN-Harper:MAI-Voice-2.1-Flash",
              "hi-IN-Kavya:MAI-Voice-2.1-Flash",
              "hi-IN-Priya:MAI-Voice-2.1-Flash",
              "hu-HU-Bence:MAI-Voice-2.1-Flash",
              "hu-HU-Grant:MAI-Voice-2.1-Flash",
              "hu-HU-Harper:MAI-Voice-2.1-Flash",
              "hu-HU-Levente:MAI-Voice-2.1-Flash",
              "hu-HU-Lilla:MAI-Voice-2.1-Flash",
              "hu-HU-Reka:MAI-Voice-2.1-Flash",
              "id-ID-Grant:MAI-Voice-2.1-Flash",
              "id-ID-Harper:MAI-Voice-2.1-Flash",
              "it-IT-Grant:MAI-Voice-2.1-Flash",
              "it-IT-Harper:MAI-Voice-2.1-Flash",
              "it-IT-Luca:MAI-Voice-2.1-Flash",
              "it-IT-Rosa:MAI-Voice-2.1-Flash",
              "ko-KR-Grant:MAI-Voice-2.1-Flash",
              "ko-KR-Haena:MAI-Voice-2.1-Flash",
              "ko-KR-Harper:MAI-Voice-2.1-Flash",
              "ko-KR-Junho:MAI-Voice-2.1-Flash",
              "nb-NO-Grant:MAI-Voice-2.1-Flash",
              "nb-NO-Harper:MAI-Voice-2.1-Flash",
              "nl-NL-Grant:MAI-Voice-2.1-Flash",
              "nl-NL-Harper:MAI-Voice-2.1-Flash",
              "nl-NL-Sander:MAI-Voice-2.1-Flash",
              "pl-PL-Grant:MAI-Voice-2.1-Flash",
              "pl-PL-Harper:MAI-Voice-2.1-Flash",
              "pt-BR-Caio:MAI-Voice-2.1-Flash",
              "pt-BR-Grant:MAI-Voice-2.1-Flash",
              "pt-BR-Harper:MAI-Voice-2.1-Flash",
              "pt-BR-Luana:MAI-Voice-2.1-Flash",
              "pt-BR-Pedro:MAI-Voice-2.1-Flash",
              "pt-BR-Rafael:MAI-Voice-2.1-Flash",
              "pt-PT-Grant:MAI-Voice-2.1-Flash",
              "pt-PT-Harper:MAI-Voice-2.1-Flash",
              "pt-PT-Rui:MAI-Voice-2.1-Flash",
              "ro-RO-Andrei:MAI-Voice-2.1-Flash",
              "ro-RO-Elena:MAI-Voice-2.1-Flash",
              "ro-RO-Grant:MAI-Voice-2.1-Flash",
              "ro-RO-Harper:MAI-Voice-2.1-Flash",
              "ro-RO-Ioana:MAI-Voice-2.1-Flash",
              "ro-RO-Radu:MAI-Voice-2.1-Flash",
              "ru-RU-Grant:MAI-Voice-2.1-Flash",
              "ru-RU-Harper:MAI-Voice-2.1-Flash",
              "ru-RU-Lev:MAI-Voice-2.1-Flash",
              "ru-RU-Masha:MAI-Voice-2.1-Flash",
              "sv-SE-Grant:MAI-Voice-2.1-Flash",
              "sv-SE-Harper:MAI-Voice-2.1-Flash",
              "th-TH-Grant:MAI-Voice-2.1-Flash",
              "th-TH-Harper:MAI-Voice-2.1-Flash",
              "th-TH-Krit:MAI-Voice-2.1-Flash",
              "th-TH-Nattapong:MAI-Voice-2.1-Flash",
              "tr-TR-Aydin:MAI-Voice-2.1-Flash",
              "tr-TR-Elif:MAI-Voice-2.1-Flash",
              "tr-TR-Grant:MAI-Voice-2.1-Flash",
              "tr-TR-Harper:MAI-Voice-2.1-Flash",
              "vi-VN-Grant:MAI-Voice-2.1-Flash",
              "vi-VN-Harper:MAI-Voice-2.1-Flash",
              "zh-CN-Bo:MAI-Voice-2.1-Flash",
              "zh-CN-Grant:MAI-Voice-2.1-Flash",
              "zh-CN-Harper:MAI-Voice-2.1-Flash",
              "zh-CN-Lan:MAI-Voice-2.1-Flash",
              "zh-CN-Mei:MAI-Voice-2.1-Flash",
              "zh-CN-Wei:MAI-Voice-2.1-Flash"
            ]
          },
          "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.03000",
                "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.00003",
                "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": "768d1dc9b9da20eb0942",
            "label": "Microsoft AI: MAI-Voice-2.1-Flash",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Privzeta konfiguracija"
                },
                "label": "Microsoft AI: MAI-Voice-2.1-Flash · Privzeta konfiguracija",
                "units": [
                  {
                    "amount": "0.000030",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "a7f384d81db64c9b1e8c0855",
                    "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-flash\", \"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-Flash\", \"cs-CZ-Harper:MAI-Voice-2.1-Flash\", \"da-DK-Grant:MAI-Voice-2.1-Flash\", \"da-DK-Harper:MAI-Voice-2.1-Flash\", \"de-DE-Grant:MAI-Voice-2.1-Flash\", \"de-DE-Harper:MAI-Voice-2.1-Flash\", \"de-DE-Klaus:MAI-Voice-2.1-Flash\", \"de-DE-Mia:MAI-Voice-2.1-Flash\", \"en-AU-Isla:MAI-Voice-2.1-Flash\", \"en-GB-Emily:MAI-Voice-2.1-Flash\", \"en-GB-Harry:MAI-Voice-2.1-Flash\", \"en-IN-Dhruv:MAI-Voice-2.1-Flash\", \"en-IN-Priya:MAI-Voice-2.1-Flash\", \"en-US-Ethan:MAI-Voice-2.1-Flash\", \"en-US-Grant:MAI-Voice-2.1-Flash\", \"en-US-Harper:MAI-Voice-2.1-Flash\", \"en-US-Iris:MAI-Voice-2.1-Flash\", \"en-US-Jasper:MAI-Voice-2.1-Flash\", \"en-US-Olivia:MAI-Voice-2.1-Flash\", \"en-US-Sage:MAI-Voice-2.1-Flash\", \"es-ES-Marta:MAI-Voice-2.1-Flash\", \"es-MX-Alejo:MAI-Voice-2.1-Flash\", \"es-MX-Grant:MAI-Voice-2.1-Flash\", \"es-MX-Harper:MAI-Voice-2.1-Flash\", \"es-MX-Valeria:MAI-Voice-2.1-Flash\", \"fi-FI-Grant:MAI-Voice-2.1-Flash\", \"fi-FI-Harper:MAI-Voice-2.1-Flash\", \"fr-FR-Grant:MAI-Voice-2.1-Flash\", \"fr-FR-Harper:MAI-Voice-2.1-Flash\", \"fr-FR-Marc:MAI-Voice-2.1-Flash\", \"fr-FR-Soleil:MAI-Voice-2.1-Flash\", \"hi-IN-Arjun:MAI-Voice-2.1-Flash\", \"hi-IN-Dhruv:MAI-Voice-2.1-Flash\", \"hi-IN-Grant:MAI-Voice-2.1-Flash\", \"hi-IN-Harper:MAI-Voice-2.1-Flash\", \"hi-IN-Kavya:MAI-Voice-2.1-Flash\", \"hi-IN-Priya:MAI-Voice-2.1-Flash\", \"hu-HU-Bence:MAI-Voice-2.1-Flash\", \"hu-HU-Grant:MAI-Voice-2.1-Flash\", \"hu-HU-Harper:MAI-Voice-2.1-Flash\", \"hu-HU-Levente:MAI-Voice-2.1-Flash\", \"hu-HU-Lilla:MAI-Voice-2.1-Flash\", \"hu-HU-Reka:MAI-Voice-2.1-Flash\", \"id-ID-Grant:MAI-Voice-2.1-Flash\", \"id-ID-Harper:MAI-Voice-2.1-Flash\", \"it-IT-Grant:MAI-Voice-2.1-Flash\", \"it-IT-Harper:MAI-Voice-2.1-Flash\", \"it-IT-Luca:MAI-Voice-2.1-Flash\", \"it-IT-Rosa:MAI-Voice-2.1-Flash\", \"ko-KR-Grant:MAI-Voice-2.1-Flash\", \"ko-KR-Haena:MAI-Voice-2.1-Flash\", \"ko-KR-Harper:MAI-Voice-2.1-Flash\", \"ko-KR-Junho:MAI-Voice-2.1-Flash\", \"nb-NO-Grant:MAI-Voice-2.1-Flash\", \"nb-NO-Harper:MAI-Voice-2.1-Flash\", \"nl-NL-Grant:MAI-Voice-2.1-Flash\", \"nl-NL-Harper:MAI-Voice-2.1-Flash\", \"nl-NL-Sander:MAI-Voice-2.1-Flash\", \"pl-PL-Grant:MAI-Voice-2.1-Flash\", \"pl-PL-Harper:MAI-Voice-2.1-Flash\", \"pt-BR-Caio:MAI-Voice-2.1-Flash\", \"pt-BR-Grant:MAI-Voice-2.1-Flash\", \"pt-BR-Harper:MAI-Voice-2.1-Flash\", \"pt-BR-Luana:MAI-Voice-2.1-Flash\", \"pt-BR-Pedro:MAI-Voice-2.1-Flash\", \"pt-BR-Rafael:MAI-Voice-2.1-Flash\", \"pt-PT-Grant:MAI-Voice-2.1-Flash\", \"pt-PT-Harper:MAI-Voice-2.1-Flash\", \"pt-PT-Rui:MAI-Voice-2.1-Flash\", \"ro-RO-Andrei:MAI-Voice-2.1-Flash\", \"ro-RO-Elena:MAI-Voice-2.1-Flash\", \"ro-RO-Grant:MAI-Voice-2.1-Flash\", \"ro-RO-Harper:MAI-Voice-2.1-Flash\", \"ro-RO-Ioana:MAI-Voice-2.1-Flash\", \"ro-RO-Radu:MAI-Voice-2.1-Flash\", \"ru-RU-Grant:MAI-Voice-2.1-Flash\", \"ru-RU-Harper:MAI-Voice-2.1-Flash\", \"ru-RU-Lev:MAI-Voice-2.1-Flash\", \"ru-RU-Masha:MAI-Voice-2.1-Flash\", \"sv-SE-Grant:MAI-Voice-2.1-Flash\", \"sv-SE-Harper:MAI-Voice-2.1-Flash\", \"th-TH-Grant:MAI-Voice-2.1-Flash\", \"th-TH-Harper:MAI-Voice-2.1-Flash\", \"th-TH-Krit:MAI-Voice-2.1-Flash\", \"th-TH-Nattapong:MAI-Voice-2.1-Flash\", \"tr-TR-Aydin:MAI-Voice-2.1-Flash\", \"tr-TR-Elif:MAI-Voice-2.1-Flash\", \"tr-TR-Grant:MAI-Voice-2.1-Flash\", \"tr-TR-Harper:MAI-Voice-2.1-Flash\", \"vi-VN-Grant:MAI-Voice-2.1-Flash\", \"vi-VN-Harper:MAI-Voice-2.1-Flash\", \"zh-CN-Bo:MAI-Voice-2.1-Flash\", \"zh-CN-Grant:MAI-Voice-2.1-Flash\", \"zh-CN-Harper:MAI-Voice-2.1-Flash\", \"zh-CN-Lan:MAI-Voice-2.1-Flash\", \"zh-CN-Mei:MAI-Voice-2.1-Flash\", \"zh-CN-Wei:MAI-Voice-2.1-Flash\"]')\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": 3e-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.03000",
                "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.00003",
                "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-flash",
        "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.03000",
            "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.00003",
            "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-flash",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "ad23da522dc2286ad2abe580a281945e54ccc87e11434ca1f25f6118d8ae5ec0",
    "input_html_sha256": "0f49022e47f4f8585e76ca924e3d4cd685cea744ba62eae1be273fd4bd4fca9d",
    "private_audit_sha256": "ea655c168bd208029f0c365702735376f1e68a1f976c27ab2633596d81761230",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sl/microsoft-mai-voice-2-1-flash/",
    "description": "MAI-Voice-2.1-Flash podjetja Microsoft AI ustvarja izrazni govor v 23 jezikih za interaktivne glasovne aplikacije. Podpira pretakanje, več govorcev in nadzor podajanja na ravni stavka ter ponuja izbrano knjižnico glasov.",
    "locale": "sl",
    "md_url": "https://ailoot.ai/models/sl/microsoft-mai-voice-2-1-flash/index.md",
    "title": "Microsoft AI: MAI-Voice-2.1-Flash — Ailoot",
    "url": "https://ailoot.ai/models/sl/microsoft-mai-voice-2-1-flash/"
  },
  "rawModel": {
    "about": "MAI-Voice-2.1-Flash je model podjetja Microsoft AI za pretvorbo besedila v govor, usmerjano z navodili, zasnovan za odzivno govorno interakcijo. Njegov proizvajalec ga namenja glasovnim pomočnikom, pogovorom podpore strankam in telefonskim menijem. Ustvarja naraven, izrazni govor v triindvajsetih jezikih z nadzorom tona in podajanja. Flash je različica, usmerjena v odziv v živo; ločeno poimenovani MAI-Voice-2.1 daje prednost podrobni izraznosti in zvestobi pri daljši vsebini.\n\n### Besedilo, govorec in jezik\n\nVnos je besedilo za izgovarjavo z izbranim glasom in neobveznimi izraznimi navodili v SSML. Upravljani katalog glasov razlikuje govorca, jezikovno različico in različico modela. Harper in Grant sta primera poimenovanih govorcev z jezikovno specifičnimi vnosi. Uporabite predvideno besedilo v ciljnem jeziku in izberite ustrezno jezikovno različico; pripravljen angleški pozdrav in španska razlaga sta ločena govorna odlomka, vsak z lastnim besedilom.\n\nKartica modela dokumentira dosledno glasovno identiteto skozi podprte jezike in več govorcev za dialog. To lahko podpira aplikacijo, ki potrebuje enega prepoznavnega pripovedovalca skozi lokalizirane pozive ali kratek dialog z različnimi vlogami. Vrstice izrecno dodelite predvidenim govorcem in te dodelitve ohranite stabilne. Zvok je govorjena različica tega scenarija, ne nov odgovor, sestavljen iz odprtega vprašanja.\n\n### Ton in govorni slog\n\nMicrosoft dokumentira nadzor čustev in podajanja na ravni stavka ter govorne menjave prek SSML. Razpoložljivi slogi so odvisni od izbranega glasu. Upravljani katalog vključuje namenske sloge, kot so narrator, educational in customer_call_center, skupaj z izraznimi slogi za določene govorce. Ameriški vnos Harper na primer vključuje joyful in relieved. Izberite slog, ki ga glas podpira, namesto da bi predpostavljali, da vsak govorec sprejme isti nabor.\n\nPraktična podporna vrstica je: »Lahko vam pomagam najti pravi dokument. Povejte mi njegov naslov ali opišite temo.« Zahteva naj bo dovolj kratka, da poslušalec lahko ukrepa, podajanje pa mirno ali spodbudno glede na interakcijo. Pri učni dejavnosti razlago in naslednje vprašanje napišite kot ločeni govorni enoti. Izraznost služi pomenu, kadar scenarij jasno pokaže spremembo namena.\n\n### Pretakanje in dostava zvoka\n\nKartica modela Flash posebej dokumentira pretočni izhod za dialog v živo, vključno s poteki, ki obravnavajo poslušalčev govor med odgovorom. Aplikacija lahko zvok predvaja ob prihodu in usklajuje prekinitev ter naslednjo govorno menjavo. Tako časovni potek govornega sporočila postane del interakcije, namesto da bi bilo treba vsak odgovor najprej pripraviti kot celoten posnetek.\n\nProizvajalec omogoča, da potek sinteze določi izhodni format. Njegov objavljeni primer ustvari mono datoteko MP3 pri 24 kHz in 160 kbit/s. To je ena dokumentirana izhodna konfiguracija, ne fiksna omejitev izvornega formata. Izberite zvočno predstavitev, ki jo predvidena pot predvajanja sprejme, ter ohranite govorca in govorjeno besedilo na voljo za pregled rezultata.\n\n### Neobvezni način referenčnega glasu\n\nMicrosoftov način prilagojenega glasu lahko iz pet- do šestdesetsekundnega referenčnega izseka posnema govorca, ki je podal soglasje, brez dodatnega učenja. Kartica modela priporoča naravno pogovorno podajanje z zmerno energijo, saj referenca vpliva na ustvarjeno izvedbo. Ta način ima ločen postopek odobritve proizvajalca in posnetega soglasja; prednastavljeni glasovi knjižnice tvorijo drugo pripravljalno pot.\n\nPri referenci, namenjeni določitvi pripovedovalca znamke, uporabite čist, reprezentativen odlomek in določite, katero podajanje naj se prenese v novi scenarij. Pri prednastavljenem govoru pripravite dejanska imena, ukaze in fraze v ciljnem jeziku, ki jih bo aplikacija uporabljala. Te odlomke poslušajte z izbranim glasom in preverite prehod med govornimi menjavami. Uporaben rezultat je izrazna govorna interakcija s premišljeno izbranim govorcem, jasnim besedilom in zvokom, prilagojenim poslušalčevemu okolju predvajanja.",
    "alias_of": null,
    "aliases": [],
    "author": "Microsoft AI",
    "available": null,
    "canonical_model": "microsoft/mai-voice-2.1-flash",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.03000",
            "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.00003",
            "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-flash",
    "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-flash"
                ],
                "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-Flash",
                  "cs-CZ-Harper:MAI-Voice-2.1-Flash",
                  "da-DK-Grant:MAI-Voice-2.1-Flash",
                  "da-DK-Harper:MAI-Voice-2.1-Flash",
                  "de-DE-Grant:MAI-Voice-2.1-Flash",
                  "de-DE-Harper:MAI-Voice-2.1-Flash",
                  "de-DE-Klaus:MAI-Voice-2.1-Flash",
                  "de-DE-Mia:MAI-Voice-2.1-Flash",
                  "en-AU-Isla:MAI-Voice-2.1-Flash",
                  "en-GB-Emily:MAI-Voice-2.1-Flash",
                  "en-GB-Harry:MAI-Voice-2.1-Flash",
                  "en-IN-Dhruv:MAI-Voice-2.1-Flash",
                  "en-IN-Priya:MAI-Voice-2.1-Flash",
                  "en-US-Ethan:MAI-Voice-2.1-Flash",
                  "en-US-Grant:MAI-Voice-2.1-Flash",
                  "en-US-Harper:MAI-Voice-2.1-Flash",
                  "en-US-Iris:MAI-Voice-2.1-Flash",
                  "en-US-Jasper:MAI-Voice-2.1-Flash",
                  "en-US-Olivia:MAI-Voice-2.1-Flash",
                  "en-US-Sage:MAI-Voice-2.1-Flash",
                  "es-ES-Marta:MAI-Voice-2.1-Flash",
                  "es-MX-Alejo:MAI-Voice-2.1-Flash",
                  "es-MX-Grant:MAI-Voice-2.1-Flash",
                  "es-MX-Harper:MAI-Voice-2.1-Flash",
                  "es-MX-Valeria:MAI-Voice-2.1-Flash",
                  "fi-FI-Grant:MAI-Voice-2.1-Flash",
                  "fi-FI-Harper:MAI-Voice-2.1-Flash",
                  "fr-FR-Grant:MAI-Voice-2.1-Flash",
                  "fr-FR-Harper:MAI-Voice-2.1-Flash",
                  "fr-FR-Marc:MAI-Voice-2.1-Flash",
                  "fr-FR-Soleil:MAI-Voice-2.1-Flash",
                  "hi-IN-Arjun:MAI-Voice-2.1-Flash",
                  "hi-IN-Dhruv:MAI-Voice-2.1-Flash",
                  "hi-IN-Grant:MAI-Voice-2.1-Flash",
                  "hi-IN-Harper:MAI-Voice-2.1-Flash",
                  "hi-IN-Kavya:MAI-Voice-2.1-Flash",
                  "hi-IN-Priya:MAI-Voice-2.1-Flash",
                  "hu-HU-Bence:MAI-Voice-2.1-Flash",
                  "hu-HU-Grant:MAI-Voice-2.1-Flash",
                  "hu-HU-Harper:MAI-Voice-2.1-Flash",
                  "hu-HU-Levente:MAI-Voice-2.1-Flash",
                  "hu-HU-Lilla:MAI-Voice-2.1-Flash",
                  "hu-HU-Reka:MAI-Voice-2.1-Flash",
                  "id-ID-Grant:MAI-Voice-2.1-Flash",
                  "id-ID-Harper:MAI-Voice-2.1-Flash",
                  "it-IT-Grant:MAI-Voice-2.1-Flash",
                  "it-IT-Harper:MAI-Voice-2.1-Flash",
                  "it-IT-Luca:MAI-Voice-2.1-Flash",
                  "it-IT-Rosa:MAI-Voice-2.1-Flash",
                  "ko-KR-Grant:MAI-Voice-2.1-Flash",
                  "ko-KR-Haena:MAI-Voice-2.1-Flash",
                  "ko-KR-Harper:MAI-Voice-2.1-Flash",
                  "ko-KR-Junho:MAI-Voice-2.1-Flash",
                  "nb-NO-Grant:MAI-Voice-2.1-Flash",
                  "nb-NO-Harper:MAI-Voice-2.1-Flash",
                  "nl-NL-Grant:MAI-Voice-2.1-Flash",
                  "nl-NL-Harper:MAI-Voice-2.1-Flash",
                  "nl-NL-Sander:MAI-Voice-2.1-Flash",
                  "pl-PL-Grant:MAI-Voice-2.1-Flash",
                  "pl-PL-Harper:MAI-Voice-2.1-Flash",
                  "pt-BR-Caio:MAI-Voice-2.1-Flash",
                  "pt-BR-Grant:MAI-Voice-2.1-Flash",
                  "pt-BR-Harper:MAI-Voice-2.1-Flash",
                  "pt-BR-Luana:MAI-Voice-2.1-Flash",
                  "pt-BR-Pedro:MAI-Voice-2.1-Flash",
                  "pt-BR-Rafael:MAI-Voice-2.1-Flash",
                  "pt-PT-Grant:MAI-Voice-2.1-Flash",
                  "pt-PT-Harper:MAI-Voice-2.1-Flash",
                  "pt-PT-Rui:MAI-Voice-2.1-Flash",
                  "ro-RO-Andrei:MAI-Voice-2.1-Flash",
                  "ro-RO-Elena:MAI-Voice-2.1-Flash",
                  "ro-RO-Grant:MAI-Voice-2.1-Flash",
                  "ro-RO-Harper:MAI-Voice-2.1-Flash",
                  "ro-RO-Ioana:MAI-Voice-2.1-Flash",
                  "ro-RO-Radu:MAI-Voice-2.1-Flash",
                  "ru-RU-Grant:MAI-Voice-2.1-Flash",
                  "ru-RU-Harper:MAI-Voice-2.1-Flash",
                  "ru-RU-Lev:MAI-Voice-2.1-Flash",
                  "ru-RU-Masha:MAI-Voice-2.1-Flash",
                  "sv-SE-Grant:MAI-Voice-2.1-Flash",
                  "sv-SE-Harper:MAI-Voice-2.1-Flash",
                  "th-TH-Grant:MAI-Voice-2.1-Flash",
                  "th-TH-Harper:MAI-Voice-2.1-Flash",
                  "th-TH-Krit:MAI-Voice-2.1-Flash",
                  "th-TH-Nattapong:MAI-Voice-2.1-Flash",
                  "tr-TR-Aydin:MAI-Voice-2.1-Flash",
                  "tr-TR-Elif:MAI-Voice-2.1-Flash",
                  "tr-TR-Grant:MAI-Voice-2.1-Flash",
                  "tr-TR-Harper:MAI-Voice-2.1-Flash",
                  "vi-VN-Grant:MAI-Voice-2.1-Flash",
                  "vi-VN-Harper:MAI-Voice-2.1-Flash",
                  "zh-CN-Bo:MAI-Voice-2.1-Flash",
                  "zh-CN-Grant:MAI-Voice-2.1-Flash",
                  "zh-CN-Harper:MAI-Voice-2.1-Flash",
                  "zh-CN-Lan:MAI-Voice-2.1-Flash",
                  "zh-CN-Mei:MAI-Voice-2.1-Flash",
                  "zh-CN-Wei:MAI-Voice-2.1-Flash"
                ],
                "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-Flash",
              "cs-CZ-Harper:MAI-Voice-2.1-Flash",
              "da-DK-Grant:MAI-Voice-2.1-Flash",
              "da-DK-Harper:MAI-Voice-2.1-Flash",
              "de-DE-Grant:MAI-Voice-2.1-Flash",
              "de-DE-Harper:MAI-Voice-2.1-Flash",
              "de-DE-Klaus:MAI-Voice-2.1-Flash",
              "de-DE-Mia:MAI-Voice-2.1-Flash",
              "en-AU-Isla:MAI-Voice-2.1-Flash",
              "en-GB-Emily:MAI-Voice-2.1-Flash",
              "en-GB-Harry:MAI-Voice-2.1-Flash",
              "en-IN-Dhruv:MAI-Voice-2.1-Flash",
              "en-IN-Priya:MAI-Voice-2.1-Flash",
              "en-US-Ethan:MAI-Voice-2.1-Flash",
              "en-US-Grant:MAI-Voice-2.1-Flash",
              "en-US-Harper:MAI-Voice-2.1-Flash",
              "en-US-Iris:MAI-Voice-2.1-Flash",
              "en-US-Jasper:MAI-Voice-2.1-Flash",
              "en-US-Olivia:MAI-Voice-2.1-Flash",
              "en-US-Sage:MAI-Voice-2.1-Flash",
              "es-ES-Marta:MAI-Voice-2.1-Flash",
              "es-MX-Alejo:MAI-Voice-2.1-Flash",
              "es-MX-Grant:MAI-Voice-2.1-Flash",
              "es-MX-Harper:MAI-Voice-2.1-Flash",
              "es-MX-Valeria:MAI-Voice-2.1-Flash",
              "fi-FI-Grant:MAI-Voice-2.1-Flash",
              "fi-FI-Harper:MAI-Voice-2.1-Flash",
              "fr-FR-Grant:MAI-Voice-2.1-Flash",
              "fr-FR-Harper:MAI-Voice-2.1-Flash",
              "fr-FR-Marc:MAI-Voice-2.1-Flash",
              "fr-FR-Soleil:MAI-Voice-2.1-Flash",
              "hi-IN-Arjun:MAI-Voice-2.1-Flash",
              "hi-IN-Dhruv:MAI-Voice-2.1-Flash",
              "hi-IN-Grant:MAI-Voice-2.1-Flash",
              "hi-IN-Harper:MAI-Voice-2.1-Flash",
              "hi-IN-Kavya:MAI-Voice-2.1-Flash",
              "hi-IN-Priya:MAI-Voice-2.1-Flash",
              "hu-HU-Bence:MAI-Voice-2.1-Flash",
              "hu-HU-Grant:MAI-Voice-2.1-Flash",
              "hu-HU-Harper:MAI-Voice-2.1-Flash",
              "hu-HU-Levente:MAI-Voice-2.1-Flash",
              "hu-HU-Lilla:MAI-Voice-2.1-Flash",
              "hu-HU-Reka:MAI-Voice-2.1-Flash",
              "id-ID-Grant:MAI-Voice-2.1-Flash",
              "id-ID-Harper:MAI-Voice-2.1-Flash",
              "it-IT-Grant:MAI-Voice-2.1-Flash",
              "it-IT-Harper:MAI-Voice-2.1-Flash",
              "it-IT-Luca:MAI-Voice-2.1-Flash",
              "it-IT-Rosa:MAI-Voice-2.1-Flash",
              "ko-KR-Grant:MAI-Voice-2.1-Flash",
              "ko-KR-Haena:MAI-Voice-2.1-Flash",
              "ko-KR-Harper:MAI-Voice-2.1-Flash",
              "ko-KR-Junho:MAI-Voice-2.1-Flash",
              "nb-NO-Grant:MAI-Voice-2.1-Flash",
              "nb-NO-Harper:MAI-Voice-2.1-Flash",
              "nl-NL-Grant:MAI-Voice-2.1-Flash",
              "nl-NL-Harper:MAI-Voice-2.1-Flash",
              "nl-NL-Sander:MAI-Voice-2.1-Flash",
              "pl-PL-Grant:MAI-Voice-2.1-Flash",
              "pl-PL-Harper:MAI-Voice-2.1-Flash",
              "pt-BR-Caio:MAI-Voice-2.1-Flash",
              "pt-BR-Grant:MAI-Voice-2.1-Flash",
              "pt-BR-Harper:MAI-Voice-2.1-Flash",
              "pt-BR-Luana:MAI-Voice-2.1-Flash",
              "pt-BR-Pedro:MAI-Voice-2.1-Flash",
              "pt-BR-Rafael:MAI-Voice-2.1-Flash",
              "pt-PT-Grant:MAI-Voice-2.1-Flash",
              "pt-PT-Harper:MAI-Voice-2.1-Flash",
              "pt-PT-Rui:MAI-Voice-2.1-Flash",
              "ro-RO-Andrei:MAI-Voice-2.1-Flash",
              "ro-RO-Elena:MAI-Voice-2.1-Flash",
              "ro-RO-Grant:MAI-Voice-2.1-Flash",
              "ro-RO-Harper:MAI-Voice-2.1-Flash",
              "ro-RO-Ioana:MAI-Voice-2.1-Flash",
              "ro-RO-Radu:MAI-Voice-2.1-Flash",
              "ru-RU-Grant:MAI-Voice-2.1-Flash",
              "ru-RU-Harper:MAI-Voice-2.1-Flash",
              "ru-RU-Lev:MAI-Voice-2.1-Flash",
              "ru-RU-Masha:MAI-Voice-2.1-Flash",
              "sv-SE-Grant:MAI-Voice-2.1-Flash",
              "sv-SE-Harper:MAI-Voice-2.1-Flash",
              "th-TH-Grant:MAI-Voice-2.1-Flash",
              "th-TH-Harper:MAI-Voice-2.1-Flash",
              "th-TH-Krit:MAI-Voice-2.1-Flash",
              "th-TH-Nattapong:MAI-Voice-2.1-Flash",
              "tr-TR-Aydin:MAI-Voice-2.1-Flash",
              "tr-TR-Elif:MAI-Voice-2.1-Flash",
              "tr-TR-Grant:MAI-Voice-2.1-Flash",
              "tr-TR-Harper:MAI-Voice-2.1-Flash",
              "vi-VN-Grant:MAI-Voice-2.1-Flash",
              "vi-VN-Harper:MAI-Voice-2.1-Flash",
              "zh-CN-Bo:MAI-Voice-2.1-Flash",
              "zh-CN-Grant:MAI-Voice-2.1-Flash",
              "zh-CN-Harper:MAI-Voice-2.1-Flash",
              "zh-CN-Lan:MAI-Voice-2.1-Flash",
              "zh-CN-Mei:MAI-Voice-2.1-Flash",
              "zh-CN-Wei:MAI-Voice-2.1-Flash"
            ]
          },
          "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.03000",
                "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.00003",
                "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": "768d1dc9b9da20eb0942",
            "label": "Microsoft AI: MAI-Voice-2.1-Flash",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Privzeta konfiguracija"
                },
                "label": "Microsoft AI: MAI-Voice-2.1-Flash · Privzeta konfiguracija",
                "units": [
                  {
                    "amount": "0.000030",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "a7f384d81db64c9b1e8c0855",
                    "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-flash\", \"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-Flash\", \"cs-CZ-Harper:MAI-Voice-2.1-Flash\", \"da-DK-Grant:MAI-Voice-2.1-Flash\", \"da-DK-Harper:MAI-Voice-2.1-Flash\", \"de-DE-Grant:MAI-Voice-2.1-Flash\", \"de-DE-Harper:MAI-Voice-2.1-Flash\", \"de-DE-Klaus:MAI-Voice-2.1-Flash\", \"de-DE-Mia:MAI-Voice-2.1-Flash\", \"en-AU-Isla:MAI-Voice-2.1-Flash\", \"en-GB-Emily:MAI-Voice-2.1-Flash\", \"en-GB-Harry:MAI-Voice-2.1-Flash\", \"en-IN-Dhruv:MAI-Voice-2.1-Flash\", \"en-IN-Priya:MAI-Voice-2.1-Flash\", \"en-US-Ethan:MAI-Voice-2.1-Flash\", \"en-US-Grant:MAI-Voice-2.1-Flash\", \"en-US-Harper:MAI-Voice-2.1-Flash\", \"en-US-Iris:MAI-Voice-2.1-Flash\", \"en-US-Jasper:MAI-Voice-2.1-Flash\", \"en-US-Olivia:MAI-Voice-2.1-Flash\", \"en-US-Sage:MAI-Voice-2.1-Flash\", \"es-ES-Marta:MAI-Voice-2.1-Flash\", \"es-MX-Alejo:MAI-Voice-2.1-Flash\", \"es-MX-Grant:MAI-Voice-2.1-Flash\", \"es-MX-Harper:MAI-Voice-2.1-Flash\", \"es-MX-Valeria:MAI-Voice-2.1-Flash\", \"fi-FI-Grant:MAI-Voice-2.1-Flash\", \"fi-FI-Harper:MAI-Voice-2.1-Flash\", \"fr-FR-Grant:MAI-Voice-2.1-Flash\", \"fr-FR-Harper:MAI-Voice-2.1-Flash\", \"fr-FR-Marc:MAI-Voice-2.1-Flash\", \"fr-FR-Soleil:MAI-Voice-2.1-Flash\", \"hi-IN-Arjun:MAI-Voice-2.1-Flash\", \"hi-IN-Dhruv:MAI-Voice-2.1-Flash\", \"hi-IN-Grant:MAI-Voice-2.1-Flash\", \"hi-IN-Harper:MAI-Voice-2.1-Flash\", \"hi-IN-Kavya:MAI-Voice-2.1-Flash\", \"hi-IN-Priya:MAI-Voice-2.1-Flash\", \"hu-HU-Bence:MAI-Voice-2.1-Flash\", \"hu-HU-Grant:MAI-Voice-2.1-Flash\", \"hu-HU-Harper:MAI-Voice-2.1-Flash\", \"hu-HU-Levente:MAI-Voice-2.1-Flash\", \"hu-HU-Lilla:MAI-Voice-2.1-Flash\", \"hu-HU-Reka:MAI-Voice-2.1-Flash\", \"id-ID-Grant:MAI-Voice-2.1-Flash\", \"id-ID-Harper:MAI-Voice-2.1-Flash\", \"it-IT-Grant:MAI-Voice-2.1-Flash\", \"it-IT-Harper:MAI-Voice-2.1-Flash\", \"it-IT-Luca:MAI-Voice-2.1-Flash\", \"it-IT-Rosa:MAI-Voice-2.1-Flash\", \"ko-KR-Grant:MAI-Voice-2.1-Flash\", \"ko-KR-Haena:MAI-Voice-2.1-Flash\", \"ko-KR-Harper:MAI-Voice-2.1-Flash\", \"ko-KR-Junho:MAI-Voice-2.1-Flash\", \"nb-NO-Grant:MAI-Voice-2.1-Flash\", \"nb-NO-Harper:MAI-Voice-2.1-Flash\", \"nl-NL-Grant:MAI-Voice-2.1-Flash\", \"nl-NL-Harper:MAI-Voice-2.1-Flash\", \"nl-NL-Sander:MAI-Voice-2.1-Flash\", \"pl-PL-Grant:MAI-Voice-2.1-Flash\", \"pl-PL-Harper:MAI-Voice-2.1-Flash\", \"pt-BR-Caio:MAI-Voice-2.1-Flash\", \"pt-BR-Grant:MAI-Voice-2.1-Flash\", \"pt-BR-Harper:MAI-Voice-2.1-Flash\", \"pt-BR-Luana:MAI-Voice-2.1-Flash\", \"pt-BR-Pedro:MAI-Voice-2.1-Flash\", \"pt-BR-Rafael:MAI-Voice-2.1-Flash\", \"pt-PT-Grant:MAI-Voice-2.1-Flash\", \"pt-PT-Harper:MAI-Voice-2.1-Flash\", \"pt-PT-Rui:MAI-Voice-2.1-Flash\", \"ro-RO-Andrei:MAI-Voice-2.1-Flash\", \"ro-RO-Elena:MAI-Voice-2.1-Flash\", \"ro-RO-Grant:MAI-Voice-2.1-Flash\", \"ro-RO-Harper:MAI-Voice-2.1-Flash\", \"ro-RO-Ioana:MAI-Voice-2.1-Flash\", \"ro-RO-Radu:MAI-Voice-2.1-Flash\", \"ru-RU-Grant:MAI-Voice-2.1-Flash\", \"ru-RU-Harper:MAI-Voice-2.1-Flash\", \"ru-RU-Lev:MAI-Voice-2.1-Flash\", \"ru-RU-Masha:MAI-Voice-2.1-Flash\", \"sv-SE-Grant:MAI-Voice-2.1-Flash\", \"sv-SE-Harper:MAI-Voice-2.1-Flash\", \"th-TH-Grant:MAI-Voice-2.1-Flash\", \"th-TH-Harper:MAI-Voice-2.1-Flash\", \"th-TH-Krit:MAI-Voice-2.1-Flash\", \"th-TH-Nattapong:MAI-Voice-2.1-Flash\", \"tr-TR-Aydin:MAI-Voice-2.1-Flash\", \"tr-TR-Elif:MAI-Voice-2.1-Flash\", \"tr-TR-Grant:MAI-Voice-2.1-Flash\", \"tr-TR-Harper:MAI-Voice-2.1-Flash\", \"vi-VN-Grant:MAI-Voice-2.1-Flash\", \"vi-VN-Harper:MAI-Voice-2.1-Flash\", \"zh-CN-Bo:MAI-Voice-2.1-Flash\", \"zh-CN-Grant:MAI-Voice-2.1-Flash\", \"zh-CN-Harper:MAI-Voice-2.1-Flash\", \"zh-CN-Lan:MAI-Voice-2.1-Flash\", \"zh-CN-Mei:MAI-Voice-2.1-Flash\", \"zh-CN-Wei:MAI-Voice-2.1-Flash\"]')\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": 3e-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.03000",
                "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.00003",
                "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-flash",
        "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.03000",
            "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.00003",
            "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-flash",
        "request_model_id": "microsoft/mai-voice-2.1-flash",
        "route_label": "Ultra"
      }
    ],
    "name": "Microsoft AI: MAI-Voice-2.1-Flash",
    "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.000030",
            "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-flash",
    "short": "MAI-Voice-2.1-Flash podjetja Microsoft AI ustvarja izrazni govor v 23 jezikih za interaktivne glasovne aplikacije. Podpira pretakanje, več govorcev in nadzor podajanja na ravni stavka ter ponuja izbrano knjižnico glasov."
  },
  "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-Flash podjetja Microsoft AI ustvarja izrazni govor v 23 jezikih za interaktivne glasovne aplikacije. Podpira pretakanje, več govorcev in nadzor podajanja na ravni stavka ter ponuja izbrano knjižnico glasov.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b1a6e96190f41de50fa86ed8a05774c81f69d86df4adc75e575287bff6f0b05d",
    "renderer_sha256": "dcba2271c18b0f9570a8b166e8d1e3166f121e096a58609c3a46da31562a1bf2"
  },
  "sourceRevision": "3dca6048c91a6c217f084511b7c1abb6d0c863655e19f5a74a67430a463c6020"
}
