{
  "aboutHtml": "<p>S2 Pro ist Fish Audios Text-zu-Sprache-Modell der zweiten Generation für ausdrucksstarke Sprechertexte, Figurendialoge und gesprächsorientierte Sprachausgabe. Es wandelt ein schriftliches Skript in Audio um und unterstützt natürlichsprachliche Anweisungen auf Wort- oder Phrasenebene. Die vorherige S1-Generation verwendet Hinweise in runden Klammern; S2 Pro verwendet nativ eckige Klammern und unterstützt mehrere Sprecher innerhalb einer Syntheseanfrage. Der Hersteller veröffentlicht S2-Pro-Gewichte und Fine-Tuning-Code für gesonderte Anpassungsarbeit. Eine gewöhnliche Sprachanfrage verwendet das gewählte Modell, statt ein neues zu trainieren.</p><p>Schreiben Sie zuerst den Sprechtext und setzen Sie dann eine Vortragsanweisung unmittelbar vor das Wort oder die Phrase, auf die sie wirken soll. Anweisungen können Flüstern, eine Reaktion, eine Pause, einen Gefühlswechsel oder einen frei beschriebenen Sprechstil benennen. Halten Sie bei einer kurzen Produkterklärung den sachlichen Satz klar und betonen Sie nur dort, wo der Zuhörer einen Unterschied bemerken soll. Beschreiben Sie bei einer Figurenzeile den emotionalen Wechsel an der Stelle seines Auftretens, statt der ganzen Passage eine feste Stimmung zu geben.</p><p>Tags in eckigen Klammern sind frei formulierte Beschreibungen statt eines geschlossenen Menüs. Beispiele sind [whispering], [sigh], [long pause] und eine Phrase wie [speaking slowly, almost hesitant]. Tags können innerhalb eines Satzes stehen und beeinflussen die folgende Sprache. Auf einen beschreibenden Tag muss tatsächlicher Text folgen; eine alleinstehende Anweisung kann unvorhersehbare Ausgabe erzeugen. Beginnen Sie mit ein oder zwei nützlichen Anweisungen, bevor Sie weitere Ebenen hinzufügen, da konkurrierende Tags den beabsichtigten Vortrag verwischen können. Verschiedene Stimmreferenzen reagieren möglicherweise unterschiedlich stark auf dieselbe Anweisung.</p><p>Die S2-Veröffentlichung beschreibt ungefähr 80 Sprachen und zeigt Vortragsanweisungen in derselben Sprache wie das Skript. Bereiten Sie den Wortlaut in der zu sprechenden Sprache vor und bewahren Sie Namen, Einheiten und Abkürzungen mit besonderer Aussprache. Eine mehrsprachige Vertonung kann beim Wechsel der Skriptsprache ihre gewünschte Stimme behalten; das Endergebnis muss dennoch auf Aussprache und Kontinuität angehört werden. Die Synthese gibt gelieferte Inhalte als Sprache aus, statt zu entscheiden, welche Informationen die Anwendung sagen soll.</p><p>Wählen Sie für einen einzelnen Sprecher eine gespeicherte Stimmkennung oder liefern Sie Referenzaudio und das passende Transkript. Der Hersteller empfiehlt eine saubere Probe von 10–30 Sekunden für sofortige Konditionierung. Verwenden Sie für Dialoge Sprechermarkierungen wie &lt;|speaker:0|&gt; und &lt;|speaker:1|&gt; mit einer geordneten Liste von Stimmkennungen oder getrennten Referenzgruppen für die Sprecher. Die numerische Markierung wählt den entsprechenden Stimmeintrag; halten Sie die Reihenfolge im Gespräch fest. Natürlichsprachliche Vortragsanweisungen und Sprecherauswahl haben verschiedene Aufgaben im Skript.</p><p>Die Audioausgabe kann MP3, WAV, rohes PCM oder Opus sein. MP3 hat standardmässig 128 kbps und bietet 64 oder 192 kbps; Opus verwendet 48 kHz, WAV und PCM unterstützen ihre dokumentierten Abtastraten als 16-Bit-Mono. Wählen Sie das Format für seinen tatsächlichen Zielort: eine gespeicherte Datei für Sprechertexte oder geeignete Audioabschnitte für die Wiedergabe. Der Sprachablauf des Herstellers beschreibt ausserdem Live-Textstreaming, wenn das Skript schrittweise eintrifft. Das erzeugte Ergebnis sollte dem vollständigen Skript und den gewählten Stimmen zugeordnet bleiben.</p><p>Die Geschwindigkeit lässt sich zwischen 0,5 und 2,0 anpassen, mit Reglern für Lautstärke und Normalisierung der Ausgabelautheit. Textnormalisierung verbessert die Aussprache englischer und chinesischer Zahlen. Die Verarbeitung verwendet Abschnitte im Bereich 100–300 und ein Audiotokenbudget je Abschnitt; diese Einstellungen bedeuten deshalb keine feste Maximallänge für einen gesamten Sprechertext. Konditionierung durch den vorherigen Abschnitt kann Stimmkontext in das nächste Segment übernehmen. Sampling-Regler wie temperature und top-p beeinflussen die Variation; auch eine gezielt angeleitete Zeile benötigt ausreichend Text und Kontext für den beabsichtigten Klang.</p><p>Ein brauchbares Produktionsbriefing trennt Sprechertext, Dialog und Vortragsanweisungen und benennt dann Stimme und Format des entstehenden Ergebnisses. Achten Sie beim Anhören auf fehlende Wörter, wiederholtes Audio, Zahlenaussprache, Sprecherwechsel und den Zeitpunkt einer Reaktion. Überarbeiten Sie die verantwortliche Zeile oder Stimmreferenz, statt anzunehmen, mehr Tags verbesserten jede Passage. S2 Pro bleibt ein eigenständiges Modell der vorherigen S2-Generation; S2.1 Pro ist die spätere Edition mit eigenen Verbesserungen und modellspezifischem Einstellungsverhalten.</p>",
  "aboutText": "S2 Pro ist Fish Audios Text-zu-Sprache-Modell der zweiten Generation für ausdrucksstarke Sprechertexte, Figurendialoge und gesprächsorientierte Sprachausgabe. Es wandelt ein schriftliches Skript in Audio um und unterstützt natürlichsprachliche Anweisungen auf Wort- oder Phrasenebene. Die vorherige S1-Generation verwendet Hinweise in runden Klammern; S2 Pro verwendet nativ eckige Klammern und unterstützt mehrere Sprecher innerhalb einer Syntheseanfrage. Der Hersteller veröffentlicht S2-Pro-Gewichte und Fine-Tuning-Code für gesonderte Anpassungsarbeit. Eine gewöhnliche Sprachanfrage verwendet das gewählte Modell, statt ein neues zu trainieren.\n\nSchreiben Sie zuerst den Sprechtext und setzen Sie dann eine Vortragsanweisung unmittelbar vor das Wort oder die Phrase, auf die sie wirken soll. Anweisungen können Flüstern, eine Reaktion, eine Pause, einen Gefühlswechsel oder einen frei beschriebenen Sprechstil benennen. Halten Sie bei einer kurzen Produkterklärung den sachlichen Satz klar und betonen Sie nur dort, wo der Zuhörer einen Unterschied bemerken soll. Beschreiben Sie bei einer Figurenzeile den emotionalen Wechsel an der Stelle seines Auftretens, statt der ganzen Passage eine feste Stimmung zu geben.\n\nTags in eckigen Klammern sind frei formulierte Beschreibungen statt eines geschlossenen Menüs. Beispiele sind [whispering], [sigh], [long pause] und eine Phrase wie [speaking slowly, almost hesitant]. Tags können innerhalb eines Satzes stehen und beeinflussen die folgende Sprache. Auf einen beschreibenden Tag muss tatsächlicher Text folgen; eine alleinstehende Anweisung kann unvorhersehbare Ausgabe erzeugen. Beginnen Sie mit ein oder zwei nützlichen Anweisungen, bevor Sie weitere Ebenen hinzufügen, da konkurrierende Tags den beabsichtigten Vortrag verwischen können. Verschiedene Stimmreferenzen reagieren möglicherweise unterschiedlich stark auf dieselbe Anweisung.\n\nDie S2-Veröffentlichung beschreibt ungefähr 80 Sprachen und zeigt Vortragsanweisungen in derselben Sprache wie das Skript. Bereiten Sie den Wortlaut in der zu sprechenden Sprache vor und bewahren Sie Namen, Einheiten und Abkürzungen mit besonderer Aussprache. Eine mehrsprachige Vertonung kann beim Wechsel der Skriptsprache ihre gewünschte Stimme behalten; das Endergebnis muss dennoch auf Aussprache und Kontinuität angehört werden. Die Synthese gibt gelieferte Inhalte als Sprache aus, statt zu entscheiden, welche Informationen die Anwendung sagen soll.\n\nWählen Sie für einen einzelnen Sprecher eine gespeicherte Stimmkennung oder liefern Sie Referenzaudio und das passende Transkript. Der Hersteller empfiehlt eine saubere Probe von 10–30 Sekunden für sofortige Konditionierung. Verwenden Sie für Dialoge Sprechermarkierungen wie <|speaker:0|> und <|speaker:1|> mit einer geordneten Liste von Stimmkennungen oder getrennten Referenzgruppen für die Sprecher. Die numerische Markierung wählt den entsprechenden Stimmeintrag; halten Sie die Reihenfolge im Gespräch fest. Natürlichsprachliche Vortragsanweisungen und Sprecherauswahl haben verschiedene Aufgaben im Skript.\n\nDie Audioausgabe kann MP3, WAV, rohes PCM oder Opus sein. MP3 hat standardmässig 128 kbps und bietet 64 oder 192 kbps; Opus verwendet 48 kHz, WAV und PCM unterstützen ihre dokumentierten Abtastraten als 16-Bit-Mono. Wählen Sie das Format für seinen tatsächlichen Zielort: eine gespeicherte Datei für Sprechertexte oder geeignete Audioabschnitte für die Wiedergabe. Der Sprachablauf des Herstellers beschreibt ausserdem Live-Textstreaming, wenn das Skript schrittweise eintrifft. Das erzeugte Ergebnis sollte dem vollständigen Skript und den gewählten Stimmen zugeordnet bleiben.\n\nDie Geschwindigkeit lässt sich zwischen 0,5 und 2,0 anpassen, mit Reglern für Lautstärke und Normalisierung der Ausgabelautheit. Textnormalisierung verbessert die Aussprache englischer und chinesischer Zahlen. Die Verarbeitung verwendet Abschnitte im Bereich 100–300 und ein Audiotokenbudget je Abschnitt; diese Einstellungen bedeuten deshalb keine feste Maximallänge für einen gesamten Sprechertext. Konditionierung durch den vorherigen Abschnitt kann Stimmkontext in das nächste Segment übernehmen. Sampling-Regler wie temperature und top-p beeinflussen die Variation; auch eine gezielt angeleitete Zeile benötigt ausreichend Text und Kontext für den beabsichtigten Klang.\n\nEin brauchbares Produktionsbriefing trennt Sprechertext, Dialog und Vortragsanweisungen und benennt dann Stimme und Format des entstehenden Ergebnisses. Achten Sie beim Anhören auf fehlende Wörter, wiederholtes Audio, Zahlenaussprache, Sprecherwechsel und den Zeitpunkt einer Reaktion. Überarbeiten Sie die verantwortliche Zeile oder Stimmreferenz, statt anzunehmen, mehr Tags verbesserten jede Passage. S2 Pro bleibt ein eigenständiges Modell der vorherigen S2-Generation; S2.1 Pro ist die spätere Edition mit eigenen Verbesserungen und modellspezifischem Einstellungsverhalten.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "d5c0acad6930282a7090787dfab6296cf9af8169074db83f782e655f8978b57b",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "de-ch",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Fish Audio: S2 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Schliessen\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/s2-pro</code><button type=\"button\" id=\"copy-id\">ID kopieren</button></div><nav class=\"card-jump-nav\" aria-label=\"Bereiche der Modellkarte\"><button type=\"button\" data-card-jump=\"overview\">Einstieg</button><button type=\"button\" data-card-jump=\"methods\">Eingaben und Methoden</button><button type=\"button\" data-card-jump=\"pricing\">Tarife</button><button type=\"button\" data-card-jump=\"examples\">Beispiele</button><button type=\"button\" data-card-jump=\"results\">Ergebnisse</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%2Fs2-pro\">Sprachausgabe</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\">Einstieg</h3><p class=\"mdesc-full\">Fish Audio S2 Pro erzeugt ausdrucksstarke mehrsprachige Sprache mit Anweisungen auf Wortebene und nativen Dialogen mit mehreren Sprechern. Anweisungen in eckigen Klammern steuern den Vortrag im Skript; Stimmreferenzen identifizieren die Sprecher und Ausgabeeinstellungen formen das Audioergebnis.</p><dl class=\"card-io\" data-card-io><div><dt>Zulässige Eingaben</dt><dd>Text</dd></div><div><dt>Ergebnisse</dt><dd>Audio</dd></div></dl><details class=\"card-about\"><summary>Über das Modell</summary><p class=\"note-s\" data-model-method-boundary>Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.</p><div class=\"mabout\" id=\"m-about\"><p>S2 Pro ist Fish Audios Text-zu-Sprache-Modell der zweiten Generation für ausdrucksstarke Sprechertexte, Figurendialoge und gesprächsorientierte Sprachausgabe. Es wandelt ein schriftliches Skript in Audio um und unterstützt natürlichsprachliche Anweisungen auf Wort- oder Phrasenebene. Die vorherige S1-Generation verwendet Hinweise in runden Klammern; S2 Pro verwendet nativ eckige Klammern und unterstützt mehrere Sprecher innerhalb einer Syntheseanfrage. Der Hersteller veröffentlicht S2-Pro-Gewichte und Fine-Tuning-Code für gesonderte Anpassungsarbeit. Eine gewöhnliche Sprachanfrage verwendet das gewählte Modell, statt ein neues zu trainieren.</p><p>Schreiben Sie zuerst den Sprechtext und setzen Sie dann eine Vortragsanweisung unmittelbar vor das Wort oder die Phrase, auf die sie wirken soll. Anweisungen können Flüstern, eine Reaktion, eine Pause, einen Gefühlswechsel oder einen frei beschriebenen Sprechstil benennen. Halten Sie bei einer kurzen Produkterklärung den sachlichen Satz klar und betonen Sie nur dort, wo der Zuhörer einen Unterschied bemerken soll. Beschreiben Sie bei einer Figurenzeile den emotionalen Wechsel an der Stelle seines Auftretens, statt der ganzen Passage eine feste Stimmung zu geben.</p><p>Tags in eckigen Klammern sind frei formulierte Beschreibungen statt eines geschlossenen Menüs. Beispiele sind [whispering], [sigh], [long pause] und eine Phrase wie [speaking slowly, almost hesitant]. Tags können innerhalb eines Satzes stehen und beeinflussen die folgende Sprache. Auf einen beschreibenden Tag muss tatsächlicher Text folgen; eine alleinstehende Anweisung kann unvorhersehbare Ausgabe erzeugen. Beginnen Sie mit ein oder zwei nützlichen Anweisungen, bevor Sie weitere Ebenen hinzufügen, da konkurrierende Tags den beabsichtigten Vortrag verwischen können. Verschiedene Stimmreferenzen reagieren möglicherweise unterschiedlich stark auf dieselbe Anweisung.</p><p>Die S2-Veröffentlichung beschreibt ungefähr 80 Sprachen und zeigt Vortragsanweisungen in derselben Sprache wie das Skript. Bereiten Sie den Wortlaut in der zu sprechenden Sprache vor und bewahren Sie Namen, Einheiten und Abkürzungen mit besonderer Aussprache. Eine mehrsprachige Vertonung kann beim Wechsel der Skriptsprache ihre gewünschte Stimme behalten; das Endergebnis muss dennoch auf Aussprache und Kontinuität angehört werden. Die Synthese gibt gelieferte Inhalte als Sprache aus, statt zu entscheiden, welche Informationen die Anwendung sagen soll.</p><p>Wählen Sie für einen einzelnen Sprecher eine gespeicherte Stimmkennung oder liefern Sie Referenzaudio und das passende Transkript. Der Hersteller empfiehlt eine saubere Probe von 10–30 Sekunden für sofortige Konditionierung. Verwenden Sie für Dialoge Sprechermarkierungen wie &lt;|speaker:0|&gt; und &lt;|speaker:1|&gt; mit einer geordneten Liste von Stimmkennungen oder getrennten Referenzgruppen für die Sprecher. Die numerische Markierung wählt den entsprechenden Stimmeintrag; halten Sie die Reihenfolge im Gespräch fest. Natürlichsprachliche Vortragsanweisungen und Sprecherauswahl haben verschiedene Aufgaben im Skript.</p><p>Die Audioausgabe kann MP3, WAV, rohes PCM oder Opus sein. MP3 hat standardmässig 128 kbps und bietet 64 oder 192 kbps; Opus verwendet 48 kHz, WAV und PCM unterstützen ihre dokumentierten Abtastraten als 16-Bit-Mono. Wählen Sie das Format für seinen tatsächlichen Zielort: eine gespeicherte Datei für Sprechertexte oder geeignete Audioabschnitte für die Wiedergabe. Der Sprachablauf des Herstellers beschreibt ausserdem Live-Textstreaming, wenn das Skript schrittweise eintrifft. Das erzeugte Ergebnis sollte dem vollständigen Skript und den gewählten Stimmen zugeordnet bleiben.</p><p>Die Geschwindigkeit lässt sich zwischen 0,5 und 2,0 anpassen, mit Reglern für Lautstärke und Normalisierung der Ausgabelautheit. Textnormalisierung verbessert die Aussprache englischer und chinesischer Zahlen. Die Verarbeitung verwendet Abschnitte im Bereich 100–300 und ein Audiotokenbudget je Abschnitt; diese Einstellungen bedeuten deshalb keine feste Maximallänge für einen gesamten Sprechertext. Konditionierung durch den vorherigen Abschnitt kann Stimmkontext in das nächste Segment übernehmen. Sampling-Regler wie temperature und top-p beeinflussen die Variation; auch eine gezielt angeleitete Zeile benötigt ausreichend Text und Kontext für den beabsichtigten Klang.</p><p>Ein brauchbares Produktionsbriefing trennt Sprechertext, Dialog und Vortragsanweisungen und benennt dann Stimme und Format des entstehenden Ergebnisses. Achten Sie beim Anhören auf fehlende Wörter, wiederholtes Audio, Zahlenaussprache, Sprecherwechsel und den Zeitpunkt einer Reaktion. Überarbeiten Sie die verantwortliche Zeile oder Stimmreferenz, statt anzunehmen, mehr Tags verbesserten jede Passage. S2 Pro bleibt ein eigenständiges Modell der vorherigen S2-Generation; S2.1 Pro ist die spätere Edition mit eigenen Verbesserungen und modellspezifischem Einstellungsverhalten.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">In Ailoot verfügbar · Eingaben und Methoden</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Sprache</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Eingabe</dt><dd><code>text</code></dd></div><div><dt>Ausgabe</dt><dd><code>audio</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Feld</th><th>Typ</th><th>Anforderung</th><th>Werte und Limits</th><th>Standard</th></tr></thead><tbody><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>fish-audio/s2-pro</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>Mindestlänge: 1</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>b347db033a6549378b48d00acb0d06cd</div><div>Mindestlänge: 1</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>mp3, pcm</div></td><td data-cell-label=\"Standard\" data-default=\"known\"><span class=\"card-cell-label\">Standard</span>pcm</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Methodenparameter und Lebenszyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Vertrag</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=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</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=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</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=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>text</td></tr></tbody></table></div><p>Lebenszyklus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · die tatsächlich zurückgegebene task_id oder ein Eintrag in der Medienbibliothek</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></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarife</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.</p><dl data-price-conditions><dt>Schnellmodus</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn der Schnellmodus ausgewählt ist</span></dd><dt>Flex-Modus</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn der Modus flex ausgewählt ist</span></dd><dt>Maximaler Denkaufwand</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-Tarife</h4><h4>Preise nach Konfiguration</h4><p class=\"note-s\">Ordnen Sie jede Gebühr den angezeigten Bedingungen zu. Verwenden Sie für jede Gruppe alternativer Konfigurationen einen Tarif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Tarifstaffel</th><th>Abrechnungseinheit</th><th>Gebühr</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Token-Basistarife</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>Grundtarif</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>—</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Eingabetoken</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Ausgabe · Ausgabetoken</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · Cache lesen</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · Cache schreiben</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · Cache schreiben, 1 Stunde</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>UTF-8-Eingabebyte</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro UTF-8-Byte der Eingabe</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · UTF-8-Eingabebyte</span> <b>$0.00003</b> <span class=\"price-unit\">pro UTF-8-Byte der Eingabe</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschliessenden Verbrauchsdatensatzes. <a href=\"/docs/de-ch/billing/reserve/\">So funktionieren Reservierung und Abrechnung →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Beispielanfragen</h3><h4>Ailoot Ultra · Sprache</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-1355-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1355-panel-0\" aria-selected=\"true\" tabindex=\"0\">Echte Eingabedaten verwenden und das vollständige Ergebnis speichern</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopieren\"><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-1355-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1355-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_TEXT:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_TEXT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;fish-audio/s2-pro&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#39;, &#39;voice&#39;: &#39;b347db033a6549378b48d00acb0d06cd&#39;, &#39;response_format&#39;: &#39;mp3&#39;}\nrequest[&#39;input&#39;]=os.environ[&#39;AILOOT_INPUT_TEXT&#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# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Ergebnisse abrufen und speichern</h3><h4>Ailoot Ultra · Sprache</h4><p class=\"note-s\">Vollständige binäre Audiodaten oder ursprüngliche audio_url-Antwort, Header und jedes Ihnen zugeordnete Asset.</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>Abrufe anderer Inhalte</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1356-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1356-panel-0\" aria-selected=\"true\" tabindex=\"0\">Vorhandene eigene Dateien abrufen</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopieren\"><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-1356-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1356-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Alle fertiggestellten Ergebnisse aufbewahren</h5><p class=\"note-s\">Bewahren Sie jede vollständig zurückgegebene Antwort, Datei und jeden Inhaltsteil auf.</p><p class=\"note-s\">Die vollständige Antwort und ihre Header, jede tatsächliche Ausgabe, die ursprünglich zurückgegebenen Kennungen und alle Nutzungsfelder aufbewahren. Den ursprünglichen Vorgang wiederaufnehmen, ohne die Erstellung erneut anzufordern.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Wenn die ursprüngliche Antwort geprüft werden muss</h5><p class=\"note-s\">Die zurückgegebene X-Client-Request-ID zum Abgleich aufbewahren. Nur tatsächlich zurückgegebene task_id-/asset_id-Werte oder die eigene Medienbibliothek abfragen; niemals eine Aufgaben-URL aus der Vorgangs-ID bilden und die Erstellung niemals erneut anfordern.</p></div></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasnamen</h3><h4>Modellaliasnamen</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Fs2-pro&amp;route=Ultra&amp;caller=fish-audio%2Fs2-pro&amp;fmt=speech\"><code>fish-audio/s2-pro</code></a></span></p><h4>Aliasnamen für Methodenpfade</h4><p class=\"note-s\">Verwenden Sie die oben angezeigten Methodenpfade.</p><h4>Zugehörige Aufrufer-IDs</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Fs2-pro&amp;route=Ultra&amp;caller=fish-audio%2Fs2-pro&amp;fmt=speech\"><code>fish-audio/s2-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/s2-pro",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "fish-audio/s2-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|fish-audio%2Fs2-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "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": "Die zurückgegebene X-Client-Request-ID zum Abgleich aufbewahren. Nur tatsächlich zurückgegebene task_id-/asset_id-Werte oder die eigene Medienbibliothek abfragen; niemals eine Aufgaben-URL aus der Vorgangs-ID bilden und die Erstellung niemals erneut anfordern."
            },
            "outputs": {
              "all_results": "Die vollständige Antwort und ihre Header, jede tatsächliche Ausgabe, die ursprünglich zurückgegebenen Kennungen und alle Nutzungsfelder aufbewahren. Den ursprünglichen Vorgang wiederaufnehmen, ohne die Erstellung erneut anzufordern.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Vollständige binäre Audiodaten oder ursprüngliche audio_url-Antwort, Header und jedes Ihnen zugeordnete Asset."
            },
            "parameters": [
              {
                "enum": [
                  "fish-audio/s2-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s2-pro"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "b347db033a6549378b48d00acb0d06cd"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "fish-audio/s2-pro",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "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": "die tatsächlich zurückgegebene task_id oder ein Eintrag in der Medienbibliothek",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "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": {
              "quoted_unit": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 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}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s2-pro', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\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# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Sprache",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "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": {
              "quoted_unit": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 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/s2-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "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_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/s2-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "916fa9a9bad5d8bbaf50eac7ed16d6826c2f8c3ae7231fe155e92a8924639b4f",
    "input_html_sha256": "d8fe61f116f7762487d2d0e32c52fa7e265118c9683f05fc042e5b0ad854be43",
    "private_audit_sha256": "b1059e4db932fa043aad0b954975e7bb84bba3f3b29f02ca407fbc7875cea177",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/de-ch/fish-audio-s2-pro/",
    "description": "Fish Audio S2 Pro erzeugt ausdrucksstarke mehrsprachige Sprache mit Anweisungen auf Wortebene und nativen Dialogen mit mehreren Sprechern. Anweisungen in eckigen Klammern steuern den Vortrag im Skript; Stimmreferenzen identifizieren die Sprecher und Ausgabeeinstellungen formen das Audioergebnis.",
    "locale": "de-ch",
    "md_url": "https://ailoot.ai/models/de-ch/fish-audio-s2-pro/index.md",
    "title": "Fish Audio: S2 Pro — Ailoot",
    "url": "https://ailoot.ai/models/de-ch/fish-audio-s2-pro/"
  },
  "rawModel": {
    "about": "S2 Pro ist Fish Audios Text-zu-Sprache-Modell der zweiten Generation für ausdrucksstarke Sprechertexte, Figurendialoge und gesprächsorientierte Sprachausgabe. Es wandelt ein schriftliches Skript in Audio um und unterstützt natürlichsprachliche Anweisungen auf Wort- oder Phrasenebene. Die vorherige S1-Generation verwendet Hinweise in runden Klammern; S2 Pro verwendet nativ eckige Klammern und unterstützt mehrere Sprecher innerhalb einer Syntheseanfrage. Der Hersteller veröffentlicht S2-Pro-Gewichte und Fine-Tuning-Code für gesonderte Anpassungsarbeit. Eine gewöhnliche Sprachanfrage verwendet das gewählte Modell, statt ein neues zu trainieren.\n\nSchreiben Sie zuerst den Sprechtext und setzen Sie dann eine Vortragsanweisung unmittelbar vor das Wort oder die Phrase, auf die sie wirken soll. Anweisungen können Flüstern, eine Reaktion, eine Pause, einen Gefühlswechsel oder einen frei beschriebenen Sprechstil benennen. Halten Sie bei einer kurzen Produkterklärung den sachlichen Satz klar und betonen Sie nur dort, wo der Zuhörer einen Unterschied bemerken soll. Beschreiben Sie bei einer Figurenzeile den emotionalen Wechsel an der Stelle seines Auftretens, statt der ganzen Passage eine feste Stimmung zu geben.\n\nTags in eckigen Klammern sind frei formulierte Beschreibungen statt eines geschlossenen Menüs. Beispiele sind [whispering], [sigh], [long pause] und eine Phrase wie [speaking slowly, almost hesitant]. Tags können innerhalb eines Satzes stehen und beeinflussen die folgende Sprache. Auf einen beschreibenden Tag muss tatsächlicher Text folgen; eine alleinstehende Anweisung kann unvorhersehbare Ausgabe erzeugen. Beginnen Sie mit ein oder zwei nützlichen Anweisungen, bevor Sie weitere Ebenen hinzufügen, da konkurrierende Tags den beabsichtigten Vortrag verwischen können. Verschiedene Stimmreferenzen reagieren möglicherweise unterschiedlich stark auf dieselbe Anweisung.\n\nDie S2-Veröffentlichung beschreibt ungefähr 80 Sprachen und zeigt Vortragsanweisungen in derselben Sprache wie das Skript. Bereiten Sie den Wortlaut in der zu sprechenden Sprache vor und bewahren Sie Namen, Einheiten und Abkürzungen mit besonderer Aussprache. Eine mehrsprachige Vertonung kann beim Wechsel der Skriptsprache ihre gewünschte Stimme behalten; das Endergebnis muss dennoch auf Aussprache und Kontinuität angehört werden. Die Synthese gibt gelieferte Inhalte als Sprache aus, statt zu entscheiden, welche Informationen die Anwendung sagen soll.\n\nWählen Sie für einen einzelnen Sprecher eine gespeicherte Stimmkennung oder liefern Sie Referenzaudio und das passende Transkript. Der Hersteller empfiehlt eine saubere Probe von 10–30 Sekunden für sofortige Konditionierung. Verwenden Sie für Dialoge Sprechermarkierungen wie <|speaker:0|> und <|speaker:1|> mit einer geordneten Liste von Stimmkennungen oder getrennten Referenzgruppen für die Sprecher. Die numerische Markierung wählt den entsprechenden Stimmeintrag; halten Sie die Reihenfolge im Gespräch fest. Natürlichsprachliche Vortragsanweisungen und Sprecherauswahl haben verschiedene Aufgaben im Skript.\n\nDie Audioausgabe kann MP3, WAV, rohes PCM oder Opus sein. MP3 hat standardmässig 128 kbps und bietet 64 oder 192 kbps; Opus verwendet 48 kHz, WAV und PCM unterstützen ihre dokumentierten Abtastraten als 16-Bit-Mono. Wählen Sie das Format für seinen tatsächlichen Zielort: eine gespeicherte Datei für Sprechertexte oder geeignete Audioabschnitte für die Wiedergabe. Der Sprachablauf des Herstellers beschreibt ausserdem Live-Textstreaming, wenn das Skript schrittweise eintrifft. Das erzeugte Ergebnis sollte dem vollständigen Skript und den gewählten Stimmen zugeordnet bleiben.\n\nDie Geschwindigkeit lässt sich zwischen 0,5 und 2,0 anpassen, mit Reglern für Lautstärke und Normalisierung der Ausgabelautheit. Textnormalisierung verbessert die Aussprache englischer und chinesischer Zahlen. Die Verarbeitung verwendet Abschnitte im Bereich 100–300 und ein Audiotokenbudget je Abschnitt; diese Einstellungen bedeuten deshalb keine feste Maximallänge für einen gesamten Sprechertext. Konditionierung durch den vorherigen Abschnitt kann Stimmkontext in das nächste Segment übernehmen. Sampling-Regler wie temperature und top-p beeinflussen die Variation; auch eine gezielt angeleitete Zeile benötigt ausreichend Text und Kontext für den beabsichtigten Klang.\n\nEin brauchbares Produktionsbriefing trennt Sprechertext, Dialog und Vortragsanweisungen und benennt dann Stimme und Format des entstehenden Ergebnisses. Achten Sie beim Anhören auf fehlende Wörter, wiederholtes Audio, Zahlenaussprache, Sprecherwechsel und den Zeitpunkt einer Reaktion. Überarbeiten Sie die verantwortliche Zeile oder Stimmreferenz, statt anzunehmen, mehr Tags verbesserten jede Passage. S2 Pro bleibt ein eigenständiges Modell der vorherigen S2-Generation; S2.1 Pro ist die spätere Edition mit eigenen Verbesserungen und modellspezifischem Einstellungsverhalten.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00003",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ],
        "summary": "Die vollständigen Preisangaben zur Konfiguration finden Sie in den Details."
      }
    ],
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "fish-audio/s2-pro",
    "input": [
      "text"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "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": "Die zurückgegebene X-Client-Request-ID zum Abgleich aufbewahren. Nur tatsächlich zurückgegebene task_id-/asset_id-Werte oder die eigene Medienbibliothek abfragen; niemals eine Aufgaben-URL aus der Vorgangs-ID bilden und die Erstellung niemals erneut anfordern."
            },
            "outputs": {
              "all_results": "Die vollständige Antwort und ihre Header, jede tatsächliche Ausgabe, die ursprünglich zurückgegebenen Kennungen und alle Nutzungsfelder aufbewahren. Den ursprünglichen Vorgang wiederaufnehmen, ohne die Erstellung erneut anzufordern.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Vollständige binäre Audiodaten oder ursprüngliche audio_url-Antwort, Header und jedes Ihnen zugeordnete Asset."
            },
            "parameters": [
              {
                "enum": [
                  "fish-audio/s2-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s2-pro"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "b347db033a6549378b48d00acb0d06cd"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "fish-audio/s2-pro",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "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": "die tatsächlich zurückgegebene task_id oder ein Eintrag in der Medienbibliothek",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "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": {
              "quoted_unit": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 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}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s2-pro', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\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# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Sprache",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "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": {
              "quoted_unit": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 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/s2-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "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_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 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/s2-pro",
        "request_model_id": "fish-audio/s2-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: S2 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Fish Audio S2 Pro erzeugt ausdrucksstarke mehrsprachige Sprache mit Anweisungen auf Wortebene und nativen Dialogen mit mehreren Sprechern. Anweisungen in eckigen Klammern steuern den Vortrag im Skript; Stimmreferenzen identifizieren die Sprecher und Ausgabeeinstellungen formen das Audioergebnis."
  },
  "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 S2 Pro erzeugt ausdrucksstarke mehrsprachige Sprache mit Anweisungen auf Wortebene und nativen Dialogen mit mehreren Sprechern. Anweisungen in eckigen Klammern steuern den Vortrag im Skript; Stimmreferenzen identifizieren die Sprecher und Ausgabeeinstellungen formen das Audioergebnis.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "20dd6c4a1e2f3da89cfe42134578903c837603ef1dc30cc4c3851d7fba91bf40",
    "renderer_sha256": "76caa42c097db2ddc47d1e1e6fe7ca45c8363d7211296daf28e4352971e6c0c8"
  },
  "sourceRevision": "a945387166198846d4fbeecba85dfebe9f117c6c794ad87dde936b14a5474ec9"
}
