{
  "aboutHtml": "<h4>Een natuurlijke stem voor interactie</h4><p>Speech 2.6 HD is bedoeld voor natuurlijke spraaksynthese en toepassingen waarin het antwoord snel moet beginnen. De fabrikant besteedt aandacht aan intonatie, vloeiende spraak en tekstverwerking vóór het uitspreken. De HD-variant legt de nadruk op geluidskwaliteit; deze kaart heeft tekst als invoer en spraakaudio als uitvoer.</p><h4>Bijzondere notaties voorlezen</h4><p>De Speech 2.6-generatie kan notaties verwerken die vaak in werkberichten voorkomen: webadressen, e-mailadressen, telefoonnummers, datums en bedragen. Het model zet ze om in een uitspreekbare vorm, zodat de uitspraak goed te begrijpen blijft. De fabrikant beschrijft deze taken in meerdere talen.</p><h4>Vloeiende spraak met behoud van timbre</h4><p>Speech 2.6 biedt Fluent LoRA om de vloeiendheid te verbeteren. Dit is bedoeld voor synthese op basis van een voorbereide stem: het helpt het timbre te behouden en tegelijk samenhangender spraak te maken, ook als het oorspronkelijke voorbeeld onregelmatig was of een accent bevatte. Het voorbereiden van een gekloonde stem en het gebruiken ervan bij het uitspreken zijn verschillende handelingen.</p><p><strong>40 talen</strong>, waaronder Russisch, worden ondersteund. Naast zeven basisemoties biedt Speech 2.6 de vloeiende-spraakvariant <code>fluent</code> en fluisteren met <code>whisper</code>. Als geen emotie is opgegeven, kiest het model die op basis van de tekstbetekenis.</p><h4>Uitspraakinstellingen</h4><p>MiniMax voorziet in stemkeuze en sturing van tempo, volume en toonhoogte. De snelheid wordt ingesteld binnen <strong>0,5–2</strong>, het volume boven 0 tot <strong>10</strong> en de toonhoogtewijziging van <strong>−12 tot 12</strong>. De emotie kan aan het model worden overgelaten op basis van de tekstbetekenis of handmatig worden opgegeven: vreugde, verdriet, boosheid, angst, afkeer, verrassing of kalmte.</p><p>De uitspraak kan worden verfijnd met een vervangingswoordenboek en fonetische notatie; het internationaal fonetisch alfabet, Chinese pinyin en Japanse leesvarianten zijn voorzien. Pauzes worden tussen uitgesproken fragmenten ingesteld binnen <strong>0,01–99,99 seconden</strong>. De pauzeduur wordt met een nauwkeurigheid van twee cijfers achter de komma opgegeven; markeringen worden tussen uitgesproken fragmenten geplaatst en niet direct achter elkaar. Met deze instellingen kan de klank van namen, afkortingen en dubbelzinnige woorden op de bedoeling van de gesproken tekst worden afgestemd.</p><h4>Tekstlengte en audio</h4><p>Synthese accepteert tekst van minder dan <strong>10 000 tekens</strong>. Voor lange tekst van meer dan 3000 tekens beveelt de fabrikant streaminguitvoer aan; ook het ontvangen van volledige audio is voorzien. Algemene synthese-instellingen omvatten MP3, PCM, FLAC, WAV, Opus en G.711 μ-law-varianten, mono of stereo; de beschikbare formaten van een specifiek verzoek worden met de mogelijkheden van Ailoot bepaald.</p><p>Volgens MiniMax is deze generatie gericht op lage latentie in spraakscenario&#39;s. Dit is een modelbeschrijving; de feitelijke antwoordtijd en beschikbaarheid van uitgebreide instellingen hangen af van de gekozen aanroepwijze in Ailoot.</p><p>Aanvullende audio-instellingen omvatten de samplefrequenties <strong>8, 16, 22,05, 24, 32 en 44,1 kHz</strong>. Voor MP3 zijn de bitrates <strong>32, 64, 128 of 256 kbit/s</strong> voorzien. Ook kan de klankkleur van de stem worden gewijzigd en één effect worden toegepast: een ruimtelijke echo, zaalecho, telefoongeluid of robotstem. Stemveranderingseffecten worden bij volledige audio-uitvoer ondersteund voor MP3, WAV en FLAC; bij streaminguitvoer alleen voor MP3. G.711 μ-law-formaten gebruiken een frequentie van 8 kHz. Deze mogelijkheden horen bij de synthese-instellingen van MiniMax.</p><p>De fabrikant voorziet in synchronisatie van spraak met tekst: tijdstempels per zin, per woord of per woord bij geleidelijke uitvoer. Dit resultaat helpt de uitspraak te koppelen aan de tekstweergave. Deze aanvullende mogelijkheid vereist ondersteuning voor het betreffende antwoordformaat.</p>",
  "aboutText": "### Een natuurlijke stem voor interactie\n\nSpeech 2.6 HD is bedoeld voor natuurlijke spraaksynthese en toepassingen waarin het antwoord snel moet beginnen. De fabrikant besteedt aandacht aan intonatie, vloeiende spraak en tekstverwerking vóór het uitspreken. De HD-variant legt de nadruk op geluidskwaliteit; deze kaart heeft tekst als invoer en spraakaudio als uitvoer.\n\n### Bijzondere notaties voorlezen\n\nDe Speech 2.6-generatie kan notaties verwerken die vaak in werkberichten voorkomen: webadressen, e-mailadressen, telefoonnummers, datums en bedragen. Het model zet ze om in een uitspreekbare vorm, zodat de uitspraak goed te begrijpen blijft. De fabrikant beschrijft deze taken in meerdere talen.\n\n### Vloeiende spraak met behoud van timbre\n\nSpeech 2.6 biedt Fluent LoRA om de vloeiendheid te verbeteren. Dit is bedoeld voor synthese op basis van een voorbereide stem: het helpt het timbre te behouden en tegelijk samenhangender spraak te maken, ook als het oorspronkelijke voorbeeld onregelmatig was of een accent bevatte. Het voorbereiden van een gekloonde stem en het gebruiken ervan bij het uitspreken zijn verschillende handelingen.\n\n**40 talen**, waaronder Russisch, worden ondersteund. Naast zeven basisemoties biedt Speech 2.6 de vloeiende-spraakvariant `fluent` en fluisteren met `whisper`. Als geen emotie is opgegeven, kiest het model die op basis van de tekstbetekenis.\n\n### Uitspraakinstellingen\n\nMiniMax voorziet in stemkeuze en sturing van tempo, volume en toonhoogte. De snelheid wordt ingesteld binnen **0,5–2**, het volume boven 0 tot **10** en de toonhoogtewijziging van **−12 tot 12**. De emotie kan aan het model worden overgelaten op basis van de tekstbetekenis of handmatig worden opgegeven: vreugde, verdriet, boosheid, angst, afkeer, verrassing of kalmte.\n\nDe uitspraak kan worden verfijnd met een vervangingswoordenboek en fonetische notatie; het internationaal fonetisch alfabet, Chinese pinyin en Japanse leesvarianten zijn voorzien. Pauzes worden tussen uitgesproken fragmenten ingesteld binnen **0,01–99,99 seconden**. De pauzeduur wordt met een nauwkeurigheid van twee cijfers achter de komma opgegeven; markeringen worden tussen uitgesproken fragmenten geplaatst en niet direct achter elkaar. Met deze instellingen kan de klank van namen, afkortingen en dubbelzinnige woorden op de bedoeling van de gesproken tekst worden afgestemd.\n\n### Tekstlengte en audio\n\nSynthese accepteert tekst van minder dan **10 000 tekens**. Voor lange tekst van meer dan 3000 tekens beveelt de fabrikant streaminguitvoer aan; ook het ontvangen van volledige audio is voorzien. Algemene synthese-instellingen omvatten MP3, PCM, FLAC, WAV, Opus en G.711 μ-law-varianten, mono of stereo; de beschikbare formaten van een specifiek verzoek worden met de mogelijkheden van Ailoot bepaald.\n\nVolgens MiniMax is deze generatie gericht op lage latentie in spraakscenario's. Dit is een modelbeschrijving; de feitelijke antwoordtijd en beschikbaarheid van uitgebreide instellingen hangen af van de gekozen aanroepwijze in Ailoot.\n\nAanvullende audio-instellingen omvatten de samplefrequenties **8, 16, 22,05, 24, 32 en 44,1 kHz**. Voor MP3 zijn de bitrates **32, 64, 128 of 256 kbit/s** voorzien. Ook kan de klankkleur van de stem worden gewijzigd en één effect worden toegepast: een ruimtelijke echo, zaalecho, telefoongeluid of robotstem. Stemveranderingseffecten worden bij volledige audio-uitvoer ondersteund voor MP3, WAV en FLAC; bij streaminguitvoer alleen voor MP3. G.711 μ-law-formaten gebruiken een frequentie van 8 kHz. Deze mogelijkheden horen bij de synthese-instellingen van MiniMax.\n\nDe fabrikant voorziet in synchronisatie van spraak met tekst: tijdstempels per zin, per woord of per woord bij geleidelijke uitvoer. Dit resultaat helpt de uitspraak te koppelen aan de tekstweergave. Deze aanvullende mogelijkheid vereist ondersteuning voor het betreffende antwoordformaat.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "f3542cb7f36eb2a24ce5e746a064e99d31664656c69e8b78f4b1745c436c82a9",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "nl",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">MM</span><h2 id=\"sheet-title\">speech-2.6-hd</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sluiten\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>speech-2.6-hd</code><button type=\"button\" id=\"copy-id\">ID kopiëren</button></div><nav class=\"card-jump-nav\" aria-label=\"Onderdelen van de modelkaart\"><button type=\"button\" data-card-jump=\"overview\">Aan de slag</button><button type=\"button\" data-card-jump=\"methods\">Invoer en methoden</button><button type=\"button\" data-card-jump=\"pricing\">Tarieven</button><button type=\"button\" data-card-jump=\"examples\">Voorbeelden</button><button type=\"button\" data-card-jump=\"results\">Resultaten</button><button type=\"button\" data-card-jump=\"aliases\">Aliasnamen</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-methoden\"><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-hd\">Spraakgeneratie</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\">Aan de slag</h3><p class=\"mdesc-full\">Speech 2.6 HD is een model voor hoogwaardige spraaksynthese, met de nadruk op natuurlijkheid en stemgelijkenis.</p><dl class=\"card-io\" data-card-io><div><dt>Toegestane invoer</dt><dd>Tekst</dd></div><div><dt>Resultaten</dt><dd>speech</dd></div></dl><details class=\"card-about\"><summary>Over het model</summary><p class=\"note-s\" data-model-method-boundary>Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.</p><div class=\"mabout\" id=\"m-about\"><h4>Een natuurlijke stem voor interactie</h4><p>Speech 2.6 HD is bedoeld voor natuurlijke spraaksynthese en toepassingen waarin het antwoord snel moet beginnen. De fabrikant besteedt aandacht aan intonatie, vloeiende spraak en tekstverwerking vóór het uitspreken. De HD-variant legt de nadruk op geluidskwaliteit; deze kaart heeft tekst als invoer en spraakaudio als uitvoer.</p><h4>Bijzondere notaties voorlezen</h4><p>De Speech 2.6-generatie kan notaties verwerken die vaak in werkberichten voorkomen: webadressen, e-mailadressen, telefoonnummers, datums en bedragen. Het model zet ze om in een uitspreekbare vorm, zodat de uitspraak goed te begrijpen blijft. De fabrikant beschrijft deze taken in meerdere talen.</p><h4>Vloeiende spraak met behoud van timbre</h4><p>Speech 2.6 biedt Fluent LoRA om de vloeiendheid te verbeteren. Dit is bedoeld voor synthese op basis van een voorbereide stem: het helpt het timbre te behouden en tegelijk samenhangender spraak te maken, ook als het oorspronkelijke voorbeeld onregelmatig was of een accent bevatte. Het voorbereiden van een gekloonde stem en het gebruiken ervan bij het uitspreken zijn verschillende handelingen.</p><p><strong>40 talen</strong>, waaronder Russisch, worden ondersteund. Naast zeven basisemoties biedt Speech 2.6 de vloeiende-spraakvariant <code>fluent</code> en fluisteren met <code>whisper</code>. Als geen emotie is opgegeven, kiest het model die op basis van de tekstbetekenis.</p><h4>Uitspraakinstellingen</h4><p>MiniMax voorziet in stemkeuze en sturing van tempo, volume en toonhoogte. De snelheid wordt ingesteld binnen <strong>0,5–2</strong>, het volume boven 0 tot <strong>10</strong> en de toonhoogtewijziging van <strong>−12 tot 12</strong>. De emotie kan aan het model worden overgelaten op basis van de tekstbetekenis of handmatig worden opgegeven: vreugde, verdriet, boosheid, angst, afkeer, verrassing of kalmte.</p><p>De uitspraak kan worden verfijnd met een vervangingswoordenboek en fonetische notatie; het internationaal fonetisch alfabet, Chinese pinyin en Japanse leesvarianten zijn voorzien. Pauzes worden tussen uitgesproken fragmenten ingesteld binnen <strong>0,01–99,99 seconden</strong>. De pauzeduur wordt met een nauwkeurigheid van twee cijfers achter de komma opgegeven; markeringen worden tussen uitgesproken fragmenten geplaatst en niet direct achter elkaar. Met deze instellingen kan de klank van namen, afkortingen en dubbelzinnige woorden op de bedoeling van de gesproken tekst worden afgestemd.</p><h4>Tekstlengte en audio</h4><p>Synthese accepteert tekst van minder dan <strong>10 000 tekens</strong>. Voor lange tekst van meer dan 3000 tekens beveelt de fabrikant streaminguitvoer aan; ook het ontvangen van volledige audio is voorzien. Algemene synthese-instellingen omvatten MP3, PCM, FLAC, WAV, Opus en G.711 μ-law-varianten, mono of stereo; de beschikbare formaten van een specifiek verzoek worden met de mogelijkheden van Ailoot bepaald.</p><p>Volgens MiniMax is deze generatie gericht op lage latentie in spraakscenario&#39;s. Dit is een modelbeschrijving; de feitelijke antwoordtijd en beschikbaarheid van uitgebreide instellingen hangen af van de gekozen aanroepwijze in Ailoot.</p><p>Aanvullende audio-instellingen omvatten de samplefrequenties <strong>8, 16, 22,05, 24, 32 en 44,1 kHz</strong>. Voor MP3 zijn de bitrates <strong>32, 64, 128 of 256 kbit/s</strong> voorzien. Ook kan de klankkleur van de stem worden gewijzigd en één effect worden toegepast: een ruimtelijke echo, zaalecho, telefoongeluid of robotstem. Stemveranderingseffecten worden bij volledige audio-uitvoer ondersteund voor MP3, WAV en FLAC; bij streaminguitvoer alleen voor MP3. G.711 μ-law-formaten gebruiken een frequentie van 8 kHz. Deze mogelijkheden horen bij de synthese-instellingen van MiniMax.</p><p>De fabrikant voorziet in synchronisatie van spraak met tekst: tijdstempels per zin, per woord of per woord bij geleidelijke uitvoer. Dit resultaat helpt de uitspraak te koppelen aan de tekstweergave. Deze aanvullende mogelijkheid vereist ondersteuning voor het betreffende antwoordformaat.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Beschikbaar in Ailoot · invoer en methoden</h3><details class=\"card-method\" open><summary><b>Ailoot · Spraakgeneratie</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Invoertypen</dt><dd><code>text</code></dd></div><div><dt>Uitvoertypen</dt><dd><code>speech</code></dd></div><div><dt>Uitvoerformaat</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Veld</th><th>Type</th><th>Vereiste</th><th>Waarden en limieten</th><th>Standaard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>speech-2.6-hd</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Minimumlengte: 1</div><div>Maximumlengte (exclusief): 10.000</div><div>Eenheid: Unicode-tekens</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>Patroon: ^[A-Za-z0-9_-]{1,128}$</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Optioneel</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>mp3</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinaties van invoermaterialen</summary><p class=\"note-s\"><b>text_to_speech</b> · Vereist: input</p></details><details class=\"note-s\" data-method-contract><summary>Methodeparameters en levenscyclus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</span>null</td></tr></tbody></table></div><p>Levenscyclus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · de daadwerkelijk geretourneerde task_id of het record in de mediabibliotheek</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\">De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarieven</h3><h4>Ailoot-methodetarieven</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Spraakgeneratie</b><code>POST /v1/audio/speech</code></header><dl><div><dt>Invoer</dt><dd>US$ 100,00 <em>per 1 miljoen tekens</em></dd></div></dl></section><p class=\"note-s\">Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. <a href=\"/docs/nl/billing/reserve/\">Zo werken reservering en afrekening →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Voorbeeldverzoeken</h3><h4>Ailoot · Spraakgeneratie</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-469-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-469-panel-0\" aria-selected=\"true\" tabindex=\"0\">Spraakvoorbeeld</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopiëren\"><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-469-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-469-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-hd&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\">Resultaten ophalen en opslaan</h3><h4>Ailoot · Spraakgeneratie</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>Alle voltooide resultaten bewaren</h5><p class=\"note-s\">Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.</p><p class=\"note-s\">Bewaar het volledige binaire resultaat en de headers. Als JSON/meerdere uitvoerresultaten worden geretourneerd, bewaar dan elk data-item en haal elk bestand op via de daadwerkelijk geretourneerde ondertekende asset-URL.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Als het oorspronkelijke antwoord moet worden gecontroleerd</h5><p class=\"note-s\">Bewaar de oorspronkelijke operation_id/X-Client-Request-ID voor reconciliatie zonder opnieuw in te dienen; er is geen aparte route om de audiostatus op te vragen.</p></div><details class=\"card-about\" data-output-fields><summary>Antwoordvelden</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Veld</th><th>Type</th></tr></thead><tbody><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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>Fouten en vervolgstappen</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Antwoord</th><th>Voorwaarde</th><th>Volgende stap</th></tr></thead><tbody><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Verplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Corrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span><code>server_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Het geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerd</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Bewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasnamen</h3><h4>Modelaliasnamen</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=speech-2.6-hd&amp;route=Core&amp;caller=speech-2.6-hd&amp;fmt=speech\"><code>speech-2.6-hd</code></a></span></p><h4>Aliasnamen voor methodepaden</h4><p class=\"note-s\">Gebruik de hierboven getoonde methodepaden.</p><h4>Gerelateerde aanroeper-ID’s</h4><p class=\"note-s\"><a href=\"#m=speech-2.6-hd&amp;route=Core&amp;caller=speech-2.6-hd&amp;fmt=speech\"><code>speech-2.6-hd</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "speech-2.6-hd",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "speech-2.6-hd",
        "route_label": "Core"
      },
      "method_key": "Core|speech|/v1/audio/speech|speech-2.6-hd",
      "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": "Verplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig",
                "http_status": 400,
                "recovery": "Corrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Het geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerd",
                "http_status": null,
                "recovery": "Bewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in.",
                "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": "Bewaar de oorspronkelijke operation_id/X-Client-Request-ID voor reconciliatie zonder opnieuw in te dienen; er is geen aparte route om de audiostatus op te vragen."
            },
            "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": "Bewaar het volledige binaire resultaat en de headers. Als JSON/meerdere uitvoerresultaten worden geretourneerd, bewaar dan elk data-item en haal elk bestand op via de daadwerkelijk geretourneerde ondertekende asset-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-hd"
                ],
                "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-tekens"
              },
              {
                "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": [
            "De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating."
          ],
          "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": "de daadwerkelijk geretourneerde task_id of het record in de mediabibliotheek",
                "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-hd\", \"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": "Spraakgeneratie",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 100,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-2.6-hd",
        "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": 100
          }
        ]
      }
    }
  ],
  "model_id": "speech-2.6-hd",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "ff74989d2f856ecc993e9e41b0d5b71edeb6767f777cbe9277462196b6406b3d",
    "input_html_sha256": "2405138ce4cbb0b20660dfa5386232e4f774b359dcfaabb78c444e0aab128417",
    "private_audit_sha256": "45cbed16ef4422b76efd9ff56db5842ecce7f1d42915ad3827eabb8c5287b6b2",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/nl/speech-2-6-hd/",
    "description": "Speech 2.6 HD is een model voor hoogwaardige spraaksynthese, met de nadruk op natuurlijkheid en stemgelijkenis.",
    "locale": "nl",
    "md_url": "https://ailoot.ai/models/nl/speech-2-6-hd/index.md",
    "title": "speech-2.6-hd — Ailoot",
    "url": "https://ailoot.ai/models/nl/speech-2-6-hd/"
  },
  "rawModel": {
    "about": "### Een natuurlijke stem voor interactie\n\nSpeech 2.6 HD is bedoeld voor natuurlijke spraaksynthese en toepassingen waarin het antwoord snel moet beginnen. De fabrikant besteedt aandacht aan intonatie, vloeiende spraak en tekstverwerking vóór het uitspreken. De HD-variant legt de nadruk op geluidskwaliteit; deze kaart heeft tekst als invoer en spraakaudio als uitvoer.\n\n### Bijzondere notaties voorlezen\n\nDe Speech 2.6-generatie kan notaties verwerken die vaak in werkberichten voorkomen: webadressen, e-mailadressen, telefoonnummers, datums en bedragen. Het model zet ze om in een uitspreekbare vorm, zodat de uitspraak goed te begrijpen blijft. De fabrikant beschrijft deze taken in meerdere talen.\n\n### Vloeiende spraak met behoud van timbre\n\nSpeech 2.6 biedt Fluent LoRA om de vloeiendheid te verbeteren. Dit is bedoeld voor synthese op basis van een voorbereide stem: het helpt het timbre te behouden en tegelijk samenhangender spraak te maken, ook als het oorspronkelijke voorbeeld onregelmatig was of een accent bevatte. Het voorbereiden van een gekloonde stem en het gebruiken ervan bij het uitspreken zijn verschillende handelingen.\n\n**40 talen**, waaronder Russisch, worden ondersteund. Naast zeven basisemoties biedt Speech 2.6 de vloeiende-spraakvariant `fluent` en fluisteren met `whisper`. Als geen emotie is opgegeven, kiest het model die op basis van de tekstbetekenis.\n\n### Uitspraakinstellingen\n\nMiniMax voorziet in stemkeuze en sturing van tempo, volume en toonhoogte. De snelheid wordt ingesteld binnen **0,5–2**, het volume boven 0 tot **10** en de toonhoogtewijziging van **−12 tot 12**. De emotie kan aan het model worden overgelaten op basis van de tekstbetekenis of handmatig worden opgegeven: vreugde, verdriet, boosheid, angst, afkeer, verrassing of kalmte.\n\nDe uitspraak kan worden verfijnd met een vervangingswoordenboek en fonetische notatie; het internationaal fonetisch alfabet, Chinese pinyin en Japanse leesvarianten zijn voorzien. Pauzes worden tussen uitgesproken fragmenten ingesteld binnen **0,01–99,99 seconden**. De pauzeduur wordt met een nauwkeurigheid van twee cijfers achter de komma opgegeven; markeringen worden tussen uitgesproken fragmenten geplaatst en niet direct achter elkaar. Met deze instellingen kan de klank van namen, afkortingen en dubbelzinnige woorden op de bedoeling van de gesproken tekst worden afgestemd.\n\n### Tekstlengte en audio\n\nSynthese accepteert tekst van minder dan **10 000 tekens**. Voor lange tekst van meer dan 3000 tekens beveelt de fabrikant streaminguitvoer aan; ook het ontvangen van volledige audio is voorzien. Algemene synthese-instellingen omvatten MP3, PCM, FLAC, WAV, Opus en G.711 μ-law-varianten, mono of stereo; de beschikbare formaten van een specifiek verzoek worden met de mogelijkheden van Ailoot bepaald.\n\nVolgens MiniMax is deze generatie gericht op lage latentie in spraakscenario's. Dit is een modelbeschrijving; de feitelijke antwoordtijd en beschikbaarheid van uitgebreide instellingen hangen af van de gekozen aanroepwijze in Ailoot.\n\nAanvullende audio-instellingen omvatten de samplefrequenties **8, 16, 22,05, 24, 32 en 44,1 kHz**. Voor MP3 zijn de bitrates **32, 64, 128 of 256 kbit/s** voorzien. Ook kan de klankkleur van de stem worden gewijzigd en één effect worden toegepast: een ruimtelijke echo, zaalecho, telefoongeluid of robotstem. Stemveranderingseffecten worden bij volledige audio-uitvoer ondersteund voor MP3, WAV en FLAC; bij streaminguitvoer alleen voor MP3. G.711 μ-law-formaten gebruiken een frequentie van 8 kHz. Deze mogelijkheden horen bij de synthese-instellingen van MiniMax.\n\nDe fabrikant voorziet in synchronisatie van spraak met tekst: tijdstempels per zin, per woord of per woord bij geleidelijke uitvoer. Dit resultaat helpt de uitspraak te koppelen aan de tekstweergave. Deze aanvullende mogelijkheid vereist ondersteuning voor het betreffende antwoordformaat.",
    "alias_of": null,
    "aliases": [],
    "author": "MiniMax",
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "speech-2.6-hd",
    "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": "Verplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig",
                "http_status": 400,
                "recovery": "Corrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Het geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerd",
                "http_status": null,
                "recovery": "Bewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in.",
                "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": "Bewaar de oorspronkelijke operation_id/X-Client-Request-ID voor reconciliatie zonder opnieuw in te dienen; er is geen aparte route om de audiostatus op te vragen."
            },
            "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": "Bewaar het volledige binaire resultaat en de headers. Als JSON/meerdere uitvoerresultaten worden geretourneerd, bewaar dan elk data-item en haal elk bestand op via de daadwerkelijk geretourneerde ondertekende asset-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-hd"
                ],
                "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-tekens"
              },
              {
                "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": [
            "De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating."
          ],
          "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": "de daadwerkelijk geretourneerde task_id of het record in de mediabibliotheek",
                "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-hd\", \"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": "Spraakgeneratie",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 100,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-2.6-hd",
        "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": 100
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "speech-2.6-hd",
        "request_model_id": "speech-2.6-hd",
        "route_label": "Core"
      }
    ],
    "name": "speech-2.6-hd",
    "price": {
      "in": 100,
      "in_label": "per 1 million characters",
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "Speech 2.6 HD is een model voor hoogwaardige spraaksynthese, met de nadruk op natuurlijkheid en stemgelijkenis."
  },
  "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 HD is een model voor hoogwaardige spraaksynthese, met de nadruk op natuurlijkheid en stemgelijkenis.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "fec0d6deff1497cf01944615cd1d51cc85ad57b0ce428503798c3064a6ce6949",
    "renderer_sha256": "be7649af06bb0ae446191041c6cfb8a9b83a53896c8c6e9173e76a39d513e829"
  },
  "sourceRevision": "1cd6178ae985b9161646534a539bcb9def677ad1b172cc49f370d84b4cee648e"
}
