{
  "aboutHtml": "<h4>Replikker for talebaserte arbeidsflyter</h4><p>Speech 2.6 Turbo er en talesyntesevariant rettet mot hastighet. Produsenten beskriver den for taleassistenter og interaktive situasjoner der teksten gradvis blir til et svar. Modellen beholder de naturlige intonasjonene fra Speech 2.6-generasjonen og kan behandle spesielle skrivemåter.</p><h4>Tekst som må uttales riktig</h4><p>Modellen er laget for å lese datoer, telefonnumre, pengebeløp, nettadresser og e-postadresser uten at hver angivelse først må skrives om manuelt. Slik behandling er nyttig i dynamiske meldinger der tall og betegnelser opptrer sammen med vanlige ord. Produsenten beskriver behandling av disse formatene på flere språk.</p><h4>Taleflyt og følelsesstyring</h4><p>Speech 2.6 støtter Fluent LoRA: bevart, gjenkjennelig stemmeklang med jevnere uttale av teksten. Funksjonen gjelder bruk av en allerede klargjort stemme; separat klargjøring av en klon inngår ikke i en vanlig tekstforespørsel. Familien omfatter <strong>40 språk</strong>, inkludert russisk.</p><p>Turbo tilbyr sju grunnleggende følelser og tilleggsmodusene <code>fluent</code> og <code>whisper</code>. Modellen kan velge følelsesuttrykket selv ut fra innholdet eller bruke en angitt tilstand. Stemmedybde og tempo kan endres uavhengig av teksten.</p><h4>Stemme, pauser og uttale</h4><p>MiniMax tilbyr stemmevalg og styring av tempo, lydstyrke og tonehøyde. Hastigheten angis i området <strong>0,5–2</strong>, lydstyrken over 0 og opptil <strong>10</strong>, og endringen i tonehøyde fra <strong>−12 til 12</strong>. Følelsen kan overlates til modellen ut fra tekstens mening eller angis manuelt: glede, tristhet, sinne, frykt, avsky, overraskelse eller ro.</p><p>Uttalen kan presiseres med en erstatningsordliste og fonetisk angivelse; det internasjonale fonetiske alfabetet, kinesisk pinyin og japanske uttalevarianter er tilgjengelige. Pauser angis mellom talte utsnitt i området <strong>0,01–99,99 sekunder</strong>. Pauselengden angis med to desimalers nøyaktighet; markørene plasseres mellom utsnittene som skal uttales, og ikke rett etter hverandre. Innstillingene gjør det mulig å tilpasse uttalen av navn, forkortelser og tvetydige ord til hensikten med opplesningen.</p><h4>Mottak av lyd</h4><p>Syntesen tar imot tekst med færre enn <strong>10 000 tegn</strong>. For lange tekster på over 3000 tegn anbefaler produsenten strømming; samlet mottak av ferdig lyd er også tilgjengelig. De generelle synteseinnstillingene omfatter MP3, PCM, FLAC, WAV, Opus og G.711 μ-law-varianter, i mono eller stereo; formatene som er tilgjengelige i en konkret forespørsel, bestemmes gjennom Ailoot.</p><p>I dette Ailoot-kortet gjøres tekst om til talelyd. Turbos formål er knyttet til syntesehastigheten, men det gis ikke løfte om en fast svartid; innstillingene som er listet opp, gjenspeiler produsentens funksjoner og gjelder innenfor den tilgjengelige bruksmåten.</p><p>Ytterligere lydinnstillinger omfatter samplingsfrekvensene <strong>8, 16, 22,05, 24, 32 og 44,1 kHz</strong>. For MP3 er bitratene <strong>32, 64, 128 eller 256 kbit/s</strong> tilgjengelige. Stemmeklangen kan også endres, og én effekt kan brukes: romlig ekko, hallekko, telefonlyd eller robotstemme. Stemmeendringseffekter støttes for MP3, WAV og FLAC når lyden mottas samlet, og ved strømming bare for MP3. G.711 μ-law-formatene bruker en samplingsfrekvens på 8 kHz. Disse funksjonene gjelder MiniMax&#39; synteseinnstillinger.</p><p>Produsenten tilbyr synkronisering av tale og tekst: tidsstempler per setning, per ord eller per ord ved gradvise utdata. Et slikt resultat bidrar til å samordne uttalen med visningen av teksten. Denne ekstra funksjonen krever støtte for det aktuelle svarformatet.</p>",
  "aboutText": "### Replikker for talebaserte arbeidsflyter\n\nSpeech 2.6 Turbo er en talesyntesevariant rettet mot hastighet. Produsenten beskriver den for taleassistenter og interaktive situasjoner der teksten gradvis blir til et svar. Modellen beholder de naturlige intonasjonene fra Speech 2.6-generasjonen og kan behandle spesielle skrivemåter.\n\n### Tekst som må uttales riktig\n\nModellen er laget for å lese datoer, telefonnumre, pengebeløp, nettadresser og e-postadresser uten at hver angivelse først må skrives om manuelt. Slik behandling er nyttig i dynamiske meldinger der tall og betegnelser opptrer sammen med vanlige ord. Produsenten beskriver behandling av disse formatene på flere språk.\n\n### Taleflyt og følelsesstyring\n\nSpeech 2.6 støtter Fluent LoRA: bevart, gjenkjennelig stemmeklang med jevnere uttale av teksten. Funksjonen gjelder bruk av en allerede klargjort stemme; separat klargjøring av en klon inngår ikke i en vanlig tekstforespørsel. Familien omfatter **40 språk**, inkludert russisk.\n\nTurbo tilbyr sju grunnleggende følelser og tilleggsmodusene `fluent` og `whisper`. Modellen kan velge følelsesuttrykket selv ut fra innholdet eller bruke en angitt tilstand. Stemmedybde og tempo kan endres uavhengig av teksten.\n\n### Stemme, pauser og uttale\n\nMiniMax tilbyr stemmevalg og styring av tempo, lydstyrke og tonehøyde. Hastigheten angis i området **0,5–2**, lydstyrken over 0 og opptil **10**, og endringen i tonehøyde fra **−12 til 12**. Følelsen kan overlates til modellen ut fra tekstens mening eller angis manuelt: glede, tristhet, sinne, frykt, avsky, overraskelse eller ro.\n\nUttalen kan presiseres med en erstatningsordliste og fonetisk angivelse; det internasjonale fonetiske alfabetet, kinesisk pinyin og japanske uttalevarianter er tilgjengelige. Pauser angis mellom talte utsnitt i området **0,01–99,99 sekunder**. Pauselengden angis med to desimalers nøyaktighet; markørene plasseres mellom utsnittene som skal uttales, og ikke rett etter hverandre. Innstillingene gjør det mulig å tilpasse uttalen av navn, forkortelser og tvetydige ord til hensikten med opplesningen.\n\n### Mottak av lyd\n\nSyntesen tar imot tekst med færre enn **10 000 tegn**. For lange tekster på over 3000 tegn anbefaler produsenten strømming; samlet mottak av ferdig lyd er også tilgjengelig. De generelle synteseinnstillingene omfatter MP3, PCM, FLAC, WAV, Opus og G.711 μ-law-varianter, i mono eller stereo; formatene som er tilgjengelige i en konkret forespørsel, bestemmes gjennom Ailoot.\n\nI dette Ailoot-kortet gjøres tekst om til talelyd. Turbos formål er knyttet til syntesehastigheten, men det gis ikke løfte om en fast svartid; innstillingene som er listet opp, gjenspeiler produsentens funksjoner og gjelder innenfor den tilgjengelige bruksmåten.\n\nYtterligere lydinnstillinger omfatter samplingsfrekvensene **8, 16, 22,05, 24, 32 og 44,1 kHz**. For MP3 er bitratene **32, 64, 128 eller 256 kbit/s** tilgjengelige. Stemmeklangen kan også endres, og én effekt kan brukes: romlig ekko, hallekko, telefonlyd eller robotstemme. Stemmeendringseffekter støttes for MP3, WAV og FLAC når lyden mottas samlet, og ved strømming bare for MP3. G.711 μ-law-formatene bruker en samplingsfrekvens på 8 kHz. Disse funksjonene gjelder MiniMax' synteseinnstillinger.\n\nProdusenten tilbyr synkronisering av tale og tekst: tidsstempler per setning, per ord eller per ord ved gradvise utdata. Et slikt resultat bidrar til å samordne uttalen med visningen av teksten. Denne ekstra funksjonen krever støtte for det aktuelle svarformatet.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "0795443f5a03bf3ed69f3cad9c49e0f78aa0d87c2fa69a6cdaadd63d121d63db",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "nb",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">MM</span><h2 id=\"sheet-title\">speech-2.6-turbo</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Lukk\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>speech-2.6-turbo</code><button type=\"button\" id=\"copy-id\">Kopier ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Seksjoner i modellkortet\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Inndata &amp; metoder</button><button type=\"button\" data-card-jump=\"pricing\">Priser</button><button type=\"button\" data-card-jump=\"examples\">Eksempler</button><button type=\"button\" data-card-jump=\"results\">Resultater</button><button type=\"button\" data-card-jump=\"aliases\">Aliaser</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-metoder\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|speech|/v1/audio/speech|speech-2.6-turbo\">Talesyntese</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\">Start</h3><p class=\"mdesc-full\">Speech 2.6 Turbo syntetiserer tale på flere språk og er rettet mot lav svarforsinkelse.</p><dl class=\"card-io\" data-card-io><div><dt>Godkjente inndata</dt><dd>Tekst</dd></div><div><dt>Resultater</dt><dd>speech</dd></div></dl><details class=\"card-about\"><summary>Om modellen</summary><p class=\"note-s\" data-model-method-boundary>Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.</p><div class=\"mabout\" id=\"m-about\"><h4>Replikker for talebaserte arbeidsflyter</h4><p>Speech 2.6 Turbo er en talesyntesevariant rettet mot hastighet. Produsenten beskriver den for taleassistenter og interaktive situasjoner der teksten gradvis blir til et svar. Modellen beholder de naturlige intonasjonene fra Speech 2.6-generasjonen og kan behandle spesielle skrivemåter.</p><h4>Tekst som må uttales riktig</h4><p>Modellen er laget for å lese datoer, telefonnumre, pengebeløp, nettadresser og e-postadresser uten at hver angivelse først må skrives om manuelt. Slik behandling er nyttig i dynamiske meldinger der tall og betegnelser opptrer sammen med vanlige ord. Produsenten beskriver behandling av disse formatene på flere språk.</p><h4>Taleflyt og følelsesstyring</h4><p>Speech 2.6 støtter Fluent LoRA: bevart, gjenkjennelig stemmeklang med jevnere uttale av teksten. Funksjonen gjelder bruk av en allerede klargjort stemme; separat klargjøring av en klon inngår ikke i en vanlig tekstforespørsel. Familien omfatter <strong>40 språk</strong>, inkludert russisk.</p><p>Turbo tilbyr sju grunnleggende følelser og tilleggsmodusene <code>fluent</code> og <code>whisper</code>. Modellen kan velge følelsesuttrykket selv ut fra innholdet eller bruke en angitt tilstand. Stemmedybde og tempo kan endres uavhengig av teksten.</p><h4>Stemme, pauser og uttale</h4><p>MiniMax tilbyr stemmevalg og styring av tempo, lydstyrke og tonehøyde. Hastigheten angis i området <strong>0,5–2</strong>, lydstyrken over 0 og opptil <strong>10</strong>, og endringen i tonehøyde fra <strong>−12 til 12</strong>. Følelsen kan overlates til modellen ut fra tekstens mening eller angis manuelt: glede, tristhet, sinne, frykt, avsky, overraskelse eller ro.</p><p>Uttalen kan presiseres med en erstatningsordliste og fonetisk angivelse; det internasjonale fonetiske alfabetet, kinesisk pinyin og japanske uttalevarianter er tilgjengelige. Pauser angis mellom talte utsnitt i området <strong>0,01–99,99 sekunder</strong>. Pauselengden angis med to desimalers nøyaktighet; markørene plasseres mellom utsnittene som skal uttales, og ikke rett etter hverandre. Innstillingene gjør det mulig å tilpasse uttalen av navn, forkortelser og tvetydige ord til hensikten med opplesningen.</p><h4>Mottak av lyd</h4><p>Syntesen tar imot tekst med færre enn <strong>10 000 tegn</strong>. For lange tekster på over 3000 tegn anbefaler produsenten strømming; samlet mottak av ferdig lyd er også tilgjengelig. De generelle synteseinnstillingene omfatter MP3, PCM, FLAC, WAV, Opus og G.711 μ-law-varianter, i mono eller stereo; formatene som er tilgjengelige i en konkret forespørsel, bestemmes gjennom Ailoot.</p><p>I dette Ailoot-kortet gjøres tekst om til talelyd. Turbos formål er knyttet til syntesehastigheten, men det gis ikke løfte om en fast svartid; innstillingene som er listet opp, gjenspeiler produsentens funksjoner og gjelder innenfor den tilgjengelige bruksmåten.</p><p>Ytterligere lydinnstillinger omfatter samplingsfrekvensene <strong>8, 16, 22,05, 24, 32 og 44,1 kHz</strong>. For MP3 er bitratene <strong>32, 64, 128 eller 256 kbit/s</strong> tilgjengelige. Stemmeklangen kan også endres, og én effekt kan brukes: romlig ekko, hallekko, telefonlyd eller robotstemme. Stemmeendringseffekter støttes for MP3, WAV og FLAC når lyden mottas samlet, og ved strømming bare for MP3. G.711 μ-law-formatene bruker en samplingsfrekvens på 8 kHz. Disse funksjonene gjelder MiniMax&#39; synteseinnstillinger.</p><p>Produsenten tilbyr synkronisering av tale og tekst: tidsstempler per setning, per ord eller per ord ved gradvise utdata. Et slikt resultat bidrar til å samordne uttalen med visningen av teksten. Denne ekstra funksjonen krever støtte for det aktuelle svarformatet.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tilgjengelig i Ailoot · inndata &amp; metoder</h3><details class=\"card-method\" open><summary><b>Ailoot · Talesyntese</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Inndatatyper</dt><dd><code>text</code></dd></div><div><dt>Utdatatyper</dt><dd><code>speech</code></dd></div><div><dt>Utdataformat</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Felt</th><th>Type</th><th>Krav</th><th>Verdier &amp; grenser</th><th>Standard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrevd</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>speech-2.6-turbo</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrevd</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>Minste lengde: 1</div><div>Maksimal lengde (eksklusive): 10 000</div><div>Enhet: Unicode-tegn</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrevd</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>Mønster: ^[A-Za-z0-9_-]{1,128}$</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Valgfritt</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</span><div>mp3</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinasjoner av inngående materialer</summary><p class=\"note-s\"><b>text_to_speech</b> · Påkrevd: input</p></details><details class=\"note-s\" data-method-contract><summary>Metodeparametere og livssyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Avtale</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Avtale\"><span class=\"card-cell-label\">Avtale</span>text</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Avtale\"><span class=\"card-cell-label\">Avtale</span>null</td></tr></tbody></table></div><p>Livssyklus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · faktisk returnert task_id eller oppføring i mediebiblioteket</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\">Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Priser</h3><h4>Satser for Ailoot-metoder</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Talesyntese</b><code>POST /v1/audio/speech</code></header><dl><div><dt>Inndata</dt><dd>60,00 USD <em>per 1 million tegn</em></dd></div></dl></section><p class=\"note-s\">Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. <a href=\"/docs/nb/billing/reserve/\">Slik fungerer reservasjon og oppgjør →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Eksempelforespørsler</h3><h4>Ailoot · Talesyntese</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><button class=\"cg-tab\" id=\"model-code-470-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-470-panel-0\" aria-selected=\"true\" tabindex=\"0\">Taleeksempel</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopier kode\"><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-470-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-470-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}&quot;\nexport AILOOT_TEXT_FILE\n: &quot;${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}&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;speech-2.6-turbo&quot;, &quot;input&quot;: &quot;&quot;}&#39;)\nf=Path(os.environ[&quot;AILOOT_TEXT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 source material&quot;)\ntext=f.read_text(encoding=&quot;utf-8&quot;)\nif not text.strip():raise SystemExit(&quot;Source material must contain text&quot;)\np[&quot;input&quot;]=text\nimport re\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nif not re.fullmatch(r&quot;[A-Za-z0-9_-]{1,128}&quot;,voice):raise SystemExit(&quot;Set an actual accepted voice ID&quot;)\np[&quot;voice&quot;]=voice\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\">Motta og lagre resultater</h3><h4>Ailoot · Talesyntese</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><div class=\"card-result-process\" data-all-results><h5>Behold alle ferdige resultater</h5><p class=\"note-s\">Behold alle fullstendige returnerte svar, filer og innholdsdeler.</p><p class=\"note-s\">Bevar hele det binære resultatet og svarhodene. Hvis JSON eller flere utdata returneres, bevar hvert dataelement og hent innholdet fra hver faktiske signerte ressurs-URL.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Hvis det opprinnelige svaret må kontrolleres</h5><p class=\"note-s\">Bevar opprinnelig operation_id/X-Client-Request-ID for avstemming uten ny innsending; det finnes ingen egen rute for å spørre etter lydstatus.</p></div><details class=\"card-about\" data-output-fields><summary>Svarfelter</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Felt</th><th>Type</th></tr></thead><tbody><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>bytes</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Feil og neste trinn</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Vilkår</th><th>Neste trinn</th></tr></thead><tbody><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Ugyldige påkrevde felter, materialrepresentasjon eller parameterverdi</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Korriger de angitte feltene før en ny opprettelsesforespørsel.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span><code>server_error</code></th><td data-cell-label=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Det returnerte svaret angir at operasjonen eller resultatet må kontrolleres</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Bevar den opprinnelige returnerte operasjons-/oppgave-ID-en, forespørselshodene og svaret; fortsett å lese den opprinnelige operasjonen på de støttede måtene. Ikke send opprettelsesforespørselen på nytt.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliaser</h3><h4>Modellaliaser</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=speech-2.6-turbo&amp;route=Core&amp;caller=speech-2.6-turbo&amp;fmt=speech\"><code>speech-2.6-turbo</code></a></span></p><h4>Aliaser for metodestier</h4><p class=\"note-s\">Bruk metodestiene som vises ovenfor.</p><h4>Tilknyttede anroper-ID-er</h4><p class=\"note-s\"><a href=\"#m=speech-2.6-turbo&amp;route=Core&amp;caller=speech-2.6-turbo&amp;fmt=speech\"><code>speech-2.6-turbo</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "speech-2.6-turbo",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "speech-2.6-turbo",
        "route_label": "Core"
      },
      "method_key": "Core|speech|/v1/audio/speech|speech-2.6-turbo",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": 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": "Ugyldige påkrevde felter, materialrepresentasjon eller parameterverdi",
                "http_status": 400,
                "recovery": "Korriger de angitte feltene før en ny opprettelsesforespørsel.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Det returnerte svaret angir at operasjonen eller resultatet må kontrolleres",
                "http_status": null,
                "recovery": "Bevar den opprinnelige returnerte operasjons-/oppgave-ID-en, forespørselshodene og svaret; fortsett å lese den opprinnelige operasjonen på de støttede måtene. Ikke send opprettelsesforespørselen på nytt.",
                "type": "server_error"
              }
            ],
            "hints": [
              "MiniMax accepts optionalresponse_formatmp3. Actual voice IDs come from the selected model voice profile.",
              "The facade uses bufferedMP3; provider speed/volume/pitch/sample-rate fields are fixed by the adapter, not callercontrols."
            ],
            "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": "Bevar opprinnelig operation_id/X-Client-Request-ID for avstemming uten ny innsending; det finnes ingen egen rute for å spørre etter lydstatus."
            },
            "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": "Bevar hele det binære resultatet og svarhodene. Hvis JSON eller flere utdata returneres, bevar hvert dataelement og hent innholdet fra hver faktiske signerte ressurs-URL.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "speech-2.6-turbo"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length_exclusive": 10000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "Unicode-tegn"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "voice",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "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": "faktisk returnert task_id eller oppføring i mediebiblioteket",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "operation_modes": [
            "audio_speech"
          ],
          "output": {
            "family": [
              "speech"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}\"\nexport AILOOT_TEXT_FILE\n: \"${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"speech-2.6-turbo\", \"input\": \"\"}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"input\"]=text\nimport re\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nif not re.fullmatch(r\"[A-Za-z0-9_-]{1,128}\",voice):raise SystemExit(\"Set an actual accepted voice ID\")\np[\"voice\"]=voice\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": "Synthesize your actual script",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Talesyntese",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 60,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-2.6-turbo",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "tts_million_chars",
        "units": [
          {
            "key": "tts_million_chars",
            "label": "per 1 million characters",
            "side": "in",
            "usd": 60
          }
        ]
      }
    }
  ],
  "model_id": "speech-2.6-turbo",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "696dac4078e616825c4ac959cfaf61c3b15cf1c72d1297eef73931d3a402b380",
    "input_html_sha256": "3b9bc1d9beeb7f876055ff0168edee6faaa7630833c1c1263e0788e834dba5d5",
    "private_audit_sha256": "8ecb65d22d654ddc4b0ee0472c5dce8a8ab16fca29a9eaff5ad5a0527f60f7d9",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/nb/speech-2-6-turbo/",
    "description": "Speech 2.6 Turbo syntetiserer tale på flere språk og er rettet mot lav svarforsinkelse.",
    "locale": "nb",
    "md_url": "https://ailoot.ai/models/nb/speech-2-6-turbo/index.md",
    "title": "speech-2.6-turbo — Ailoot",
    "url": "https://ailoot.ai/models/nb/speech-2-6-turbo/"
  },
  "rawModel": {
    "about": "### Replikker for talebaserte arbeidsflyter\n\nSpeech 2.6 Turbo er en talesyntesevariant rettet mot hastighet. Produsenten beskriver den for taleassistenter og interaktive situasjoner der teksten gradvis blir til et svar. Modellen beholder de naturlige intonasjonene fra Speech 2.6-generasjonen og kan behandle spesielle skrivemåter.\n\n### Tekst som må uttales riktig\n\nModellen er laget for å lese datoer, telefonnumre, pengebeløp, nettadresser og e-postadresser uten at hver angivelse først må skrives om manuelt. Slik behandling er nyttig i dynamiske meldinger der tall og betegnelser opptrer sammen med vanlige ord. Produsenten beskriver behandling av disse formatene på flere språk.\n\n### Taleflyt og følelsesstyring\n\nSpeech 2.6 støtter Fluent LoRA: bevart, gjenkjennelig stemmeklang med jevnere uttale av teksten. Funksjonen gjelder bruk av en allerede klargjort stemme; separat klargjøring av en klon inngår ikke i en vanlig tekstforespørsel. Familien omfatter **40 språk**, inkludert russisk.\n\nTurbo tilbyr sju grunnleggende følelser og tilleggsmodusene `fluent` og `whisper`. Modellen kan velge følelsesuttrykket selv ut fra innholdet eller bruke en angitt tilstand. Stemmedybde og tempo kan endres uavhengig av teksten.\n\n### Stemme, pauser og uttale\n\nMiniMax tilbyr stemmevalg og styring av tempo, lydstyrke og tonehøyde. Hastigheten angis i området **0,5–2**, lydstyrken over 0 og opptil **10**, og endringen i tonehøyde fra **−12 til 12**. Følelsen kan overlates til modellen ut fra tekstens mening eller angis manuelt: glede, tristhet, sinne, frykt, avsky, overraskelse eller ro.\n\nUttalen kan presiseres med en erstatningsordliste og fonetisk angivelse; det internasjonale fonetiske alfabetet, kinesisk pinyin og japanske uttalevarianter er tilgjengelige. Pauser angis mellom talte utsnitt i området **0,01–99,99 sekunder**. Pauselengden angis med to desimalers nøyaktighet; markørene plasseres mellom utsnittene som skal uttales, og ikke rett etter hverandre. Innstillingene gjør det mulig å tilpasse uttalen av navn, forkortelser og tvetydige ord til hensikten med opplesningen.\n\n### Mottak av lyd\n\nSyntesen tar imot tekst med færre enn **10 000 tegn**. For lange tekster på over 3000 tegn anbefaler produsenten strømming; samlet mottak av ferdig lyd er også tilgjengelig. De generelle synteseinnstillingene omfatter MP3, PCM, FLAC, WAV, Opus og G.711 μ-law-varianter, i mono eller stereo; formatene som er tilgjengelige i en konkret forespørsel, bestemmes gjennom Ailoot.\n\nI dette Ailoot-kortet gjøres tekst om til talelyd. Turbos formål er knyttet til syntesehastigheten, men det gis ikke løfte om en fast svartid; innstillingene som er listet opp, gjenspeiler produsentens funksjoner og gjelder innenfor den tilgjengelige bruksmåten.\n\nYtterligere lydinnstillinger omfatter samplingsfrekvensene **8, 16, 22,05, 24, 32 og 44,1 kHz**. For MP3 er bitratene **32, 64, 128 eller 256 kbit/s** tilgjengelige. Stemmeklangen kan også endres, og én effekt kan brukes: romlig ekko, hallekko, telefonlyd eller robotstemme. Stemmeendringseffekter støttes for MP3, WAV og FLAC når lyden mottas samlet, og ved strømming bare for MP3. G.711 μ-law-formatene bruker en samplingsfrekvens på 8 kHz. Disse funksjonene gjelder MiniMax' synteseinnstillinger.\n\nProdusenten tilbyr synkronisering av tale og tekst: tidsstempler per setning, per ord eller per ord ved gradvise utdata. Et slikt resultat bidrar til å samordne uttalen med visningen av teksten. Denne ekstra funksjonen krever støtte for det aktuelle svarformatet.",
    "alias_of": null,
    "aliases": [],
    "author": "MiniMax",
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "speech-2.6-turbo",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": 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": "Ugyldige påkrevde felter, materialrepresentasjon eller parameterverdi",
                "http_status": 400,
                "recovery": "Korriger de angitte feltene før en ny opprettelsesforespørsel.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Det returnerte svaret angir at operasjonen eller resultatet må kontrolleres",
                "http_status": null,
                "recovery": "Bevar den opprinnelige returnerte operasjons-/oppgave-ID-en, forespørselshodene og svaret; fortsett å lese den opprinnelige operasjonen på de støttede måtene. Ikke send opprettelsesforespørselen på nytt.",
                "type": "server_error"
              }
            ],
            "hints": [
              "MiniMax accepts optionalresponse_formatmp3. Actual voice IDs come from the selected model voice profile.",
              "The facade uses bufferedMP3; provider speed/volume/pitch/sample-rate fields are fixed by the adapter, not callercontrols."
            ],
            "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": "Bevar opprinnelig operation_id/X-Client-Request-ID for avstemming uten ny innsending; det finnes ingen egen rute for å spørre etter lydstatus."
            },
            "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": "Bevar hele det binære resultatet og svarhodene. Hvis JSON eller flere utdata returneres, bevar hvert dataelement og hent innholdet fra hver faktiske signerte ressurs-URL.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "speech-2.6-turbo"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length_exclusive": 10000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "Unicode-tegn"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "voice",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "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": "faktisk returnert task_id eller oppføring i mediebiblioteket",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "operation_modes": [
            "audio_speech"
          ],
          "output": {
            "family": [
              "speech"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}\"\nexport AILOOT_TEXT_FILE\n: \"${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"speech-2.6-turbo\", \"input\": \"\"}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"input\"]=text\nimport re\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nif not re.fullmatch(r\"[A-Za-z0-9_-]{1,128}\",voice):raise SystemExit(\"Set an actual accepted voice ID\")\np[\"voice\"]=voice\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": "Synthesize your actual script",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Talesyntese",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 60,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-2.6-turbo",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "tts_million_chars",
        "units": [
          {
            "key": "tts_million_chars",
            "label": "per 1 million characters",
            "side": "in",
            "usd": 60
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "speech-2.6-turbo",
        "request_model_id": "speech-2.6-turbo",
        "route_label": "Core"
      }
    ],
    "name": "speech-2.6-turbo",
    "price": {
      "in": 60,
      "in_label": "per 1 million characters",
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "Speech 2.6 Turbo syntetiserer tale på flere språk og er rettet mot lav svarforsinkelse."
  },
  "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": "Speech 2.6 Turbo syntetiserer tale på flere språk og er rettet mot lav svarforsinkelse.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "c81d1a2dce2fc6e01cbfd1cc92c7bc59d7b7521104d3ca484d4887c2868028d5",
    "renderer_sha256": "c8cb5a92c10b47373d294dee7465d66796cd4710c6626fd81459dc0625fc6d26"
  },
  "sourceRevision": "b38aa0c84b030ee5605df60812a5abe36aaa3126fbcd2893bf3f9f3dd35a4804"
}
