{
  "aboutHtml": "<p>ByteDance Seed Audio 1.0 on äänikohtauksen ympärille jäsennetty äänenluontimalli. Puhetta, tehosteita ja taustaääniä voidaan muotoilla yhdessä tekstimuotoisella tehtävänannolla. Siksi se sopii puhuttuun tarinaan, pelikohtaamiseen, lyhyeen dramaattiseen keskusteluun tai editoitua videota täydentävään kohtaukseen. Kuvaa pelkässä puhetehtävässä puhuja ja esitys; laajemmassa kohtauksessa kuvaa myös akustinen ympäristö sekä dialogin ja ympäröivien äänten suhde.</p><p>Valmistele tehtävänanto siinä järjestyksessä, jossa kuulijan pitäisi kokea kohtaus. Yksilöi hahmot, niiden tavoiteltu tunnetila ja sanat, jotka niiden pitää sanoa. Kuvaa sitten tila, tärkeät äänivihjeet ja hetken kehittyminen. Tuotantotehtävänannon pitää erottaa tarkka dialogi kohtauskuvauksesta, jotta tulosta voidaan verrata kumpaankin. Kerro, mitkä elementit ovat ymmärtämisen kannalta välttämättömiä ja mitkä jäävät taustalle. Hiljainen huone, ruuhkainen asema ja avoin sisäpiha tarvitsevat erilaisen äänisuunnittelun, vaikka puhuttu repliikki olisi sama.</p><p>Oma esimerkki on pelihahmo, joka rauhoittaa kumppaniaan lyhyessä suojautumiskohtauksessa: hillitty ääni sanoo ”Voimme odottaa täällä”, taustalla kuuluu hiljaista sadetta ja repliikin jälkeen yksi lähestyvä askel. Hyödyllinen kuuntelutarkistus selvittää, pysyvätkö sanat ymmärrettävinä, välittääkö ääni rauhoittavuutta ja saapuuko vihje järkevään kohtaan. Toinen tehtävänanto voisi pyytää selkeää kertojaa esittelemään tuotteen ilman ympäröivää äänimaisemaa. Nämä havainnollistavat tapoja määritellä tarkoitus eivätkä ole tallenteita tuotetusta äänestä tai lupauksia valmiista miksauksesta.</p><p>Valmistaja dokumentoi kehoteohjatun ajoituksen hahmodialogille 100 ms:n välein. Kuvaa tällä ohjauksella repliikin aloitus käsikirjoitetussa jaksossa tai suunnittele puhetta olemassa olevaan editointiin. Pidä dialogin ajoitus erillään tehosteiden ja taustaäänten sijoittelusta: julkaisu nimeää ajoitusohjauksen pääkohteeksi hahmodialogin. Tarkista todelliset aloitukset, tauot ja päällekkäisyydet aiottua kohtausta vasten. Ajoitusväli kuvaa mallin ohjauksen tarkkuutta eikä poista tarvetta kuunnella lopullinen esitys.</p><p>Ääni voidaan määritellä tekstikuvauksella, luvallisella viitenäytteellä tai molemmilla. Valmistaja esittää tämän äänen muotoiluna ilman erillisen mallin koulutusta jokaiselle puhujalle. Kuvaa pysyvät ääniominaisuudet erillään nykyisen repliikin tunteesta. Toistuva hahmo voi tarvita rauhallisen esittelyn ja kiireellisen vastauksen mutta pysyä silti tunnistettavana. Valitse käytännön valmistelussa selkeä viite, josta tavoiteääni kuuluu helposti, ja yksilöi uuteen esitykseen siirrettävät piirteet. Pidä viite ja hahmokuvaus yhdenmukaisina valmistellessasi toisiinsa liittyviä kohtauksia.</p><p>Julkaisu dokumentoi generoinnin yli 20 kielellä, kuten kiinaksi, englanniksi, japaniksi, koreaksi, espanjaksi, indonesiaksi, saksaksi, ranskaksi, thaiksi ja vietnamiksi. Se kuvaa tunnistettavan hahmoäänen mukauttamista eri kielten rytmiin ja ilmaisuun. Anna lopullisen kielen dialogi ja tarkista nimet, painotukset, tauot ja tunnetaso kieltä ymmärtävän kuulijan kanssa. Pidä monikielisissä versioissa hahmon rooli ja tunnetarkoitus vakaina, mutta anna jokaiselle käsikirjoitukselle riittävästi tilaa luonnolliseen ilmaisuun. Valmistele käännös osana käsikirjoitustyötä sen sijaan, että olettaisit äänikohtauksen tehtävänannon kattavan kaikki lokalisointipäätökset.</p><p>Valmistajan julkaisun mukaan Seed Audio 1.0 voi tuottaa enintään kaksi minuuttia yhdellä ajolla ja tukee jatkamista. Pidempi tarina hyötyy kohtausrajoista ja uudelleenkäytettävästä hahmokuvauksesta. Kuuntele jokaisessa jatkossa äänen, taustan soinnin ja tahdin muutokset sekä osioita yhdistävät sanat. Käsittele palautettua ääntä kuunneltavana aineistona: tarkista sen todelliset tiedostotiedot valmistellessasi toistoa tai tuontia editoriin, ja säilytä käsikirjoitus ja kohtauskuvaus sen rinnalla muokkausta varten. Yhdistetty tuotanto pitää tarkistaa yhtenä jatkuvana kohtauksena, ei vain erillisinä leikkeinä.</p><p>Valmistaja kuvaa yhtenäistä kehystä, jossa kielellinen luova tarkoitus ohjaa diffuusiopohjaista akustista generaattoria. Käytännössä tämä tarkoittaa tehtävänannolle sitä, että ääntä ja ympäristöä voidaan ajatella yhdessä. Keskity muutamiin kohtauksen määrittäviin suhteisiin: onko repliikki etualalla, keskeyttääkö tehoste sen ja miten äänimaisema tukee tunnehetkeä. Monien irrallisten vihjeiden lisääminen vaikeuttaa sen tunnistamista, mitä tuloksen osaa pitäisi muuttaa. Muuta kyseisen katkelman ohjausta, jos vihje kilpailee dialogin kanssa tai esitys ei tavoita tarkoitettua sävyä.</p><p>Äänen jatkuvuus pitkässä, monimutkaisessa aineistossa ja äänielementtien hienompi ajoitus ovat julkaisun nimeämiä kehitysalueita. Pidä tuotantotarkistus täsmällisenä: tarkat sanat, puhujan identiteetti, kieli, sisääntulot, ymmärrettävyys ja yhdenmukaisuus jatkojen välillä. Tämän mallin hyödyllinen tulos on kuultava kohtaus tai puhuttu esitys. Editointileikkauksia, tekstityksiä ja toimitusmuotoa koskevat erilliset päätökset voidaan tehdä todellisen tuloksen ja kohdetuotannon vaatimusten perusteella.</p>",
  "aboutText": "ByteDance Seed Audio 1.0 on äänikohtauksen ympärille jäsennetty äänenluontimalli. Puhetta, tehosteita ja taustaääniä voidaan muotoilla yhdessä tekstimuotoisella tehtävänannolla. Siksi se sopii puhuttuun tarinaan, pelikohtaamiseen, lyhyeen dramaattiseen keskusteluun tai editoitua videota täydentävään kohtaukseen. Kuvaa pelkässä puhetehtävässä puhuja ja esitys; laajemmassa kohtauksessa kuvaa myös akustinen ympäristö sekä dialogin ja ympäröivien äänten suhde.\n\nValmistele tehtävänanto siinä järjestyksessä, jossa kuulijan pitäisi kokea kohtaus. Yksilöi hahmot, niiden tavoiteltu tunnetila ja sanat, jotka niiden pitää sanoa. Kuvaa sitten tila, tärkeät äänivihjeet ja hetken kehittyminen. Tuotantotehtävänannon pitää erottaa tarkka dialogi kohtauskuvauksesta, jotta tulosta voidaan verrata kumpaankin. Kerro, mitkä elementit ovat ymmärtämisen kannalta välttämättömiä ja mitkä jäävät taustalle. Hiljainen huone, ruuhkainen asema ja avoin sisäpiha tarvitsevat erilaisen äänisuunnittelun, vaikka puhuttu repliikki olisi sama.\n\nOma esimerkki on pelihahmo, joka rauhoittaa kumppaniaan lyhyessä suojautumiskohtauksessa: hillitty ääni sanoo ”Voimme odottaa täällä”, taustalla kuuluu hiljaista sadetta ja repliikin jälkeen yksi lähestyvä askel. Hyödyllinen kuuntelutarkistus selvittää, pysyvätkö sanat ymmärrettävinä, välittääkö ääni rauhoittavuutta ja saapuuko vihje järkevään kohtaan. Toinen tehtävänanto voisi pyytää selkeää kertojaa esittelemään tuotteen ilman ympäröivää äänimaisemaa. Nämä havainnollistavat tapoja määritellä tarkoitus eivätkä ole tallenteita tuotetusta äänestä tai lupauksia valmiista miksauksesta.\n\nValmistaja dokumentoi kehoteohjatun ajoituksen hahmodialogille 100 ms:n välein. Kuvaa tällä ohjauksella repliikin aloitus käsikirjoitetussa jaksossa tai suunnittele puhetta olemassa olevaan editointiin. Pidä dialogin ajoitus erillään tehosteiden ja taustaäänten sijoittelusta: julkaisu nimeää ajoitusohjauksen pääkohteeksi hahmodialogin. Tarkista todelliset aloitukset, tauot ja päällekkäisyydet aiottua kohtausta vasten. Ajoitusväli kuvaa mallin ohjauksen tarkkuutta eikä poista tarvetta kuunnella lopullinen esitys.\n\nÄäni voidaan määritellä tekstikuvauksella, luvallisella viitenäytteellä tai molemmilla. Valmistaja esittää tämän äänen muotoiluna ilman erillisen mallin koulutusta jokaiselle puhujalle. Kuvaa pysyvät ääniominaisuudet erillään nykyisen repliikin tunteesta. Toistuva hahmo voi tarvita rauhallisen esittelyn ja kiireellisen vastauksen mutta pysyä silti tunnistettavana. Valitse käytännön valmistelussa selkeä viite, josta tavoiteääni kuuluu helposti, ja yksilöi uuteen esitykseen siirrettävät piirteet. Pidä viite ja hahmokuvaus yhdenmukaisina valmistellessasi toisiinsa liittyviä kohtauksia.\n\nJulkaisu dokumentoi generoinnin yli 20 kielellä, kuten kiinaksi, englanniksi, japaniksi, koreaksi, espanjaksi, indonesiaksi, saksaksi, ranskaksi, thaiksi ja vietnamiksi. Se kuvaa tunnistettavan hahmoäänen mukauttamista eri kielten rytmiin ja ilmaisuun. Anna lopullisen kielen dialogi ja tarkista nimet, painotukset, tauot ja tunnetaso kieltä ymmärtävän kuulijan kanssa. Pidä monikielisissä versioissa hahmon rooli ja tunnetarkoitus vakaina, mutta anna jokaiselle käsikirjoitukselle riittävästi tilaa luonnolliseen ilmaisuun. Valmistele käännös osana käsikirjoitustyötä sen sijaan, että olettaisit äänikohtauksen tehtävänannon kattavan kaikki lokalisointipäätökset.\n\nValmistajan julkaisun mukaan Seed Audio 1.0 voi tuottaa enintään kaksi minuuttia yhdellä ajolla ja tukee jatkamista. Pidempi tarina hyötyy kohtausrajoista ja uudelleenkäytettävästä hahmokuvauksesta. Kuuntele jokaisessa jatkossa äänen, taustan soinnin ja tahdin muutokset sekä osioita yhdistävät sanat. Käsittele palautettua ääntä kuunneltavana aineistona: tarkista sen todelliset tiedostotiedot valmistellessasi toistoa tai tuontia editoriin, ja säilytä käsikirjoitus ja kohtauskuvaus sen rinnalla muokkausta varten. Yhdistetty tuotanto pitää tarkistaa yhtenä jatkuvana kohtauksena, ei vain erillisinä leikkeinä.\n\nValmistaja kuvaa yhtenäistä kehystä, jossa kielellinen luova tarkoitus ohjaa diffuusiopohjaista akustista generaattoria. Käytännössä tämä tarkoittaa tehtävänannolle sitä, että ääntä ja ympäristöä voidaan ajatella yhdessä. Keskity muutamiin kohtauksen määrittäviin suhteisiin: onko repliikki etualalla, keskeyttääkö tehoste sen ja miten äänimaisema tukee tunnehetkeä. Monien irrallisten vihjeiden lisääminen vaikeuttaa sen tunnistamista, mitä tuloksen osaa pitäisi muuttaa. Muuta kyseisen katkelman ohjausta, jos vihje kilpailee dialogin kanssa tai esitys ei tavoita tarkoitettua sävyä.\n\nÄänen jatkuvuus pitkässä, monimutkaisessa aineistossa ja äänielementtien hienompi ajoitus ovat julkaisun nimeämiä kehitysalueita. Pidä tuotantotarkistus täsmällisenä: tarkat sanat, puhujan identiteetti, kieli, sisääntulot, ymmärrettävyys ja yhdenmukaisuus jatkojen välillä. Tämän mallin hyödyllinen tulos on kuultava kohtaus tai puhuttu esitys. Editointileikkauksia, tekstityksiä ja toimitusmuotoa koskevat erilliset päätökset voidaan tehdä todellisen tuloksen ja kohdetuotannon vaatimusten perusteella.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "5325abf4504b757c969aaa61c093c99e91107aa51ee98d0f456785c80117173b",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fi",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">ByteDance Seed: Seed Audio 1.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>ByteDance Seed /</span><code>bytedance-seed/seed-audio-1-0</code><button type=\"button\" id=\"copy-id\">Kopioi ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Mallikortin osiot\"><button type=\"button\" data-card-jump=\"overview\">Aloitus</button><button type=\"button\" data-card-jump=\"methods\">Syötteet &amp; menetelmät</button><button type=\"button\" data-card-jump=\"pricing\">Hinnoittelu</button><button type=\"button\" data-card-jump=\"examples\">Esimerkit</button><button type=\"button\" data-card-jump=\"results\">Tulokset</button><button type=\"button\" data-card-jump=\"aliases\">Aliakset</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-menetelmät\"><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|bytedance-seed%2Fseed-audio-1-0\">Puhesynteesi</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\">Aloitus</h3><p class=\"mdesc-full\">ByteDance Seed Audio 1.0 tuottaa puhuttuja esityksiä ja äänikohtauksia luovasta tehtävänannosta. Se sovittaa yhteen äänet, tehosteet ja taustaäänet, tukee dialogin ajoitusta 100 ms:n välein ja kattaa yli 20 kieltä. Valmistaja kuvaa enintään kahden minuutin generointia kerrallaan ja jatkamismahdollisuutta.</p><dl class=\"card-io\" data-card-io><div><dt>Hyväksytyt syötteet</dt><dd>Teksti</dd></div><div><dt>Tulokset</dt><dd>Ääni</dd></div></dl><details class=\"card-about\"><summary>Tietoa mallista</summary><p class=\"note-s\" data-model-method-boundary>Tämä kuvaus kattaa mallin ominaisuudet. Ailootissa saatavilla olevat syötteet, tulosteet ja asetukset luetellaan alla valitulle menetelmälle.</p><div class=\"mabout\" id=\"m-about\"><p>ByteDance Seed Audio 1.0 on äänikohtauksen ympärille jäsennetty äänenluontimalli. Puhetta, tehosteita ja taustaääniä voidaan muotoilla yhdessä tekstimuotoisella tehtävänannolla. Siksi se sopii puhuttuun tarinaan, pelikohtaamiseen, lyhyeen dramaattiseen keskusteluun tai editoitua videota täydentävään kohtaukseen. Kuvaa pelkässä puhetehtävässä puhuja ja esitys; laajemmassa kohtauksessa kuvaa myös akustinen ympäristö sekä dialogin ja ympäröivien äänten suhde.</p><p>Valmistele tehtävänanto siinä järjestyksessä, jossa kuulijan pitäisi kokea kohtaus. Yksilöi hahmot, niiden tavoiteltu tunnetila ja sanat, jotka niiden pitää sanoa. Kuvaa sitten tila, tärkeät äänivihjeet ja hetken kehittyminen. Tuotantotehtävänannon pitää erottaa tarkka dialogi kohtauskuvauksesta, jotta tulosta voidaan verrata kumpaankin. Kerro, mitkä elementit ovat ymmärtämisen kannalta välttämättömiä ja mitkä jäävät taustalle. Hiljainen huone, ruuhkainen asema ja avoin sisäpiha tarvitsevat erilaisen äänisuunnittelun, vaikka puhuttu repliikki olisi sama.</p><p>Oma esimerkki on pelihahmo, joka rauhoittaa kumppaniaan lyhyessä suojautumiskohtauksessa: hillitty ääni sanoo ”Voimme odottaa täällä”, taustalla kuuluu hiljaista sadetta ja repliikin jälkeen yksi lähestyvä askel. Hyödyllinen kuuntelutarkistus selvittää, pysyvätkö sanat ymmärrettävinä, välittääkö ääni rauhoittavuutta ja saapuuko vihje järkevään kohtaan. Toinen tehtävänanto voisi pyytää selkeää kertojaa esittelemään tuotteen ilman ympäröivää äänimaisemaa. Nämä havainnollistavat tapoja määritellä tarkoitus eivätkä ole tallenteita tuotetusta äänestä tai lupauksia valmiista miksauksesta.</p><p>Valmistaja dokumentoi kehoteohjatun ajoituksen hahmodialogille 100 ms:n välein. Kuvaa tällä ohjauksella repliikin aloitus käsikirjoitetussa jaksossa tai suunnittele puhetta olemassa olevaan editointiin. Pidä dialogin ajoitus erillään tehosteiden ja taustaäänten sijoittelusta: julkaisu nimeää ajoitusohjauksen pääkohteeksi hahmodialogin. Tarkista todelliset aloitukset, tauot ja päällekkäisyydet aiottua kohtausta vasten. Ajoitusväli kuvaa mallin ohjauksen tarkkuutta eikä poista tarvetta kuunnella lopullinen esitys.</p><p>Ääni voidaan määritellä tekstikuvauksella, luvallisella viitenäytteellä tai molemmilla. Valmistaja esittää tämän äänen muotoiluna ilman erillisen mallin koulutusta jokaiselle puhujalle. Kuvaa pysyvät ääniominaisuudet erillään nykyisen repliikin tunteesta. Toistuva hahmo voi tarvita rauhallisen esittelyn ja kiireellisen vastauksen mutta pysyä silti tunnistettavana. Valitse käytännön valmistelussa selkeä viite, josta tavoiteääni kuuluu helposti, ja yksilöi uuteen esitykseen siirrettävät piirteet. Pidä viite ja hahmokuvaus yhdenmukaisina valmistellessasi toisiinsa liittyviä kohtauksia.</p><p>Julkaisu dokumentoi generoinnin yli 20 kielellä, kuten kiinaksi, englanniksi, japaniksi, koreaksi, espanjaksi, indonesiaksi, saksaksi, ranskaksi, thaiksi ja vietnamiksi. Se kuvaa tunnistettavan hahmoäänen mukauttamista eri kielten rytmiin ja ilmaisuun. Anna lopullisen kielen dialogi ja tarkista nimet, painotukset, tauot ja tunnetaso kieltä ymmärtävän kuulijan kanssa. Pidä monikielisissä versioissa hahmon rooli ja tunnetarkoitus vakaina, mutta anna jokaiselle käsikirjoitukselle riittävästi tilaa luonnolliseen ilmaisuun. Valmistele käännös osana käsikirjoitustyötä sen sijaan, että olettaisit äänikohtauksen tehtävänannon kattavan kaikki lokalisointipäätökset.</p><p>Valmistajan julkaisun mukaan Seed Audio 1.0 voi tuottaa enintään kaksi minuuttia yhdellä ajolla ja tukee jatkamista. Pidempi tarina hyötyy kohtausrajoista ja uudelleenkäytettävästä hahmokuvauksesta. Kuuntele jokaisessa jatkossa äänen, taustan soinnin ja tahdin muutokset sekä osioita yhdistävät sanat. Käsittele palautettua ääntä kuunneltavana aineistona: tarkista sen todelliset tiedostotiedot valmistellessasi toistoa tai tuontia editoriin, ja säilytä käsikirjoitus ja kohtauskuvaus sen rinnalla muokkausta varten. Yhdistetty tuotanto pitää tarkistaa yhtenä jatkuvana kohtauksena, ei vain erillisinä leikkeinä.</p><p>Valmistaja kuvaa yhtenäistä kehystä, jossa kielellinen luova tarkoitus ohjaa diffuusiopohjaista akustista generaattoria. Käytännössä tämä tarkoittaa tehtävänannolle sitä, että ääntä ja ympäristöä voidaan ajatella yhdessä. Keskity muutamiin kohtauksen määrittäviin suhteisiin: onko repliikki etualalla, keskeyttääkö tehoste sen ja miten äänimaisema tukee tunnehetkeä. Monien irrallisten vihjeiden lisääminen vaikeuttaa sen tunnistamista, mitä tuloksen osaa pitäisi muuttaa. Muuta kyseisen katkelman ohjausta, jos vihje kilpailee dialogin kanssa tai esitys ei tavoita tarkoitettua sävyä.</p><p>Äänen jatkuvuus pitkässä, monimutkaisessa aineistossa ja äänielementtien hienompi ajoitus ovat julkaisun nimeämiä kehitysalueita. Pidä tuotantotarkistus täsmällisenä: tarkat sanat, puhujan identiteetti, kieli, sisääntulot, ymmärrettävyys ja yhdenmukaisuus jatkojen välillä. Tämän mallin hyödyllinen tulos on kuultava kohtaus tai puhuttu esitys. Editointileikkauksia, tekstityksiä ja toimitusmuotoa koskevat erilliset päätökset voidaan tehdä todellisen tuloksen ja kohdetuotannon vaatimusten perusteella.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Saatavilla Ailootissa · syötteet &amp; menetelmät</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Puhe</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Syötetyypit</dt><dd><code>text</code></dd></div><div><dt>Tulostyypit</dt><dd><code>audio</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kenttä</th><th>Tyyppi</th><th>Vaatimus</th><th>Arvot &amp; rajat</th><th>Oletus</th></tr></thead><tbody><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>bytedance-seed/seed-audio-1-0</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Vähimmäispituus: 1</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Vähimmäispituus: 1</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>mp3, pcm</div></td><td data-cell-label=\"Oletus\" data-default=\"known\"><span class=\"card-cell-label\">Oletus</span>pcm</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>object</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Valinnainen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Menetelmän parametrit ja elinkaari</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametri</th><th>Sopimus</th></tr></thead><tbody><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>content_type</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>application/json</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>required</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>model, input</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>material_types</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>text</td></tr></tbody></table></div><p>Elinkaari: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · todellisuudessa palautettu task_id tai mediakirjaston tietue</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\">Hinnoittelu</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Hintatiedot eivät lisää pyyntövalintoja. Tuetut parametrit on lueteltu valitulle menetelmälle.</p><dl data-price-conditions><dt>Nopea tila</dt><dd>Ei määritetty <span class=\"note-s\">Kun nopea tila on valittu</span></dd><dt>Flex-tila</dt><dd>Ei määritetty <span class=\"note-s\">Kun flex-tila on valittu</span></dd><dt>Päättelyn enimmäisteho</dt><dd>Ei määritetty <span class=\"note-s\">Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-hinnat</h4><h4>Hinnat asetusten mukaan</h4><p class=\"note-s\">Kohdista kukin veloitus näytettyihin ehtoihin. Käytä yhtä hintaa kutakin vaihtoehtoisten asetusten ryhmää kohden.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Asetukset</th><th>Hinnasto</th><th>Laskutusyksikkö</th><th>Veloitus</th></tr></thead><tbody><tr><th data-cell-label=\"Asetukset\" scope=\"row\"><span class=\"card-cell-label\">Asetukset</span>Tokenien perushinnat</th><td data-cell-label=\"Hinnasto\"><span class=\"card-cell-label\">Hinnasto</span>Perushinta</td><td data-cell-label=\"Laskutusyksikkö\"><span class=\"card-cell-label\">Laskutusyksikkö</span>—</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Syöte · Syötetokenit</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Tuloste · Tulostokenit</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistin luku</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus, 1 tunti</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div></td></tr><tr><th data-cell-label=\"Asetukset\" scope=\"row\"><span class=\"card-cell-label\">Asetukset</span>äänitulosteen sekunti</th><td data-cell-label=\"Hinnasto\"><span class=\"card-cell-label\">Hinnasto</span>—</td><td data-cell-label=\"Laskutusyksikkö\"><span class=\"card-cell-label\">Laskutusyksikkö</span>tulosäänen sekuntia kohden</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Tuloste · äänitulosteen sekunti</span> <b>$0.005</b> <span class=\"price-unit\">tulosäänen sekuntia kohden</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. <a href=\"/docs/fi/billing/reserve/\">Varauksen ja lopullisen veloituksen toiminta →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esimerkkipyynnöt</h3><h4>Ailoot Ultra · Puhe</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Koodivaihtoehdot\"><button class=\"cg-tab\" id=\"model-code-1119-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1119-panel-0\" aria-selected=\"true\" tabindex=\"0\">Käytä todellista syötettä ja säilytä koko tulos</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopioi koodi\"><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-1119-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1119-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;bytedance-seed/seed-audio-1-0&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#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\">Vastaanota ja tallenna tulokset</h3><h4>Ailoot Ultra · Puhe</h4><p class=\"note-s\">Koko binääriääni tai alkuperäinen audio_url-vastaus, otsakkeet ja jokainen käyttäjälle kuuluva aineisto.</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>Muut sisällön lukukerrat</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Koodivaihtoehdot\"><button class=\"cg-tab\" id=\"model-code-1120-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1120-panel-0\" aria-selected=\"true\" tabindex=\"0\">Lue olemassa olevat omistamasi aineistot</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopioi koodi\"><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-1120-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1120-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>Säilytä kaikki valmistuneet tulokset</h5><p class=\"note-s\">Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.</p><p class=\"note-s\">Säilytä koko vastaus ja otsakkeet, jokainen todellinen tuloste, alkuperäiset palautetut tunnisteet ja kaikki käyttötietokentät. Selvitä alkuperäisen operaation tila lähettämättä luontipyyntöä uudelleen.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jos alkuperäinen vastaus on tarkistettava</h5><p class=\"note-s\">Säilytä palautettu X-Client-Request-ID täsmäytystä varten. Tee lukukyselyt vain todellisuudessa palautetuilla task_id/asset_id-arvoilla tai käytä omistamaasi mediakirjastoa; älä koskaan rakenna tehtävän URL-osoitetta operaation ID:n perusteella äläkä lähetä luontipyyntöä uudelleen.</p></div></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliakset</h3><h4>Mallin aliakset</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=bytedance-seed%2Fseed-audio-1-0&amp;route=Ultra&amp;caller=bytedance-seed%2Fseed-audio-1-0&amp;fmt=speech\"><code>bytedance-seed/seed-audio-1-0</code></a></span></p><h4>Menetelmäpolkujen aliakset</h4><p class=\"note-s\">Käytä yllä näytettyjä menetelmäpolkuja.</p><h4>Liittyvät kutsujan ID:t</h4><p class=\"note-s\"><a href=\"#m=bytedance-seed%2Fseed-audio-1-0&amp;route=Ultra&amp;caller=bytedance-seed%2Fseed-audio-1-0&amp;fmt=speech\"><code>bytedance-seed/seed-audio-1-0</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "bytedance-seed/seed-audio-1-0",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "bytedance-seed/seed-audio-1-0",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|bytedance-seed%2Fseed-audio-1-0",
      "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": "Säilytä palautettu X-Client-Request-ID täsmäytystä varten. Tee lukukyselyt vain todellisuudessa palautetuilla task_id/asset_id-arvoilla tai käytä omistamaasi mediakirjastoa; älä koskaan rakenna tehtävän URL-osoitetta operaation ID:n perusteella äläkä lähetä luontipyyntöä uudelleen."
            },
            "outputs": {
              "all_results": "Säilytä koko vastaus ja otsakkeet, jokainen todellinen tuloste, alkuperäiset palautetut tunnisteet ja kaikki käyttötietokentät. Selvitä alkuperäisen operaation tila lähettämättä luontipyyntöä uudelleen.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Koko binääriääni tai alkuperäinen audio_url-vastaus, otsakkeet ja jokainen käyttäjälle kuuluva aineisto."
            },
            "parameters": [
              {
                "enum": [
                  "bytedance-seed/seed-audio-1-0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "max_length": 3000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "voice",
                "required": false,
                "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": {
                  "maxLength": 3000,
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "bytedance-seed/seed-audio-1-0"
                  ],
                  "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": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "bytedance-seed/seed-audio-1-0"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input"
            ]
          },
          "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": "todellisuudessa palautettu task_id tai mediakirjaston tietue",
                "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 output audio second"
            },
            "label": "output audio second",
            "units": [
              {
                "amount": "0.005",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_second",
                "label": "output audio second",
                "native_amount_usd_per_unit": "0.005",
                "native_quantity": 1,
                "public_unit_label": "per output audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_second"
              }
            ]
          }
        ],
        "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': 'bytedance-seed/seed-audio-1-0', 'input': '${ACTUAL_INPUT_TEXT}'}\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": "Puhe",
        "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_output_second": 0.005
          }
        },
        "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 output audio second"
            },
            "label": "output audio second",
            "units": [
              {
                "amount": "0.005",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_second",
                "label": "output audio second",
                "native_amount_usd_per_unit": "0.005",
                "native_quantity": 1,
                "public_unit_label": "per output audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_second"
              }
            ]
          }
        ],
        "request_model_id": "bytedance-seed/seed-audio-1-0",
        "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.005",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_output_second",
            "label": "output audio second",
            "native_amount_usd_per_unit": "0.005",
            "native_quantity": 1,
            "public_unit_label": "per output audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "audio_output_second"
          }
        ]
      }
    }
  ],
  "model_id": "bytedance-seed/seed-audio-1-0",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "d398d07e4f09f1faa6cf29745fe667ae2394ae7df8b24063f4021a38160d1bcd",
    "input_html_sha256": "ef993f67cd034964fdee1b52720d8164660845bdf7806d1cfd1cff87d8f88783",
    "private_audit_sha256": "51a9946a59798247a4715d372b9f3c3f7699e174a27762ec34a3869d7d0d1662",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/bytedance-seed-seed-audio-1-0/",
    "description": "ByteDance Seed Audio 1.0 tuottaa puhuttuja esityksiä ja äänikohtauksia luovasta tehtävänannosta. Se sovittaa yhteen äänet, tehosteet ja taustaäänet, tukee dialogin ajoitusta 100 ms:n välein ja kattaa yli 20 kieltä. Valmistaja kuvaa enintään kahden minuutin generointia kerrallaan ja jatkamismahdollisuutta.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/bytedance-seed-seed-audio-1-0/index.md",
    "title": "ByteDance Seed: Seed Audio 1.0 — Ailoot",
    "url": "https://ailoot.ai/models/fi/bytedance-seed-seed-audio-1-0/"
  },
  "rawModel": {
    "about": "ByteDance Seed Audio 1.0 on äänikohtauksen ympärille jäsennetty äänenluontimalli. Puhetta, tehosteita ja taustaääniä voidaan muotoilla yhdessä tekstimuotoisella tehtävänannolla. Siksi se sopii puhuttuun tarinaan, pelikohtaamiseen, lyhyeen dramaattiseen keskusteluun tai editoitua videota täydentävään kohtaukseen. Kuvaa pelkässä puhetehtävässä puhuja ja esitys; laajemmassa kohtauksessa kuvaa myös akustinen ympäristö sekä dialogin ja ympäröivien äänten suhde.\n\nValmistele tehtävänanto siinä järjestyksessä, jossa kuulijan pitäisi kokea kohtaus. Yksilöi hahmot, niiden tavoiteltu tunnetila ja sanat, jotka niiden pitää sanoa. Kuvaa sitten tila, tärkeät äänivihjeet ja hetken kehittyminen. Tuotantotehtävänannon pitää erottaa tarkka dialogi kohtauskuvauksesta, jotta tulosta voidaan verrata kumpaankin. Kerro, mitkä elementit ovat ymmärtämisen kannalta välttämättömiä ja mitkä jäävät taustalle. Hiljainen huone, ruuhkainen asema ja avoin sisäpiha tarvitsevat erilaisen äänisuunnittelun, vaikka puhuttu repliikki olisi sama.\n\nOma esimerkki on pelihahmo, joka rauhoittaa kumppaniaan lyhyessä suojautumiskohtauksessa: hillitty ääni sanoo ”Voimme odottaa täällä”, taustalla kuuluu hiljaista sadetta ja repliikin jälkeen yksi lähestyvä askel. Hyödyllinen kuuntelutarkistus selvittää, pysyvätkö sanat ymmärrettävinä, välittääkö ääni rauhoittavuutta ja saapuuko vihje järkevään kohtaan. Toinen tehtävänanto voisi pyytää selkeää kertojaa esittelemään tuotteen ilman ympäröivää äänimaisemaa. Nämä havainnollistavat tapoja määritellä tarkoitus eivätkä ole tallenteita tuotetusta äänestä tai lupauksia valmiista miksauksesta.\n\nValmistaja dokumentoi kehoteohjatun ajoituksen hahmodialogille 100 ms:n välein. Kuvaa tällä ohjauksella repliikin aloitus käsikirjoitetussa jaksossa tai suunnittele puhetta olemassa olevaan editointiin. Pidä dialogin ajoitus erillään tehosteiden ja taustaäänten sijoittelusta: julkaisu nimeää ajoitusohjauksen pääkohteeksi hahmodialogin. Tarkista todelliset aloitukset, tauot ja päällekkäisyydet aiottua kohtausta vasten. Ajoitusväli kuvaa mallin ohjauksen tarkkuutta eikä poista tarvetta kuunnella lopullinen esitys.\n\nÄäni voidaan määritellä tekstikuvauksella, luvallisella viitenäytteellä tai molemmilla. Valmistaja esittää tämän äänen muotoiluna ilman erillisen mallin koulutusta jokaiselle puhujalle. Kuvaa pysyvät ääniominaisuudet erillään nykyisen repliikin tunteesta. Toistuva hahmo voi tarvita rauhallisen esittelyn ja kiireellisen vastauksen mutta pysyä silti tunnistettavana. Valitse käytännön valmistelussa selkeä viite, josta tavoiteääni kuuluu helposti, ja yksilöi uuteen esitykseen siirrettävät piirteet. Pidä viite ja hahmokuvaus yhdenmukaisina valmistellessasi toisiinsa liittyviä kohtauksia.\n\nJulkaisu dokumentoi generoinnin yli 20 kielellä, kuten kiinaksi, englanniksi, japaniksi, koreaksi, espanjaksi, indonesiaksi, saksaksi, ranskaksi, thaiksi ja vietnamiksi. Se kuvaa tunnistettavan hahmoäänen mukauttamista eri kielten rytmiin ja ilmaisuun. Anna lopullisen kielen dialogi ja tarkista nimet, painotukset, tauot ja tunnetaso kieltä ymmärtävän kuulijan kanssa. Pidä monikielisissä versioissa hahmon rooli ja tunnetarkoitus vakaina, mutta anna jokaiselle käsikirjoitukselle riittävästi tilaa luonnolliseen ilmaisuun. Valmistele käännös osana käsikirjoitustyötä sen sijaan, että olettaisit äänikohtauksen tehtävänannon kattavan kaikki lokalisointipäätökset.\n\nValmistajan julkaisun mukaan Seed Audio 1.0 voi tuottaa enintään kaksi minuuttia yhdellä ajolla ja tukee jatkamista. Pidempi tarina hyötyy kohtausrajoista ja uudelleenkäytettävästä hahmokuvauksesta. Kuuntele jokaisessa jatkossa äänen, taustan soinnin ja tahdin muutokset sekä osioita yhdistävät sanat. Käsittele palautettua ääntä kuunneltavana aineistona: tarkista sen todelliset tiedostotiedot valmistellessasi toistoa tai tuontia editoriin, ja säilytä käsikirjoitus ja kohtauskuvaus sen rinnalla muokkausta varten. Yhdistetty tuotanto pitää tarkistaa yhtenä jatkuvana kohtauksena, ei vain erillisinä leikkeinä.\n\nValmistaja kuvaa yhtenäistä kehystä, jossa kielellinen luova tarkoitus ohjaa diffuusiopohjaista akustista generaattoria. Käytännössä tämä tarkoittaa tehtävänannolle sitä, että ääntä ja ympäristöä voidaan ajatella yhdessä. Keskity muutamiin kohtauksen määrittäviin suhteisiin: onko repliikki etualalla, keskeyttääkö tehoste sen ja miten äänimaisema tukee tunnehetkeä. Monien irrallisten vihjeiden lisääminen vaikeuttaa sen tunnistamista, mitä tuloksen osaa pitäisi muuttaa. Muuta kyseisen katkelman ohjausta, jos vihje kilpailee dialogin kanssa tai esitys ei tavoita tarkoitettua sävyä.\n\nÄänen jatkuvuus pitkässä, monimutkaisessa aineistossa ja äänielementtien hienompi ajoitus ovat julkaisun nimeämiä kehitysalueita. Pidä tuotantotarkistus täsmällisenä: tarkat sanat, puhujan identiteetti, kieli, sisääntulot, ymmärrettävyys ja yhdenmukaisuus jatkojen välillä. Tämän mallin hyödyllinen tulos on kuultava kohtaus tai puhuttu esitys. Editointileikkauksia, tekstityksiä ja toimitusmuotoa koskevat erilliset päätökset voidaan tehdä todellisen tuloksen ja kohdetuotannon vaatimusten perusteella.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance Seed",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.005",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_output_second",
            "label": "output audio second",
            "native_amount_usd_per_unit": "0.005",
            "native_quantity": 1,
            "public_unit_label": "per output audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "audio_output_second"
          }
        ],
        "summary": "Konfiguraation täydet hintatiedot lisätiedoissa."
      }
    ],
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "bytedance-seed/seed-audio-1-0",
    "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": "Säilytä palautettu X-Client-Request-ID täsmäytystä varten. Tee lukukyselyt vain todellisuudessa palautetuilla task_id/asset_id-arvoilla tai käytä omistamaasi mediakirjastoa; älä koskaan rakenna tehtävän URL-osoitetta operaation ID:n perusteella äläkä lähetä luontipyyntöä uudelleen."
            },
            "outputs": {
              "all_results": "Säilytä koko vastaus ja otsakkeet, jokainen todellinen tuloste, alkuperäiset palautetut tunnisteet ja kaikki käyttötietokentät. Selvitä alkuperäisen operaation tila lähettämättä luontipyyntöä uudelleen.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Koko binääriääni tai alkuperäinen audio_url-vastaus, otsakkeet ja jokainen käyttäjälle kuuluva aineisto."
            },
            "parameters": [
              {
                "enum": [
                  "bytedance-seed/seed-audio-1-0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "max_length": 3000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "voice",
                "required": false,
                "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": {
                  "maxLength": 3000,
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "bytedance-seed/seed-audio-1-0"
                  ],
                  "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": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "bytedance-seed/seed-audio-1-0"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input"
            ]
          },
          "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": "todellisuudessa palautettu task_id tai mediakirjaston tietue",
                "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 output audio second"
            },
            "label": "output audio second",
            "units": [
              {
                "amount": "0.005",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_second",
                "label": "output audio second",
                "native_amount_usd_per_unit": "0.005",
                "native_quantity": 1,
                "public_unit_label": "per output audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_second"
              }
            ]
          }
        ],
        "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': 'bytedance-seed/seed-audio-1-0', 'input': '${ACTUAL_INPUT_TEXT}'}\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": "Puhe",
        "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_output_second": 0.005
          }
        },
        "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 output audio second"
            },
            "label": "output audio second",
            "units": [
              {
                "amount": "0.005",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_second",
                "label": "output audio second",
                "native_amount_usd_per_unit": "0.005",
                "native_quantity": 1,
                "public_unit_label": "per output audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_second"
              }
            ]
          }
        ],
        "request_model_id": "bytedance-seed/seed-audio-1-0",
        "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.005",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_output_second",
            "label": "output audio second",
            "native_amount_usd_per_unit": "0.005",
            "native_quantity": 1,
            "public_unit_label": "per output audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "audio_output_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "bytedance-seed/seed-audio-1-0",
        "request_model_id": "bytedance-seed/seed-audio-1-0",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance Seed: Seed Audio 1.0",
    "price": {
      "in": null,
      "in_label": null,
      "out": 0.005,
      "out_label": "per output audio second",
      "sort_in": null,
      "sort_out": 0.005,
      "varies": true
    },
    "short": "ByteDance Seed Audio 1.0 tuottaa puhuttuja esityksiä ja äänikohtauksia luovasta tehtävänannosta. Se sovittaa yhteen äänet, tehosteet ja taustaäänet, tukee dialogin ajoitusta 100 ms:n välein ja kattaa yli 20 kieltä. Valmistaja kuvaa enintään kahden minuutin generointia kerrallaan ja jatkamismahdollisuutta."
  },
  "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": "ByteDance Seed Audio 1.0 tuottaa puhuttuja esityksiä ja äänikohtauksia luovasta tehtävänannosta. Se sovittaa yhteen äänet, tehosteet ja taustaäänet, tukee dialogin ajoitusta 100 ms:n välein ja kattaa yli 20 kieltä. Valmistaja kuvaa enintään kahden minuutin generointia kerrallaan ja jatkamismahdollisuutta.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "a947cc643ae3f4cba1de8dc0ba2003abf87ad997225552f565aaa7c1d2dd4113",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "1557286dc0a953e0af6f1fb52e9caba3e4f7bb746fc1bfc3dc19052b719a79ec"
}
