{
  "aboutHtml": "<p>S1 is het tekst-naar-spraakmodel van de vorige generatie van Fish Audio voor expressieve vertelteksten en stemuitvoer met één spreker. Het leest een aangeleverd script en geeft audio terug met een geselecteerde stem of een stem die door referentieaudio wordt bepaald. Het volledige S1-model staat los van S1-mini, het kleinere gedistilleerde model; de producent introduceert deze als varianten met respectievelijk 4 miljard en 0,5 miljard parameters. Dit profiel betreft het genoemde S1-model.</p><p>Bereid voor een verteltekst de woorden voor die daadwerkelijk moeten worden uitgesproken en markeer de plaatsen waar de voordracht moet veranderen. Een bruikbaar uitlegscript noemt eerst het hoofdpunt, werkt telkens één idee uit en gebruikt leestekens om zinsdelen te scheiden die een natuurlijke pauze nodig hebben. Houd een korte instructie begrijpelijk wanneer deze zonder scherm wordt gehoord. Behoud de bedoelde uitspraak van namen, afkortingen en eenheden en controleer getallen in de gesproken uitvoer, in plaats van aan te nemen dat een visueel leesbare tekenreeks maar één uitspraak heeft.</p><p>S1 gebruikt emotie- en voordrachtaanwijzingen tussen ronde haakjes, zoals (angry), (sad), (in a hurry) of (chuckling). Plaats een aanwijzing vóór de zin of het zinsdeel dat deze moet beïnvloeden, met de daadwerkelijke spraak erna. De voordracht hoort bij de daaropvolgende tekst, dus een stemmingsverandering moet verschijnen waar de uitvoering moet veranderen. Dit is een andere syntaxis dan de aanwijzingen tussen vierkante haakjes van S2; schrijf het script voor de geselecteerde generatie en neem niet aan dat de twee opmaakvormen onderling uitwisselbaar zijn.</p><p>Een stem kan worden geselecteerd via een opgeslagen stem-ID of worden bepaald op basis van een referentieopname met het bijbehorende transcript. Voor een workflow met een directe referentie beveelt de algemene spraakgids een schoon fragment van 10–30 seconden aan. Kies een fragment waarvan de spreekstijl en opnamekwaliteit bij het gewenste resultaat passen en laat het transcript overeenkomen met de woorden in dat fragment. Hergebruik voor een terugkerende verteller dezelfde stemreferentie in verschillende passages zodat een verandering van onderwerp niet onbedoeld een verandering van personage wordt.</p><p>De S1-release noemt onder meer Engels, Chinees, Japans, Duits, Frans, Spaans, Koreaans, Arabisch, Russisch, Nederlands, Italiaans, Pools en Portugees als ondersteunde talen en beschrijft het mengen van talen binnen een script. Lever de formulering in de doeltaal aan in plaats van spraaksynthese als een vertaalstap te behandelen. Houd bij een passage met een ontleende naam of taalwisseling de spelling en de omliggende zinscontext duidelijk en controleer hoe de geselecteerde stem die overgang uitvoert.</p><p>De interface van de producent voor S1 ondersteunt één spreker per syntheseverzoek. Een dialoog kan worden voorbereid als afzonderlijke segmenten met eigen stemreferenties en daarna door de toepassing worden samengevoegd; native synthese met meerdere sprekers in de S2-familie is een afzonderlijke mogelijkheid. Houd de rol, stem en tekst gekoppeld aan elk segment wanneer u personageteksten voorbereidt. Het syntheseresultaat is een audio-uitvoering van het script; het timen van een gesprek of combineren met muziek en video is een latere montagestap.</p><p>Uitvoeropties zijn MP3, WAV, onbewerkte PCM en Opus, met MP3 als standaard. De gedocumenteerde uitvoer is mono; WAV en PCM gebruiken 16-bits samples en de beschikbare samplefrequenties verschillen per formaat. MP3 ondersteunt 64, 128 en 192 kbps, terwijl Opus 48 kHz gebruikt. De snelheid kan van 0.5 tot 2.0 worden aangepast, met volumeregelaars. Kies een gecodeerd bestand als voice-overresultaat of een geschikte stream voor afspelen en bewaar de geselecteerde stem en het script bij het resultaat.</p><p>De producent verwerkt lange tekst in delen, met een gedocumenteerd bereik van 100–300 voor de deellengte en een budget aan audiotokens per deel, in plaats van een gegarandeerde totale opnameduur. Tekstnormalisatie kan Engelse en Chinese getallen omzetten in een natuurlijke leesvorm en de herhalingspenalty van S1 kan herhaalde audiopatronen verminderen. Normalisatie van de uitvoerluidheid is een andere instelling en heeft geen effect op S1. Controleer uitspraak, grenzen tussen zinsdelen, herhaalde klanken en de bedoelde emotionele verandering voordat u de uiteindelijke passage samenstelt; pas daarna de specifieke regel of referentie aan die aandacht nodig heeft.</p>",
  "aboutText": "S1 is het tekst-naar-spraakmodel van de vorige generatie van Fish Audio voor expressieve vertelteksten en stemuitvoer met één spreker. Het leest een aangeleverd script en geeft audio terug met een geselecteerde stem of een stem die door referentieaudio wordt bepaald. Het volledige S1-model staat los van S1-mini, het kleinere gedistilleerde model; de producent introduceert deze als varianten met respectievelijk 4 miljard en 0,5 miljard parameters. Dit profiel betreft het genoemde S1-model.\n\nBereid voor een verteltekst de woorden voor die daadwerkelijk moeten worden uitgesproken en markeer de plaatsen waar de voordracht moet veranderen. Een bruikbaar uitlegscript noemt eerst het hoofdpunt, werkt telkens één idee uit en gebruikt leestekens om zinsdelen te scheiden die een natuurlijke pauze nodig hebben. Houd een korte instructie begrijpelijk wanneer deze zonder scherm wordt gehoord. Behoud de bedoelde uitspraak van namen, afkortingen en eenheden en controleer getallen in de gesproken uitvoer, in plaats van aan te nemen dat een visueel leesbare tekenreeks maar één uitspraak heeft.\n\nS1 gebruikt emotie- en voordrachtaanwijzingen tussen ronde haakjes, zoals (angry), (sad), (in a hurry) of (chuckling). Plaats een aanwijzing vóór de zin of het zinsdeel dat deze moet beïnvloeden, met de daadwerkelijke spraak erna. De voordracht hoort bij de daaropvolgende tekst, dus een stemmingsverandering moet verschijnen waar de uitvoering moet veranderen. Dit is een andere syntaxis dan de aanwijzingen tussen vierkante haakjes van S2; schrijf het script voor de geselecteerde generatie en neem niet aan dat de twee opmaakvormen onderling uitwisselbaar zijn.\n\nEen stem kan worden geselecteerd via een opgeslagen stem-ID of worden bepaald op basis van een referentieopname met het bijbehorende transcript. Voor een workflow met een directe referentie beveelt de algemene spraakgids een schoon fragment van 10–30 seconden aan. Kies een fragment waarvan de spreekstijl en opnamekwaliteit bij het gewenste resultaat passen en laat het transcript overeenkomen met de woorden in dat fragment. Hergebruik voor een terugkerende verteller dezelfde stemreferentie in verschillende passages zodat een verandering van onderwerp niet onbedoeld een verandering van personage wordt.\n\nDe S1-release noemt onder meer Engels, Chinees, Japans, Duits, Frans, Spaans, Koreaans, Arabisch, Russisch, Nederlands, Italiaans, Pools en Portugees als ondersteunde talen en beschrijft het mengen van talen binnen een script. Lever de formulering in de doeltaal aan in plaats van spraaksynthese als een vertaalstap te behandelen. Houd bij een passage met een ontleende naam of taalwisseling de spelling en de omliggende zinscontext duidelijk en controleer hoe de geselecteerde stem die overgang uitvoert.\n\nDe interface van de producent voor S1 ondersteunt één spreker per syntheseverzoek. Een dialoog kan worden voorbereid als afzonderlijke segmenten met eigen stemreferenties en daarna door de toepassing worden samengevoegd; native synthese met meerdere sprekers in de S2-familie is een afzonderlijke mogelijkheid. Houd de rol, stem en tekst gekoppeld aan elk segment wanneer u personageteksten voorbereidt. Het syntheseresultaat is een audio-uitvoering van het script; het timen van een gesprek of combineren met muziek en video is een latere montagestap.\n\nUitvoeropties zijn MP3, WAV, onbewerkte PCM en Opus, met MP3 als standaard. De gedocumenteerde uitvoer is mono; WAV en PCM gebruiken 16-bits samples en de beschikbare samplefrequenties verschillen per formaat. MP3 ondersteunt 64, 128 en 192 kbps, terwijl Opus 48 kHz gebruikt. De snelheid kan van 0.5 tot 2.0 worden aangepast, met volumeregelaars. Kies een gecodeerd bestand als voice-overresultaat of een geschikte stream voor afspelen en bewaar de geselecteerde stem en het script bij het resultaat.\n\nDe producent verwerkt lange tekst in delen, met een gedocumenteerd bereik van 100–300 voor de deellengte en een budget aan audiotokens per deel, in plaats van een gegarandeerde totale opnameduur. Tekstnormalisatie kan Engelse en Chinese getallen omzetten in een natuurlijke leesvorm en de herhalingspenalty van S1 kan herhaalde audiopatronen verminderen. Normalisatie van de uitvoerluidheid is een andere instelling en heeft geen effect op S1. Controleer uitspraak, grenzen tussen zinsdelen, herhaalde klanken en de bedoelde emotionele verandering voordat u de uiteindelijke passage samenstelt; pas daarna de specifieke regel of referentie aan die aandacht nodig heeft.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "3e7b8807de7b92608a4e298cbc8c66bf85e8e53bbfe582b23b01d5661a6f0538",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "nl-be",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Fish Audio: S1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sluiten\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/s1</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=\"Ultra|speech|/v1/audio/speech|fish-audio%2Fs1\">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\">Fish Audio S1 zet meertalige scripts om in expressieve audio met één spreker, op basis van stemreferenties en emotieaanwijzingen tussen ronde haakjes. Gebruik het voor vertelteksten, korte gesproken instructies of personageteksten, met formaat- en prosodieregeling voor de uiteindelijke audio.</p><dl class=\"card-io\" data-card-io><div><dt>Toegestane invoer</dt><dd>Tekst</dd></div><div><dt>Resultaten</dt><dd>Audio</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\"><p>S1 is het tekst-naar-spraakmodel van de vorige generatie van Fish Audio voor expressieve vertelteksten en stemuitvoer met één spreker. Het leest een aangeleverd script en geeft audio terug met een geselecteerde stem of een stem die door referentieaudio wordt bepaald. Het volledige S1-model staat los van S1-mini, het kleinere gedistilleerde model; de producent introduceert deze als varianten met respectievelijk 4 miljard en 0,5 miljard parameters. Dit profiel betreft het genoemde S1-model.</p><p>Bereid voor een verteltekst de woorden voor die daadwerkelijk moeten worden uitgesproken en markeer de plaatsen waar de voordracht moet veranderen. Een bruikbaar uitlegscript noemt eerst het hoofdpunt, werkt telkens één idee uit en gebruikt leestekens om zinsdelen te scheiden die een natuurlijke pauze nodig hebben. Houd een korte instructie begrijpelijk wanneer deze zonder scherm wordt gehoord. Behoud de bedoelde uitspraak van namen, afkortingen en eenheden en controleer getallen in de gesproken uitvoer, in plaats van aan te nemen dat een visueel leesbare tekenreeks maar één uitspraak heeft.</p><p>S1 gebruikt emotie- en voordrachtaanwijzingen tussen ronde haakjes, zoals (angry), (sad), (in a hurry) of (chuckling). Plaats een aanwijzing vóór de zin of het zinsdeel dat deze moet beïnvloeden, met de daadwerkelijke spraak erna. De voordracht hoort bij de daaropvolgende tekst, dus een stemmingsverandering moet verschijnen waar de uitvoering moet veranderen. Dit is een andere syntaxis dan de aanwijzingen tussen vierkante haakjes van S2; schrijf het script voor de geselecteerde generatie en neem niet aan dat de twee opmaakvormen onderling uitwisselbaar zijn.</p><p>Een stem kan worden geselecteerd via een opgeslagen stem-ID of worden bepaald op basis van een referentieopname met het bijbehorende transcript. Voor een workflow met een directe referentie beveelt de algemene spraakgids een schoon fragment van 10–30 seconden aan. Kies een fragment waarvan de spreekstijl en opnamekwaliteit bij het gewenste resultaat passen en laat het transcript overeenkomen met de woorden in dat fragment. Hergebruik voor een terugkerende verteller dezelfde stemreferentie in verschillende passages zodat een verandering van onderwerp niet onbedoeld een verandering van personage wordt.</p><p>De S1-release noemt onder meer Engels, Chinees, Japans, Duits, Frans, Spaans, Koreaans, Arabisch, Russisch, Nederlands, Italiaans, Pools en Portugees als ondersteunde talen en beschrijft het mengen van talen binnen een script. Lever de formulering in de doeltaal aan in plaats van spraaksynthese als een vertaalstap te behandelen. Houd bij een passage met een ontleende naam of taalwisseling de spelling en de omliggende zinscontext duidelijk en controleer hoe de geselecteerde stem die overgang uitvoert.</p><p>De interface van de producent voor S1 ondersteunt één spreker per syntheseverzoek. Een dialoog kan worden voorbereid als afzonderlijke segmenten met eigen stemreferenties en daarna door de toepassing worden samengevoegd; native synthese met meerdere sprekers in de S2-familie is een afzonderlijke mogelijkheid. Houd de rol, stem en tekst gekoppeld aan elk segment wanneer u personageteksten voorbereidt. Het syntheseresultaat is een audio-uitvoering van het script; het timen van een gesprek of combineren met muziek en video is een latere montagestap.</p><p>Uitvoeropties zijn MP3, WAV, onbewerkte PCM en Opus, met MP3 als standaard. De gedocumenteerde uitvoer is mono; WAV en PCM gebruiken 16-bits samples en de beschikbare samplefrequenties verschillen per formaat. MP3 ondersteunt 64, 128 en 192 kbps, terwijl Opus 48 kHz gebruikt. De snelheid kan van 0.5 tot 2.0 worden aangepast, met volumeregelaars. Kies een gecodeerd bestand als voice-overresultaat of een geschikte stream voor afspelen en bewaar de geselecteerde stem en het script bij het resultaat.</p><p>De producent verwerkt lange tekst in delen, met een gedocumenteerd bereik van 100–300 voor de deellengte en een budget aan audiotokens per deel, in plaats van een gegarandeerde totale opnameduur. Tekstnormalisatie kan Engelse en Chinese getallen omzetten in een natuurlijke leesvorm en de herhalingspenalty van S1 kan herhaalde audiopatronen verminderen. Normalisatie van de uitvoerluidheid is een andere instelling en heeft geen effect op S1. Controleer uitspraak, grenzen tussen zinsdelen, herhaalde klanken en de bedoelde emotionele verandering voordat u de uiteindelijke passage samenstelt; pas daarna de specifieke regel of referentie aan die aandacht nodig heeft.</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 Ultra · Spraakgeneratie</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Invoer</dt><dd><code>text</code></dd></div><div><dt>Uitvoer</dt><dd><code>audio</code></dd></div><div><dt>Uitvoerformaat</dt><dd>werkelijke binaire audio in het gedeclareerde formaat</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>fish-audio/s1</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></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr data-parameter-availability=\"saved_exact_supplier_example\"><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>Voorbeelden: b347db033a6549378b48d00acb0d06cd</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, pcm</div></td><td data-cell-label=\"Standaard\" data-default=\"known\"><span class=\"card-cell-label\">Standaard</span>pcm</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: actual UTF-8 script, exact supported voice</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>content_type</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>model, input, voice</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"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>voice_ids</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>b347db033a6549378b48d00acb0d06cd</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>voice_list_exhaustive</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>response_format</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>mp3, pcm</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>default_response_format</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>pcm</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>quantity</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>UTF-8-bytes van één gedecodeerde invoertekenreeks; zonder trimmen of normaliseren</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>native_byte_quote_controls</code></th><td data-cell-label=\"Contract\"><span class=\"card-cell-label\">Contract</span>Niet-lege instructions en invoer met spreekbeurten van meerdere sprekers worden door dit exacte prijspad op basis van bytes geweigerd zolang de bijkomend aangerekende tekst niet is gedeclareerd.</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> · daadwerkelijk teruggegeven task_id of 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\">Gebruik het exacte model en de gedocumenteerde invoervelden.</p><p class=\"note-s\">Bewaar het volledige antwoord, alle werkelijke uitvoer en de oorspronkelijke teruggestuurde ID&#39;s.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarieven</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.</p><dl data-price-conditions><dt>Snelle modus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de snelle modus geselecteerd is</span></dd><dt>Flex-modus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de flex-modus geselecteerd is</span></dd><dt>Maximale redeneerinspanning</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-tarieven</h4><h4>Prijzen per configuratie</h4><p class=\"note-s\">Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuratie</th><th>Tariefstaffel</th><th>Rekeneenheid</th><th>Kosten</th></tr></thead><tbody><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Basistarieven voor tokens</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>Basistarief</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>—</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Invoer · Invoertokens</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Uitvoer · Uitvoertokens</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache lezen</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven, 1 uur</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Ultra</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per utf8-byte audio-invoer</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Invoer · audio-invoerbyte in utf8</span> <b>$0.00003</b> <span class=\"price-unit\">per utf8-byte audio-invoer</span></div></td></tr></tbody></table></div></div><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-be/billing/reserve/\">Zo werken reservering en afrekening →</a></p><div data-declared-reference-pricing><h4>Details van het referentietarief</h4><p class=\"note-s\">Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Fish Audio: S1</summary><h4>Prijzen per configuratie</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuratie</th><th>Factureringsvoorwaarden</th><th>Kosten</th></tr></thead><tbody><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Fish Audio: S1 · Standaardconfiguratie</th><td data-cell-label=\"Factureringsvoorwaarden\"><span class=\"card-cell-label\">Factureringsvoorwaarden</span>Standaardconfiguratie</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Invoer · UTF-8-invoerbytes</span> <b>US$ 0,00003</b> <span class=\"price-unit\">per UTF-8-byte invoer</span></div></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Voorbeeldverzoeken</h3><h4>Ailoot Ultra · 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-1354-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1354-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · exacte native-aanvraagbody en volledig resultaat</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-1354-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1354-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;fish-audio/s1&#39;, &#39;input&#39;: &#39;Hello world&#39;, &#39;voice&#39;: &#39;b347db033a6549378b48d00acb0d06cd&#39;, &#39;response_format&#39;: &#39;mp3&#39;}\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\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 response.bin\n# Keep the complete original response and headers. Read every returned segment, word and usage field.\n# Preserve actual operation/task/asset IDs; continue reads of the original result without resubmitting.\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 Ultra · Spraakgeneratie</h4><p class=\"note-s\">werkelijke binaire audio in het gedeclareerde formaat</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\">Sla alle binaire bytes en alle oorspronkelijke headers volledig op; bewaar de volledige JSON indien die wordt teruggestuurd. Werkelijke operatie- en asset-ID&#39;s blijven behouden.</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 en het oorspronkelijke antwoord. Raadpleeg werkelijke taak- en assetregistraties die je toebehoren zonder opnieuw in te dienen; er wordt geen afzonderlijke URL voor het opvragen van de audiostatus samengesteld.</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></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=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Fs1&amp;route=Ultra&amp;caller=fish-audio%2Fs1&amp;fmt=speech\"><code>fish-audio/s1</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=fish-audio%2Fs1&amp;route=Ultra&amp;caller=fish-audio%2Fs1&amp;fmt=speech\"><code>fish-audio/s1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/s1",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|fish-audio%2Fs1",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save all complete binary bytes and all original headers; keep full JSON if returned. Actual operation/asset IDs are preserved.",
            "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": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Bewaar de oorspronkelijke operation_id/X-Client-Request-ID en het oorspronkelijke antwoord. Raadpleeg werkelijke taak- en assetregistraties die je toebehoren zonder opnieuw in te dienen; er wordt geen afzonderlijke URL voor het opvragen van de audiostatus samengesteld."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "actual UTF-8 script",
                  "exact supported voice"
                ]
              }
            ],
            "outputs": {
              "all_results": "Sla alle binaire bytes en alle oorspronkelijke headers volledig op; bewaar de volledige JSON indien die wordt teruggestuurd. Werkelijke operatie- en asset-ID's blijven behouden.",
              "family": "audio",
              "fields": [
                {
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "werkelijke binaire audio in het gedeclareerde formaat"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "fish-audio/s1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "input",
                "quantity_unit": "decoded input UTF-8 bytes",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_example",
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s1"
                  ],
                  "type": "string"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "Hello world",
                "model": "fish-audio/s1",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "Gebruik het exacte model en de gedocumenteerde invoervelden.",
            "Bewaar het volledige antwoord, alle werkelijke uitvoer en de oorspronkelijke teruggestuurde ID's."
          ],
          "input": {
            "content_type": "application/json",
            "default_response_format": "pcm",
            "material_types": [
              "text"
            ],
            "native_byte_quote_controls": "Niet-lege instructions en invoer met spreekbeurten van meerdere sprekers worden door dit exacte prijspad op basis van bytes geweigerd zolang de bijkomend aangerekende tekst niet is gedeclareerd.",
            "quantity": "UTF-8-bytes van één gedecodeerde invoertekenreeks; zonder trimmen of normaliseren",
            "required": [
              "model",
              "input",
              "voice"
            ],
            "response_format": [
              "mp3",
              "pcm"
            ],
            "voice_ids": [
              "b347db033a6549378b48d00acb0d06cd"
            ],
            "voice_list_exhaustive": false
          },
          "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": "daadwerkelijk teruggegeven task_id of record in de mediabibliotheek",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID and original response. Read actual owned task/asset records without resubmitting; no dedicated audio poll URL is constructed."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "all_results": true,
            "family": "audio",
            "format": "actual MP3 or PCM bytes and MIME",
            "response": "complete raw audio bytes plus response headers"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s1', 'input': 'Hello world', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\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 response.bin\n# Keep the complete original response and headers. Read every returned segment, word and usage field.\n# Preserve actual operation/task/asset IDs; continue reads of the original result without resubmitting.\n",
            "label": "curl · exact native body and complete result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_utf8_byte": 3e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00003",
            "amount_unit": "usd_per_audio_input_utf8_byte",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "audio input utf8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per audio input utf8 byte",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/s1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "5f0bd035c9be6e2f67999fa2e76db442f4b69491f15ddea44bbe39d84face082",
    "input_html_sha256": "6603c7edfcc07220d59615fa51c1e2e0c3c3b419cc46e0cdf9eeb926726a548e",
    "private_audit_sha256": "d2d5ccb2571224235bdd99c7dd83099d90c3706357d50a1d49d82f2afd25b209",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/nl-be/fish-audio-s1/",
    "description": "Fish Audio S1 zet meertalige scripts om in expressieve audio met één spreker, op basis van stemreferenties en emotieaanwijzingen tussen ronde haakjes. Gebruik het voor vertelteksten, korte gesproken instructies of personageteksten, met formaat- en prosodieregeling voor de uiteindelijke audio.",
    "locale": "nl-be",
    "md_url": "https://ailoot.ai/models/nl-be/fish-audio-s1/index.md",
    "title": "Fish Audio: S1 — Ailoot",
    "url": "https://ailoot.ai/models/nl-be/fish-audio-s1/"
  },
  "rawModel": {
    "about": "S1 is het tekst-naar-spraakmodel van de vorige generatie van Fish Audio voor expressieve vertelteksten en stemuitvoer met één spreker. Het leest een aangeleverd script en geeft audio terug met een geselecteerde stem of een stem die door referentieaudio wordt bepaald. Het volledige S1-model staat los van S1-mini, het kleinere gedistilleerde model; de producent introduceert deze als varianten met respectievelijk 4 miljard en 0,5 miljard parameters. Dit profiel betreft het genoemde S1-model.\n\nBereid voor een verteltekst de woorden voor die daadwerkelijk moeten worden uitgesproken en markeer de plaatsen waar de voordracht moet veranderen. Een bruikbaar uitlegscript noemt eerst het hoofdpunt, werkt telkens één idee uit en gebruikt leestekens om zinsdelen te scheiden die een natuurlijke pauze nodig hebben. Houd een korte instructie begrijpelijk wanneer deze zonder scherm wordt gehoord. Behoud de bedoelde uitspraak van namen, afkortingen en eenheden en controleer getallen in de gesproken uitvoer, in plaats van aan te nemen dat een visueel leesbare tekenreeks maar één uitspraak heeft.\n\nS1 gebruikt emotie- en voordrachtaanwijzingen tussen ronde haakjes, zoals (angry), (sad), (in a hurry) of (chuckling). Plaats een aanwijzing vóór de zin of het zinsdeel dat deze moet beïnvloeden, met de daadwerkelijke spraak erna. De voordracht hoort bij de daaropvolgende tekst, dus een stemmingsverandering moet verschijnen waar de uitvoering moet veranderen. Dit is een andere syntaxis dan de aanwijzingen tussen vierkante haakjes van S2; schrijf het script voor de geselecteerde generatie en neem niet aan dat de twee opmaakvormen onderling uitwisselbaar zijn.\n\nEen stem kan worden geselecteerd via een opgeslagen stem-ID of worden bepaald op basis van een referentieopname met het bijbehorende transcript. Voor een workflow met een directe referentie beveelt de algemene spraakgids een schoon fragment van 10–30 seconden aan. Kies een fragment waarvan de spreekstijl en opnamekwaliteit bij het gewenste resultaat passen en laat het transcript overeenkomen met de woorden in dat fragment. Hergebruik voor een terugkerende verteller dezelfde stemreferentie in verschillende passages zodat een verandering van onderwerp niet onbedoeld een verandering van personage wordt.\n\nDe S1-release noemt onder meer Engels, Chinees, Japans, Duits, Frans, Spaans, Koreaans, Arabisch, Russisch, Nederlands, Italiaans, Pools en Portugees als ondersteunde talen en beschrijft het mengen van talen binnen een script. Lever de formulering in de doeltaal aan in plaats van spraaksynthese als een vertaalstap te behandelen. Houd bij een passage met een ontleende naam of taalwisseling de spelling en de omliggende zinscontext duidelijk en controleer hoe de geselecteerde stem die overgang uitvoert.\n\nDe interface van de producent voor S1 ondersteunt één spreker per syntheseverzoek. Een dialoog kan worden voorbereid als afzonderlijke segmenten met eigen stemreferenties en daarna door de toepassing worden samengevoegd; native synthese met meerdere sprekers in de S2-familie is een afzonderlijke mogelijkheid. Houd de rol, stem en tekst gekoppeld aan elk segment wanneer u personageteksten voorbereidt. Het syntheseresultaat is een audio-uitvoering van het script; het timen van een gesprek of combineren met muziek en video is een latere montagestap.\n\nUitvoeropties zijn MP3, WAV, onbewerkte PCM en Opus, met MP3 als standaard. De gedocumenteerde uitvoer is mono; WAV en PCM gebruiken 16-bits samples en de beschikbare samplefrequenties verschillen per formaat. MP3 ondersteunt 64, 128 en 192 kbps, terwijl Opus 48 kHz gebruikt. De snelheid kan van 0.5 tot 2.0 worden aangepast, met volumeregelaars. Kies een gecodeerd bestand als voice-overresultaat of een geschikte stream voor afspelen en bewaar de geselecteerde stem en het script bij het resultaat.\n\nDe producent verwerkt lange tekst in delen, met een gedocumenteerd bereik van 100–300 voor de deellengte en een budget aan audiotokens per deel, in plaats van een gegarandeerde totale opnameduur. Tekstnormalisatie kan Engelse en Chinese getallen omzetten in een natuurlijke leesvorm en de herhalingspenalty van S1 kan herhaalde audiopatronen verminderen. Normalisatie van de uitvoerluidheid is een andere instelling en heeft geen effect op S1. Controleer uitspraak, grenzen tussen zinsdelen, herhaalde klanken en de bedoelde emotionele verandering voordat u de uiteindelijke passage samenstelt; pas daarna de specifieke regel of referentie aan die aandacht nodig heeft.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "available": null,
    "canonical_model": "fish-audio/s1",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00003",
            "amount_unit": "usd_per_audio_input_utf8_byte",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "audio input utf8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per audio input utf8 byte",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ],
        "summary": "De volledige prijsinformatie voor de configuratie vindt u bij de details."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "ca1892881aa6bc927745",
        "label": "Fish Audio: S1",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "Standaardconfiguratie"
            },
            "label": "Fish Audio: S1 · Standaardconfiguratie",
            "units": [
              {
                "amount": "0.000030",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "e7b3eb5a7636763feb8a9472",
                "label": "Input UTF-8 bytes",
                "public_unit_label": "per input UTF-8 byte",
                "quantity": "1",
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "input_utf8_byte"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "fish-audio/s1",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save all complete binary bytes and all original headers; keep full JSON if returned. Actual operation/asset IDs are preserved.",
            "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": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Bewaar de oorspronkelijke operation_id/X-Client-Request-ID en het oorspronkelijke antwoord. Raadpleeg werkelijke taak- en assetregistraties die je toebehoren zonder opnieuw in te dienen; er wordt geen afzonderlijke URL voor het opvragen van de audiostatus samengesteld."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "actual UTF-8 script",
                  "exact supported voice"
                ]
              }
            ],
            "outputs": {
              "all_results": "Sla alle binaire bytes en alle oorspronkelijke headers volledig op; bewaar de volledige JSON indien die wordt teruggestuurd. Werkelijke operatie- en asset-ID's blijven behouden.",
              "family": "audio",
              "fields": [
                {
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "werkelijke binaire audio in het gedeclareerde formaat"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "fish-audio/s1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "input",
                "quantity_unit": "decoded input UTF-8 bytes",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_example",
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s1"
                  ],
                  "type": "string"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "Hello world",
                "model": "fish-audio/s1",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "Gebruik het exacte model en de gedocumenteerde invoervelden.",
            "Bewaar het volledige antwoord, alle werkelijke uitvoer en de oorspronkelijke teruggestuurde ID's."
          ],
          "input": {
            "content_type": "application/json",
            "default_response_format": "pcm",
            "material_types": [
              "text"
            ],
            "native_byte_quote_controls": "Niet-lege instructions en invoer met spreekbeurten van meerdere sprekers worden door dit exacte prijspad op basis van bytes geweigerd zolang de bijkomend aangerekende tekst niet is gedeclareerd.",
            "quantity": "UTF-8-bytes van één gedecodeerde invoertekenreeks; zonder trimmen of normaliseren",
            "required": [
              "model",
              "input",
              "voice"
            ],
            "response_format": [
              "mp3",
              "pcm"
            ],
            "voice_ids": [
              "b347db033a6549378b48d00acb0d06cd"
            ],
            "voice_list_exhaustive": false
          },
          "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": "daadwerkelijk teruggegeven task_id of record in de mediabibliotheek",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID and original response. Read actual owned task/asset records without resubmitting; no dedicated audio poll URL is constructed."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "all_results": true,
            "family": "audio",
            "format": "actual MP3 or PCM bytes and MIME",
            "response": "complete raw audio bytes plus response headers"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s1', 'input': 'Hello world', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\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 response.bin\n# Keep the complete original response and headers. Read every returned segment, word and usage field.\n# Preserve actual operation/task/asset IDs; continue reads of the original result without resubmitting.\n",
            "label": "curl · exact native body and complete result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_utf8_byte": 3e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00003",
            "amount_unit": "usd_per_audio_input_utf8_byte",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "audio input utf8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per audio input utf8 byte",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/s1",
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: S1",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "not_character_or_token_count": true,
          "quoted_unit": "1000000_UTF8_bytes",
          "retirement_date": "2026-12-31"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000030",
            "amount_unit": "usd_per_input_utf8_byte",
            "conditions": {
              "not_character_or_token_count": true,
              "quoted_unit": "1000000_UTF8_bytes",
              "retirement_date": "2026-12-31"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_utf8_byte"
          }
        ]
      }
    ],
    "public_id": "fish-audio/s1",
    "short": "Fish Audio S1 zet meertalige scripts om in expressieve audio met één spreker, op basis van stemreferenties en emotieaanwijzingen tussen ronde haakjes. Gebruik het voor vertelteksten, korte gesproken instructies of personageteksten, met formaat- en prosodieregeling voor de uiteindelijke audio."
  },
  "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": "Fish Audio S1 zet meertalige scripts om in expressieve audio met één spreker, op basis van stemreferenties en emotieaanwijzingen tussen ronde haakjes. Gebruik het voor vertelteksten, korte gesproken instructies of personageteksten, met formaat- en prosodieregeling voor de uiteindelijke audio.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "c6bf121200d25c0b8d854f37a2bea629cc5667534fec3159175974f1bba5b025",
    "renderer_sha256": "a5aefc67f30427b283b8d8bf7955908a0216c6e5e4ca3cc1887842431e2b1ee6"
  },
  "sourceRevision": "72d00a7d779507928cebd21f2f99008e8903ec5b8ed268cb46d44cde7013ff4b"
}
