{
  "aboutHtml": "<h4>Replikker til et stemmeforløb</h4><p>Speech 2.6 Turbo er en hastighedsorienteret talesyntesevariant. Producenten beskriver den til stemmeassistenter og interaktive forløb, hvor tekst løbende bliver til et svar. Modellen bevarer Speech 2.6-generationens naturlige intonationer og behandler særlige skrivemåder.</p><h4>Tekst, der skal udtales korrekt</h4><p>Modellen er beregnet til at læse datoer, telefonnumre, pengebeløb, webadresser og e-mailadresser uden manuel omskrivning af hver oplysning. Det er nyttigt i dynamiske beskeder med tal og betegnelser sammen med almindelige ord. Producenten beskriver behandling af formaterne på flere sprog.</p><h4>Flydende tale og følelsesstyring</h4><p>Speech 2.6 understøtter Fluent LoRA: genkendelig klang bevares, mens teksten udtales mere flydende. Muligheden vedrører en allerede forberedt stemme; særskilt klonforberedelse indgår ikke i en almindelig tekstforespørgsel. Familien omfatter <strong>40 sprog</strong>, herunder russisk.</p><p>Turbo har syv grundfølelser og tilstandene <code>fluent</code> og <code>whisper</code>. Modellen kan vælge følelsesfarvning ud fra indholdet eller bruge en angivet tilstand. Klangens dybde og tempo kan ændres uafhængigt af teksten.</p><h4>Stemme, pauser og udtale</h4><p>MiniMax tilbyder stemmevalg og styring af tempo, lydstyrke og tonehøjde. Hastigheden er <strong>0,5–2</strong>, lydstyrken over 0 og op til <strong>10</strong>, og tonehøjdeændringen fra <strong>−12 til 12</strong>. Følelsen kan vælges af modellen efter teksten eller angives manuelt: glæde, sorg, vrede, frygt, afsky, overraskelse eller ro.</p><p>Udtalen kan præciseres med en erstatningsordbog og fonetisk notation, herunder det internationale fonetiske alfabet, kinesisk pinyin og japanske læsevarianter. Pauser mellem udtalte afsnit er <strong>0,01–99,99 sekunder</strong>. Varigheden angives med to decimalers præcision; markører placeres mellem afsnittene og ikke direkte efter hinanden. Det hjælper med at tilpasse navne, forkortelser og tvetydige ord til oplæsningen.</p><h4>Modtagelse af lyd</h4><p>Syntesen modtager tekst under <strong>10 000 tegn</strong>. Ved over 3000 tegn anbefaler producenten streamingoutput; færdig lyd kan også modtages samlet. De generelle indstillinger omfatter MP3, PCM, FLAC, WAV, Opus og G.711 μ-law-varianter samt mono og stereo; Ailoots funktioner fastlægger formatudvalget for den konkrete forespørgsel.</p><p>Dette Ailoot-kort omsætter tekst til talelyd. Turbos formål vedrører syntesehastighed, men der loves ingen fast svartid her; indstillingerne beskriver producentens muligheder og gælder inden for den tilgængelige adgangsmetode.</p><p>Yderligere lydindstillinger omfatter samplingsfrekvenserne <strong>8, 16, 22,05, 24, 32 og 44,1 kHz</strong>. MP3 tilbyder bitrate <strong>32, 64, 128 eller 256 kbit/s</strong>. Stemmens klang kan ændres, og én effekt bruges: rummeligt ekko, halekko, telefonlyd eller robotstemme. Stemmeeffekter understøttes for MP3, WAV og FLAC ved samlet lydmodtagelse og kun for MP3 ved streaming. G.711 μ-law bruger 8 kHz. Mulighederne vedrører synteseindstillingerne fra MiniMax.</p><p>Producenten tilbyder synkronisering af tale og tekst med tidsstempler for sætninger, ord eller ord under løbende output. Det hjælper med at kombinere udtale og tekstvisning. Denne ekstra mulighed kræver et passende svarformat.</p>",
  "aboutText": "### Replikker til et stemmeforløb\n\nSpeech 2.6 Turbo er en hastighedsorienteret talesyntesevariant. Producenten beskriver den til stemmeassistenter og interaktive forløb, hvor tekst løbende bliver til et svar. Modellen bevarer Speech 2.6-generationens naturlige intonationer og behandler særlige skrivemåder.\n\n### Tekst, der skal udtales korrekt\n\nModellen er beregnet til at læse datoer, telefonnumre, pengebeløb, webadresser og e-mailadresser uden manuel omskrivning af hver oplysning. Det er nyttigt i dynamiske beskeder med tal og betegnelser sammen med almindelige ord. Producenten beskriver behandling af formaterne på flere sprog.\n\n### Flydende tale og følelsesstyring\n\nSpeech 2.6 understøtter Fluent LoRA: genkendelig klang bevares, mens teksten udtales mere flydende. Muligheden vedrører en allerede forberedt stemme; særskilt klonforberedelse indgår ikke i en almindelig tekstforespørgsel. Familien omfatter **40 sprog**, herunder russisk.\n\nTurbo har syv grundfølelser og tilstandene `fluent` og `whisper`. Modellen kan vælge følelsesfarvning ud fra indholdet eller bruge en angivet tilstand. Klangens dybde og tempo kan ændres uafhængigt af teksten.\n\n### Stemme, pauser og udtale\n\nMiniMax tilbyder stemmevalg og styring af tempo, lydstyrke og tonehøjde. Hastigheden er **0,5–2**, lydstyrken over 0 og op til **10**, og tonehøjdeændringen fra **−12 til 12**. Følelsen kan vælges af modellen efter teksten eller angives manuelt: glæde, sorg, vrede, frygt, afsky, overraskelse eller ro.\n\nUdtalen kan præciseres med en erstatningsordbog og fonetisk notation, herunder det internationale fonetiske alfabet, kinesisk pinyin og japanske læsevarianter. Pauser mellem udtalte afsnit er **0,01–99,99 sekunder**. Varigheden angives med to decimalers præcision; markører placeres mellem afsnittene og ikke direkte efter hinanden. Det hjælper med at tilpasse navne, forkortelser og tvetydige ord til oplæsningen.\n\n### Modtagelse af lyd\n\nSyntesen modtager tekst under **10 000 tegn**. Ved over 3000 tegn anbefaler producenten streamingoutput; færdig lyd kan også modtages samlet. De generelle indstillinger omfatter MP3, PCM, FLAC, WAV, Opus og G.711 μ-law-varianter samt mono og stereo; Ailoots funktioner fastlægger formatudvalget for den konkrete forespørgsel.\n\nDette Ailoot-kort omsætter tekst til talelyd. Turbos formål vedrører syntesehastighed, men der loves ingen fast svartid her; indstillingerne beskriver producentens muligheder og gælder inden for den tilgængelige adgangsmetode.\n\nYderligere lydindstillinger omfatter samplingsfrekvenserne **8, 16, 22,05, 24, 32 og 44,1 kHz**. MP3 tilbyder bitrate **32, 64, 128 eller 256 kbit/s**. Stemmens klang kan ændres, og én effekt bruges: rummeligt ekko, halekko, telefonlyd eller robotstemme. Stemmeeffekter understøttes for MP3, WAV og FLAC ved samlet lydmodtagelse og kun for MP3 ved streaming. G.711 μ-law bruger 8 kHz. Mulighederne vedrører synteseindstillingerne fra MiniMax.\n\nProducenten tilbyder synkronisering af tale og tekst med tidsstempler for sætninger, ord eller ord under løbende output. Det hjælper med at kombinere udtale og tekstvisning. Denne ekstra mulighed kræver et passende svarformat.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "51f3f61ebfc7e8526cb434f757e8dee2f026fecb0d9facbfadeb34c470301590",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "da",
  "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=\"Luk\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>speech-2.6-turbo</code><button type=\"button\" id=\"copy-id\">Kopiér ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modelkortets afsnit\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Input og 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\">Oplæsning</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 flersproget tale med fokus på kort svartid.</p><dl class=\"card-io\" data-card-io><div><dt>Accepterede input</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 beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.</p><div class=\"mabout\" id=\"m-about\"><h4>Replikker til et stemmeforløb</h4><p>Speech 2.6 Turbo er en hastighedsorienteret talesyntesevariant. Producenten beskriver den til stemmeassistenter og interaktive forløb, hvor tekst løbende bliver til et svar. Modellen bevarer Speech 2.6-generationens naturlige intonationer og behandler særlige skrivemåder.</p><h4>Tekst, der skal udtales korrekt</h4><p>Modellen er beregnet til at læse datoer, telefonnumre, pengebeløb, webadresser og e-mailadresser uden manuel omskrivning af hver oplysning. Det er nyttigt i dynamiske beskeder med tal og betegnelser sammen med almindelige ord. Producenten beskriver behandling af formaterne på flere sprog.</p><h4>Flydende tale og følelsesstyring</h4><p>Speech 2.6 understøtter Fluent LoRA: genkendelig klang bevares, mens teksten udtales mere flydende. Muligheden vedrører en allerede forberedt stemme; særskilt klonforberedelse indgår ikke i en almindelig tekstforespørgsel. Familien omfatter <strong>40 sprog</strong>, herunder russisk.</p><p>Turbo har syv grundfølelser og tilstandene <code>fluent</code> og <code>whisper</code>. Modellen kan vælge følelsesfarvning ud fra indholdet eller bruge en angivet tilstand. Klangens dybde og tempo kan ændres uafhængigt af teksten.</p><h4>Stemme, pauser og udtale</h4><p>MiniMax tilbyder stemmevalg og styring af tempo, lydstyrke og tonehøjde. Hastigheden er <strong>0,5–2</strong>, lydstyrken over 0 og op til <strong>10</strong>, og tonehøjdeændringen fra <strong>−12 til 12</strong>. Følelsen kan vælges af modellen efter teksten eller angives manuelt: glæde, sorg, vrede, frygt, afsky, overraskelse eller ro.</p><p>Udtalen kan præciseres med en erstatningsordbog og fonetisk notation, herunder det internationale fonetiske alfabet, kinesisk pinyin og japanske læsevarianter. Pauser mellem udtalte afsnit er <strong>0,01–99,99 sekunder</strong>. Varigheden angives med to decimalers præcision; markører placeres mellem afsnittene og ikke direkte efter hinanden. Det hjælper med at tilpasse navne, forkortelser og tvetydige ord til oplæsningen.</p><h4>Modtagelse af lyd</h4><p>Syntesen modtager tekst under <strong>10 000 tegn</strong>. Ved over 3000 tegn anbefaler producenten streamingoutput; færdig lyd kan også modtages samlet. De generelle indstillinger omfatter MP3, PCM, FLAC, WAV, Opus og G.711 μ-law-varianter samt mono og stereo; Ailoots funktioner fastlægger formatudvalget for den konkrete forespørgsel.</p><p>Dette Ailoot-kort omsætter tekst til talelyd. Turbos formål vedrører syntesehastighed, men der loves ingen fast svartid her; indstillingerne beskriver producentens muligheder og gælder inden for den tilgængelige adgangsmetode.</p><p>Yderligere lydindstillinger omfatter samplingsfrekvenserne <strong>8, 16, 22,05, 24, 32 og 44,1 kHz</strong>. MP3 tilbyder bitrate <strong>32, 64, 128 eller 256 kbit/s</strong>. Stemmens klang kan ændres, og én effekt bruges: rummeligt ekko, halekko, telefonlyd eller robotstemme. Stemmeeffekter understøttes for MP3, WAV og FLAC ved samlet lydmodtagelse og kun for MP3 ved streaming. G.711 μ-law bruger 8 kHz. Mulighederne vedrører synteseindstillingerne fra MiniMax.</p><p>Producenten tilbyder synkronisering af tale og tekst med tidsstempler for sætninger, ord eller ord under løbende output. Det hjælper med at kombinere udtale og tekstvisning. Denne ekstra mulighed kræver et passende svarformat.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tilgængelig i Ailoot · input og metoder</h3><details class=\"card-method\" open><summary><b>Ailoot · Oplæsning</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Inputtyper</dt><dd><code>text</code></dd></div><div><dt>Outputtyper</dt><dd><code>speech</code></dd></div><div><dt>Outputformat</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>Værdier og grænser</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åkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</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åkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>Minimumslængde: 1</div><div>Maksimal længde (eksklusiv): 10.000</div><div>Enhed: 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åkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</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>Valgfrit</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</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>Kombinationer af inputmaterialer</summary><p class=\"note-s\"><b>text_to_speech</b> · Påkrævet: input</p></details><details class=\"note-s\" data-method-contract><summary>Metodeparametre og livscyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>null</td></tr></tbody></table></div><p>Livscyklus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · det faktisk returnerede task_id eller posten 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\">Metodernes strukturer og ID’er er præcise; leverandørens muligheder er adskilt fra adgangstilladelse.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Priser</h3><h4>Ailoot-metodetakster</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Oplæsning</b><code>POST /v1/audio/speech</code></header><dl><div><dt>Input</dt><dd>60,00 US$ <em>pr. 1 million tegn</em></dd></div></dl></section><p class=\"note-s\">Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. <a href=\"/docs/da/billing/reserve/\">Sådan fungerer reservation og afregning →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Eksempelanmodninger</h3><h4>Ailoot · Oplæsning</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=\"Kopiér 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\">Hent og gem resultater</h3><h4>Ailoot · Oplæsning</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 færdige resultater</h5><p class=\"note-s\">Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.</p><p class=\"note-s\">Gem hele det binære resultat og alle headere. Hvis der returneres JSON eller flere output, skal du gemme hvert dataelement og hente alle de faktiske signerede asset-URL&#39;er.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Hvis det oprindelige svar skal kontrolleres</h5><p class=\"note-s\">Gem det oprindelige operation_id/X-Client-Request-ID til afstemning uden genindsendelse; der er ingen særskilt rute til polling af lyd.</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>Fejl og næste trin</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Betingelse</th><th>Næste trin</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=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Ugyldige obligatoriske felter, materialerepræsentation eller parameterværdi</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Ret de angivne felter før en ny oprettelsesanmodning.</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=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Det returnerede svar angiver, at operationen eller resultatet skal kontrolleres</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Gem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliaser</h3><h4>Modelaliaser</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\">Brug metodestierne vist ovenfor.</p><h4>Relaterede kalder-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 obligatoriske felter, materialerepræsentation eller parameterværdi",
                "http_status": 400,
                "recovery": "Ret de angivne felter før en ny oprettelsesanmodning.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Det returnerede svar angiver, at operationen eller resultatet skal kontrolleres",
                "http_status": null,
                "recovery": "Gem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen.",
                "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": "Gem det oprindelige operation_id/X-Client-Request-ID til afstemning uden genindsendelse; der er ingen særskilt rute til polling af lyd."
            },
            "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": "Gem hele det binære resultat og alle headere. Hvis der returneres JSON eller flere output, skal du gemme hvert dataelement og hente alle de faktiske signerede asset-URL'er.",
              "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": [
            "Metodernes strukturer og ID’er er præcise; leverandørens muligheder er adskilt fra adgangstilladelse."
          ],
          "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": "det faktisk returnerede task_id eller posten 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": "Oplæsning",
        "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": "4e7cbb6d4bcf0ef003f7c911b49d57cc0c2b4f9e26753fcebbfd4af63683e826",
    "input_html_sha256": "e614505a9f9490662df052302e8b14aa6a9d5fcf937e488b4116499990da95dd",
    "private_audit_sha256": "422a9549a68307f874bcbd23d1b2e6ddfd7246cdd8e6f67c95b3a23d1beedd52",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/da/speech-2-6-turbo/",
    "description": "Speech 2.6 Turbo syntetiserer flersproget tale med fokus på kort svartid.",
    "locale": "da",
    "md_url": "https://ailoot.ai/models/da/speech-2-6-turbo/index.md",
    "title": "speech-2.6-turbo — Ailoot",
    "url": "https://ailoot.ai/models/da/speech-2-6-turbo/"
  },
  "rawModel": {
    "about": "### Replikker til et stemmeforløb\n\nSpeech 2.6 Turbo er en hastighedsorienteret talesyntesevariant. Producenten beskriver den til stemmeassistenter og interaktive forløb, hvor tekst løbende bliver til et svar. Modellen bevarer Speech 2.6-generationens naturlige intonationer og behandler særlige skrivemåder.\n\n### Tekst, der skal udtales korrekt\n\nModellen er beregnet til at læse datoer, telefonnumre, pengebeløb, webadresser og e-mailadresser uden manuel omskrivning af hver oplysning. Det er nyttigt i dynamiske beskeder med tal og betegnelser sammen med almindelige ord. Producenten beskriver behandling af formaterne på flere sprog.\n\n### Flydende tale og følelsesstyring\n\nSpeech 2.6 understøtter Fluent LoRA: genkendelig klang bevares, mens teksten udtales mere flydende. Muligheden vedrører en allerede forberedt stemme; særskilt klonforberedelse indgår ikke i en almindelig tekstforespørgsel. Familien omfatter **40 sprog**, herunder russisk.\n\nTurbo har syv grundfølelser og tilstandene `fluent` og `whisper`. Modellen kan vælge følelsesfarvning ud fra indholdet eller bruge en angivet tilstand. Klangens dybde og tempo kan ændres uafhængigt af teksten.\n\n### Stemme, pauser og udtale\n\nMiniMax tilbyder stemmevalg og styring af tempo, lydstyrke og tonehøjde. Hastigheden er **0,5–2**, lydstyrken over 0 og op til **10**, og tonehøjdeændringen fra **−12 til 12**. Følelsen kan vælges af modellen efter teksten eller angives manuelt: glæde, sorg, vrede, frygt, afsky, overraskelse eller ro.\n\nUdtalen kan præciseres med en erstatningsordbog og fonetisk notation, herunder det internationale fonetiske alfabet, kinesisk pinyin og japanske læsevarianter. Pauser mellem udtalte afsnit er **0,01–99,99 sekunder**. Varigheden angives med to decimalers præcision; markører placeres mellem afsnittene og ikke direkte efter hinanden. Det hjælper med at tilpasse navne, forkortelser og tvetydige ord til oplæsningen.\n\n### Modtagelse af lyd\n\nSyntesen modtager tekst under **10 000 tegn**. Ved over 3000 tegn anbefaler producenten streamingoutput; færdig lyd kan også modtages samlet. De generelle indstillinger omfatter MP3, PCM, FLAC, WAV, Opus og G.711 μ-law-varianter samt mono og stereo; Ailoots funktioner fastlægger formatudvalget for den konkrete forespørgsel.\n\nDette Ailoot-kort omsætter tekst til talelyd. Turbos formål vedrører syntesehastighed, men der loves ingen fast svartid her; indstillingerne beskriver producentens muligheder og gælder inden for den tilgængelige adgangsmetode.\n\nYderligere lydindstillinger omfatter samplingsfrekvenserne **8, 16, 22,05, 24, 32 og 44,1 kHz**. MP3 tilbyder bitrate **32, 64, 128 eller 256 kbit/s**. Stemmens klang kan ændres, og én effekt bruges: rummeligt ekko, halekko, telefonlyd eller robotstemme. Stemmeeffekter understøttes for MP3, WAV og FLAC ved samlet lydmodtagelse og kun for MP3 ved streaming. G.711 μ-law bruger 8 kHz. Mulighederne vedrører synteseindstillingerne fra MiniMax.\n\nProducenten tilbyder synkronisering af tale og tekst med tidsstempler for sætninger, ord eller ord under løbende output. Det hjælper med at kombinere udtale og tekstvisning. Denne ekstra mulighed kræver et passende svarformat.",
    "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 obligatoriske felter, materialerepræsentation eller parameterværdi",
                "http_status": 400,
                "recovery": "Ret de angivne felter før en ny oprettelsesanmodning.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Det returnerede svar angiver, at operationen eller resultatet skal kontrolleres",
                "http_status": null,
                "recovery": "Gem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen.",
                "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": "Gem det oprindelige operation_id/X-Client-Request-ID til afstemning uden genindsendelse; der er ingen særskilt rute til polling af lyd."
            },
            "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": "Gem hele det binære resultat og alle headere. Hvis der returneres JSON eller flere output, skal du gemme hvert dataelement og hente alle de faktiske signerede asset-URL'er.",
              "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": [
            "Metodernes strukturer og ID’er er præcise; leverandørens muligheder er adskilt fra adgangstilladelse."
          ],
          "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": "det faktisk returnerede task_id eller posten 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": "Oplæsning",
        "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 flersproget tale med fokus på kort svartid."
  },
  "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 flersproget tale med fokus på kort svartid.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "5376e7803a49a00a1a459be4cb09fe7b4a576d59c089a53e22b48046d621200c",
    "renderer_sha256": "2bf9f26ea9bfd57ed53d867671d8f05b41a6ea85089f48039e3365dc2b92ec2c"
  },
  "sourceRevision": "c4895e25c74a27b8b5508a1ee29edb6425cfec76da8ade84bddea48176d64cca"
}
