{
  "aboutHtml": "<p>Transcribe 1 Pro on Fish Audion puheentunnistusmalli lyhyille leikkeille, usean puhujan keskusteluille ja pitkille tallenteille. Se vastaanottaa tallennettua ääntä ja palauttaa litteroinnin, johon voi sisältyä ajoitus ja jäsennellyt puheenvuorot. Sen erityispiirteitä ovat tekstiin merkityt puhujanvaihdokset sekä tunne- tai ääntelytapahtumien vihjeet, jotka säilyttävät tallenteen keskustelurakennetta enemmän kuin pelkkä sanajono.</p><p>Säilytä haastattelun, kokouksen tai podcastin koko keskustelu yhtenä tiedostona, jotta uudelleen ääneen tulevat puhujat voivat säilyttää yhtenäiset tunnisteet vastauksen sisällä. Hyödyllinen tarkastelutuotos on alkuperäiseen tallenteeseen yhdistetty litterointi, jonka puheenvuorot näytetään erikseen ja jossa aikaleima mahdollistaa lainauksen tarkistamisen. Yhteenveto tai toimenpideluettelo on myöhempi sovellusvaihe: pidä se erillään litteroinnista, jotta puhuttu lähde säilyy vertailtavana.</p><p>Tuottaja hyväksyy enintään 60 minuutin tallenteita ja kuvaa pitkien tiedostojen käsittelyn esimerkiksi MP3-, Opus- tai AAC-pakatulla äänellä. Tuettuja muotoja ovat WAV, MP3, AAC M4A- tai MP4-säiliössä, FLAC, Ogg Opus- tai Vorbis-koodekilla, WebM/Matroska ja MOV. Videotiedostosta käytetään ensimmäistä ääniraitaa. AIFF, CAF, WMA, AMR, AC-3 ja raakamuotoinen otsakkeeton PCM eivät ole tuettuja. Pyyntöön annetaan yksi äänitiedosto; tulos saapuu koko tallenteen litteroinnin jälkeen, ja pitkä tallenne voi kestää useita minuutteja. Noin 0,08 sekuntia lyhyemmät leikkeet hylätään.</p><p>Tuottajan vastaus sisältää koko tekstin, tallenteen keston sekunteina ja segments-taulukon. Pro merkitsee puhujanvaihdokset tekstiin esimerkiksi tunnisteilla &lt;|speaker:0|&gt; ja &lt;|speaker:1|&gt;; tunniste koskee seuraavaa tekstiä seuraavaan merkkiin asti. Nämä ovat yhden vastauksen sisäisiä tunnisteita, eivät vahvistettuja nimiä tai henkilöllisyyksiä, jotka voidaan yhdistää eri pyyntöjen välillä. Jos litteroinnissa ei ole puhujamerkintää, opas käsittelee sitä yhden puhujan tuloksena. Säilytä ennen ensimmäistä merkkiä mahdollisesti oleva teksti ensimmäisen puheenvuoron yhteydessä äläkä hylkää sitä.</p><p>Sanatason aikaleimat ovat valinnaisia. Tuottajan pyynnössä ignore_timestamps on oletuksena true; arvon false asettaminen pyytää segmenttejä, joissa on teksti sekä alku- ja loppuaika sekunteina. Segmentti on yleensä sana, tai kiinassa ja japanissa yksi tai muutama merkki. Segmenttiteksti jättää pois välimerkit, puhujamerkinnät ja tapahtumavihjeet, ja se voi normalisoida puhutun arvon eri tavalla kuin koko litterointi. Sanasegmentin alku- ja loppuaika voivat olla samat. Tyhjä segments-taulukko voi tarkoittaa, ettei aikaleimoja pyydetty, puhetta ei löytynyt tai ajoitus oli tilapäisesti poissa käytöstä. Käytä koko litterointia luettavaan sanamuotoon ja segmenttejä kohdistamiseen sen sijaan, että olettaisit molempien merkkijonojen vastaavan toisiaan merkki merkiltä.</p><p>diarize-asetuksen oletus on auto. Kun aikaleimoja pyydetään eikä diarize ole false, Pro palauttaa myös speaker_turns-tiedot. Jokainen puheenvuoro sisältää puhujatunnisteen, tekstin sekä alku- ja loppuajat, säilyttäen välimerkit ja mukana olevat vihjeet ilman tekstin sisäistä puhujamerkkiä. Jos sanakohtainen ajoitus ei ole saatavilla, puheenvuorojen ajat voivat olla likimääräisiä ja kattaa koko tallenteen; vierekkäiset puheenvuorot eivät välttämättä jatku suoraan toisistaan, ja ne voivat olla päällekkäisiä. diarize-asetuksen poistaminen käytöstä poistaa jäsennellyn puheenvuoroluettelon mutta jättää puhujamerkinnät koko tekstiin. Tunnettu puhujamäärä tai vähimmäis- ja enimmäismäärä voi ohjata pitkän tallenteen puhujanerottelua parhaan mahdollisen arvion perusteella. Tarkkaa määrää ei voi yhdistää määrärajoihin, eikä määrävihjeitä voi käyttää, kun diarize on poistettu käytöstä.</p><p>Tunne- ja ääntelytapahtumien vihjeet esiintyvät hakasulkeisiin merkittynä tekstinä, esimerkiksi [laughter], tunnistetun puheen rinnalla. Ne ovat äänestä tehtyjä päätelmiä, eivät sanoja, jotka käyttäjän pitäisi lisätä ennen litterointia. Pron tag_audio_events-asetus on oletuksena true; sen poistaminen käytöstä poistaa vihjeet litteroinnista ja puheenvuorotekstistä muuttamatta ajoitusta. Erillistä tunnekenttää tai kiinteää tunne-enumeraatiota ei ole. Säilytä merkinnöillä varustettu litterointi, kun huomautuksen äänensävy on tärkeä, ja käytä vihjeetöntä versiota, kun myöhempi tuotos tarvitsee vain puhutut sanat.</p><p>Kieli tunnistetaan automaattisesti. Valinnainen pienillä kirjaimilla annettu ISO 639-1 -kielivihje ei pakota kääntämistä eikä muuta Pron litterointia. Jos kieltä ei pystytä määrittämään, palautettu kielikoodi voi vastata vihjettä ilman sen tarkistamista ääntä vasten. Tuottaja ilmoittaa yhden kielen eikä luetteloa kaikista monikielisen tallenteen kielistä. Pidä alkuperäinen sanamuoto ja kielimetatiedot yhdessä hakukelpoista arkistoa valmisteltaessa, erityisesti kun keskustelun eri osat vaihtavat kieltä.</p><p>Ryhmittele tekstityksiä varten peräkkäiset ajoitetut sanat luettaviksi SRT- tai WebVTT-tekstitysjaksoiksi sen sijaan, että loisit yhden tekstityksen sanaa kohden. Erota jaksot taukojen kohdalla ja valitse niiden pituus ja näyttöaika soittimen ja yleisön mukaan. Puheenvuorojen rajat voivat pitää eri puhujat erillisissä tekstitysjaksoissa. Tarkista, onko ajoitustulos tyhjä, ja että kunkin tekstitysjakson loppuaika on alkuaikaa myöhempi. Tekstityksen muotoilu, anonyymien puhujatunnisteiden nimet ja myöhempi yhteenveto ovat litterointituloksesta rakennettavia sovellustuotoksia.</p><p>Päätä käytännön tallennetyönkulussa ennen litterointia, tarvitsetko tavallisen luettavan litteroinnin, merkinnöillä varustetut keskusteluvuorot vai ajoitetut tekstitykset. Säilytä äänitunniste tuloksen yhteydessä, pidä palautettu koko teksti tallessa, kun välimerkit ja vihjeet ovat tärkeitä, ja käytä jäsenneltyjä ajoituskenttiä navigointiin. Pron pitkien tallenteiden ja useiden puhujien ominaisuudet ovat erilliset yleisestä, lyhyille tallenteille tarkoitetusta Transcribe 1 -mallista; niiden rajoja ja säätöjä ei pidä käsitellä keskenään vaihdettavina.</p>",
  "aboutText": "Transcribe 1 Pro on Fish Audion puheentunnistusmalli lyhyille leikkeille, usean puhujan keskusteluille ja pitkille tallenteille. Se vastaanottaa tallennettua ääntä ja palauttaa litteroinnin, johon voi sisältyä ajoitus ja jäsennellyt puheenvuorot. Sen erityispiirteitä ovat tekstiin merkityt puhujanvaihdokset sekä tunne- tai ääntelytapahtumien vihjeet, jotka säilyttävät tallenteen keskustelurakennetta enemmän kuin pelkkä sanajono.\n\nSäilytä haastattelun, kokouksen tai podcastin koko keskustelu yhtenä tiedostona, jotta uudelleen ääneen tulevat puhujat voivat säilyttää yhtenäiset tunnisteet vastauksen sisällä. Hyödyllinen tarkastelutuotos on alkuperäiseen tallenteeseen yhdistetty litterointi, jonka puheenvuorot näytetään erikseen ja jossa aikaleima mahdollistaa lainauksen tarkistamisen. Yhteenveto tai toimenpideluettelo on myöhempi sovellusvaihe: pidä se erillään litteroinnista, jotta puhuttu lähde säilyy vertailtavana.\n\nTuottaja hyväksyy enintään 60 minuutin tallenteita ja kuvaa pitkien tiedostojen käsittelyn esimerkiksi MP3-, Opus- tai AAC-pakatulla äänellä. Tuettuja muotoja ovat WAV, MP3, AAC M4A- tai MP4-säiliössä, FLAC, Ogg Opus- tai Vorbis-koodekilla, WebM/Matroska ja MOV. Videotiedostosta käytetään ensimmäistä ääniraitaa. AIFF, CAF, WMA, AMR, AC-3 ja raakamuotoinen otsakkeeton PCM eivät ole tuettuja. Pyyntöön annetaan yksi äänitiedosto; tulos saapuu koko tallenteen litteroinnin jälkeen, ja pitkä tallenne voi kestää useita minuutteja. Noin 0,08 sekuntia lyhyemmät leikkeet hylätään.\n\nTuottajan vastaus sisältää koko tekstin, tallenteen keston sekunteina ja segments-taulukon. Pro merkitsee puhujanvaihdokset tekstiin esimerkiksi tunnisteilla <|speaker:0|> ja <|speaker:1|>; tunniste koskee seuraavaa tekstiä seuraavaan merkkiin asti. Nämä ovat yhden vastauksen sisäisiä tunnisteita, eivät vahvistettuja nimiä tai henkilöllisyyksiä, jotka voidaan yhdistää eri pyyntöjen välillä. Jos litteroinnissa ei ole puhujamerkintää, opas käsittelee sitä yhden puhujan tuloksena. Säilytä ennen ensimmäistä merkkiä mahdollisesti oleva teksti ensimmäisen puheenvuoron yhteydessä äläkä hylkää sitä.\n\nSanatason aikaleimat ovat valinnaisia. Tuottajan pyynnössä ignore_timestamps on oletuksena true; arvon false asettaminen pyytää segmenttejä, joissa on teksti sekä alku- ja loppuaika sekunteina. Segmentti on yleensä sana, tai kiinassa ja japanissa yksi tai muutama merkki. Segmenttiteksti jättää pois välimerkit, puhujamerkinnät ja tapahtumavihjeet, ja se voi normalisoida puhutun arvon eri tavalla kuin koko litterointi. Sanasegmentin alku- ja loppuaika voivat olla samat. Tyhjä segments-taulukko voi tarkoittaa, ettei aikaleimoja pyydetty, puhetta ei löytynyt tai ajoitus oli tilapäisesti poissa käytöstä. Käytä koko litterointia luettavaan sanamuotoon ja segmenttejä kohdistamiseen sen sijaan, että olettaisit molempien merkkijonojen vastaavan toisiaan merkki merkiltä.\n\ndiarize-asetuksen oletus on auto. Kun aikaleimoja pyydetään eikä diarize ole false, Pro palauttaa myös speaker_turns-tiedot. Jokainen puheenvuoro sisältää puhujatunnisteen, tekstin sekä alku- ja loppuajat, säilyttäen välimerkit ja mukana olevat vihjeet ilman tekstin sisäistä puhujamerkkiä. Jos sanakohtainen ajoitus ei ole saatavilla, puheenvuorojen ajat voivat olla likimääräisiä ja kattaa koko tallenteen; vierekkäiset puheenvuorot eivät välttämättä jatku suoraan toisistaan, ja ne voivat olla päällekkäisiä. diarize-asetuksen poistaminen käytöstä poistaa jäsennellyn puheenvuoroluettelon mutta jättää puhujamerkinnät koko tekstiin. Tunnettu puhujamäärä tai vähimmäis- ja enimmäismäärä voi ohjata pitkän tallenteen puhujanerottelua parhaan mahdollisen arvion perusteella. Tarkkaa määrää ei voi yhdistää määrärajoihin, eikä määrävihjeitä voi käyttää, kun diarize on poistettu käytöstä.\n\nTunne- ja ääntelytapahtumien vihjeet esiintyvät hakasulkeisiin merkittynä tekstinä, esimerkiksi [laughter], tunnistetun puheen rinnalla. Ne ovat äänestä tehtyjä päätelmiä, eivät sanoja, jotka käyttäjän pitäisi lisätä ennen litterointia. Pron tag_audio_events-asetus on oletuksena true; sen poistaminen käytöstä poistaa vihjeet litteroinnista ja puheenvuorotekstistä muuttamatta ajoitusta. Erillistä tunnekenttää tai kiinteää tunne-enumeraatiota ei ole. Säilytä merkinnöillä varustettu litterointi, kun huomautuksen äänensävy on tärkeä, ja käytä vihjeetöntä versiota, kun myöhempi tuotos tarvitsee vain puhutut sanat.\n\nKieli tunnistetaan automaattisesti. Valinnainen pienillä kirjaimilla annettu ISO 639-1 -kielivihje ei pakota kääntämistä eikä muuta Pron litterointia. Jos kieltä ei pystytä määrittämään, palautettu kielikoodi voi vastata vihjettä ilman sen tarkistamista ääntä vasten. Tuottaja ilmoittaa yhden kielen eikä luetteloa kaikista monikielisen tallenteen kielistä. Pidä alkuperäinen sanamuoto ja kielimetatiedot yhdessä hakukelpoista arkistoa valmisteltaessa, erityisesti kun keskustelun eri osat vaihtavat kieltä.\n\nRyhmittele tekstityksiä varten peräkkäiset ajoitetut sanat luettaviksi SRT- tai WebVTT-tekstitysjaksoiksi sen sijaan, että loisit yhden tekstityksen sanaa kohden. Erota jaksot taukojen kohdalla ja valitse niiden pituus ja näyttöaika soittimen ja yleisön mukaan. Puheenvuorojen rajat voivat pitää eri puhujat erillisissä tekstitysjaksoissa. Tarkista, onko ajoitustulos tyhjä, ja että kunkin tekstitysjakson loppuaika on alkuaikaa myöhempi. Tekstityksen muotoilu, anonyymien puhujatunnisteiden nimet ja myöhempi yhteenveto ovat litterointituloksesta rakennettavia sovellustuotoksia.\n\nPäätä käytännön tallennetyönkulussa ennen litterointia, tarvitsetko tavallisen luettavan litteroinnin, merkinnöillä varustetut keskusteluvuorot vai ajoitetut tekstitykset. Säilytä äänitunniste tuloksen yhteydessä, pidä palautettu koko teksti tallessa, kun välimerkit ja vihjeet ovat tärkeitä, ja käytä jäsenneltyjä ajoituskenttiä navigointiin. Pron pitkien tallenteiden ja useiden puhujien ominaisuudet ovat erilliset yleisestä, lyhyille tallenteille tarkoitetusta Transcribe 1 -mallista; niiden rajoja ja säätöjä ei pidä käsitellä keskenään vaihdettavina.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "9782b6dea0c5dae4c1375e1662cf21a998bb276fd849aa75a24cd815c316563b",
    "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\">Fish Audio: Transcribe 1 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/transcribe-1-pro</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|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1-pro\">Tunnistus</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\">Transcribe 1 Pro muuntaa enintään 60 minuutin tallenteet tekstiksi puhujamerkintöineen ja valinnaisine sanakohtaisine ajoituksineen. Se säilyttää päätellyt tunne- ja ääntelytapahtumien vihjeet, mikä helpottaa haastattelujen, kokousten ja podcastien tarkastelua, hakua tai valmistelua tekstitykseen.</p><dl class=\"card-io\" data-card-io><div><dt>Hyväksytyt syötteet</dt><dd>Ääni</dd></div><div><dt>Tulokset</dt><dd>Teksti</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>Transcribe 1 Pro on Fish Audion puheentunnistusmalli lyhyille leikkeille, usean puhujan keskusteluille ja pitkille tallenteille. Se vastaanottaa tallennettua ääntä ja palauttaa litteroinnin, johon voi sisältyä ajoitus ja jäsennellyt puheenvuorot. Sen erityispiirteitä ovat tekstiin merkityt puhujanvaihdokset sekä tunne- tai ääntelytapahtumien vihjeet, jotka säilyttävät tallenteen keskustelurakennetta enemmän kuin pelkkä sanajono.</p><p>Säilytä haastattelun, kokouksen tai podcastin koko keskustelu yhtenä tiedostona, jotta uudelleen ääneen tulevat puhujat voivat säilyttää yhtenäiset tunnisteet vastauksen sisällä. Hyödyllinen tarkastelutuotos on alkuperäiseen tallenteeseen yhdistetty litterointi, jonka puheenvuorot näytetään erikseen ja jossa aikaleima mahdollistaa lainauksen tarkistamisen. Yhteenveto tai toimenpideluettelo on myöhempi sovellusvaihe: pidä se erillään litteroinnista, jotta puhuttu lähde säilyy vertailtavana.</p><p>Tuottaja hyväksyy enintään 60 minuutin tallenteita ja kuvaa pitkien tiedostojen käsittelyn esimerkiksi MP3-, Opus- tai AAC-pakatulla äänellä. Tuettuja muotoja ovat WAV, MP3, AAC M4A- tai MP4-säiliössä, FLAC, Ogg Opus- tai Vorbis-koodekilla, WebM/Matroska ja MOV. Videotiedostosta käytetään ensimmäistä ääniraitaa. AIFF, CAF, WMA, AMR, AC-3 ja raakamuotoinen otsakkeeton PCM eivät ole tuettuja. Pyyntöön annetaan yksi äänitiedosto; tulos saapuu koko tallenteen litteroinnin jälkeen, ja pitkä tallenne voi kestää useita minuutteja. Noin 0,08 sekuntia lyhyemmät leikkeet hylätään.</p><p>Tuottajan vastaus sisältää koko tekstin, tallenteen keston sekunteina ja segments-taulukon. Pro merkitsee puhujanvaihdokset tekstiin esimerkiksi tunnisteilla &lt;|speaker:0|&gt; ja &lt;|speaker:1|&gt;; tunniste koskee seuraavaa tekstiä seuraavaan merkkiin asti. Nämä ovat yhden vastauksen sisäisiä tunnisteita, eivät vahvistettuja nimiä tai henkilöllisyyksiä, jotka voidaan yhdistää eri pyyntöjen välillä. Jos litteroinnissa ei ole puhujamerkintää, opas käsittelee sitä yhden puhujan tuloksena. Säilytä ennen ensimmäistä merkkiä mahdollisesti oleva teksti ensimmäisen puheenvuoron yhteydessä äläkä hylkää sitä.</p><p>Sanatason aikaleimat ovat valinnaisia. Tuottajan pyynnössä ignore_timestamps on oletuksena true; arvon false asettaminen pyytää segmenttejä, joissa on teksti sekä alku- ja loppuaika sekunteina. Segmentti on yleensä sana, tai kiinassa ja japanissa yksi tai muutama merkki. Segmenttiteksti jättää pois välimerkit, puhujamerkinnät ja tapahtumavihjeet, ja se voi normalisoida puhutun arvon eri tavalla kuin koko litterointi. Sanasegmentin alku- ja loppuaika voivat olla samat. Tyhjä segments-taulukko voi tarkoittaa, ettei aikaleimoja pyydetty, puhetta ei löytynyt tai ajoitus oli tilapäisesti poissa käytöstä. Käytä koko litterointia luettavaan sanamuotoon ja segmenttejä kohdistamiseen sen sijaan, että olettaisit molempien merkkijonojen vastaavan toisiaan merkki merkiltä.</p><p>diarize-asetuksen oletus on auto. Kun aikaleimoja pyydetään eikä diarize ole false, Pro palauttaa myös speaker_turns-tiedot. Jokainen puheenvuoro sisältää puhujatunnisteen, tekstin sekä alku- ja loppuajat, säilyttäen välimerkit ja mukana olevat vihjeet ilman tekstin sisäistä puhujamerkkiä. Jos sanakohtainen ajoitus ei ole saatavilla, puheenvuorojen ajat voivat olla likimääräisiä ja kattaa koko tallenteen; vierekkäiset puheenvuorot eivät välttämättä jatku suoraan toisistaan, ja ne voivat olla päällekkäisiä. diarize-asetuksen poistaminen käytöstä poistaa jäsennellyn puheenvuoroluettelon mutta jättää puhujamerkinnät koko tekstiin. Tunnettu puhujamäärä tai vähimmäis- ja enimmäismäärä voi ohjata pitkän tallenteen puhujanerottelua parhaan mahdollisen arvion perusteella. Tarkkaa määrää ei voi yhdistää määrärajoihin, eikä määrävihjeitä voi käyttää, kun diarize on poistettu käytöstä.</p><p>Tunne- ja ääntelytapahtumien vihjeet esiintyvät hakasulkeisiin merkittynä tekstinä, esimerkiksi [laughter], tunnistetun puheen rinnalla. Ne ovat äänestä tehtyjä päätelmiä, eivät sanoja, jotka käyttäjän pitäisi lisätä ennen litterointia. Pron tag_audio_events-asetus on oletuksena true; sen poistaminen käytöstä poistaa vihjeet litteroinnista ja puheenvuorotekstistä muuttamatta ajoitusta. Erillistä tunnekenttää tai kiinteää tunne-enumeraatiota ei ole. Säilytä merkinnöillä varustettu litterointi, kun huomautuksen äänensävy on tärkeä, ja käytä vihjeetöntä versiota, kun myöhempi tuotos tarvitsee vain puhutut sanat.</p><p>Kieli tunnistetaan automaattisesti. Valinnainen pienillä kirjaimilla annettu ISO 639-1 -kielivihje ei pakota kääntämistä eikä muuta Pron litterointia. Jos kieltä ei pystytä määrittämään, palautettu kielikoodi voi vastata vihjettä ilman sen tarkistamista ääntä vasten. Tuottaja ilmoittaa yhden kielen eikä luetteloa kaikista monikielisen tallenteen kielistä. Pidä alkuperäinen sanamuoto ja kielimetatiedot yhdessä hakukelpoista arkistoa valmisteltaessa, erityisesti kun keskustelun eri osat vaihtavat kieltä.</p><p>Ryhmittele tekstityksiä varten peräkkäiset ajoitetut sanat luettaviksi SRT- tai WebVTT-tekstitysjaksoiksi sen sijaan, että loisit yhden tekstityksen sanaa kohden. Erota jaksot taukojen kohdalla ja valitse niiden pituus ja näyttöaika soittimen ja yleisön mukaan. Puheenvuorojen rajat voivat pitää eri puhujat erillisissä tekstitysjaksoissa. Tarkista, onko ajoitustulos tyhjä, ja että kunkin tekstitysjakson loppuaika on alkuaikaa myöhempi. Tekstityksen muotoilu, anonyymien puhujatunnisteiden nimet ja myöhempi yhteenveto ovat litterointituloksesta rakennettavia sovellustuotoksia.</p><p>Päätä käytännön tallennetyönkulussa ennen litterointia, tarvitsetko tavallisen luettavan litteroinnin, merkinnöillä varustetut keskusteluvuorot vai ajoitetut tekstitykset. Säilytä äänitunniste tuloksen yhteydessä, pidä palautettu koko teksti tallessa, kun välimerkit ja vihjeet ovat tärkeitä, ja käytä jäsenneltyjä ajoituskenttiä navigointiin. Pron pitkien tallenteiden ja useiden puhujien ominaisuudet ovat erilliset yleisestä, lyhyille tallenteille tarkoitetusta Transcribe 1 -mallista; niiden rajoja ja säätöjä ei pidä käsitellä keskenään vaihdettavina.</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 · Puheentunnistus</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Syötetyypit</dt><dd><code>audio</code></dd></div><div><dt>Tulostyypit</dt><dd><code>text</code></dd></div><div><dt>Tulosteen muoto</dt><dd>json</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 data-parameter-availability=\"source_interface\"><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>fish-audio/transcribe-1-pro</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">input_audio</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>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Tarkat avaimet: data, format</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">input_audio.data</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>base64_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>Purettujen tavujen enimmäismäärä: 26 214 400</div><div>Tiukka Base64: Kyllä</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">input_audio.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>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: On vastattava todellisen tiedoston tarkistettua muotoa</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>json</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Syöteaineistojen yhdistelmät</summary><p class=\"note-s\"><b>speech_to_text</b> · Pakollinen: input_audio.data, input_audio.format</p></details><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_audio</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>additional_properties</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>false</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>parameters</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>{&quot;name&quot;:&quot;model&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;fish-audio/transcribe-1-pro&quot;]}, {&quot;name&quot;:&quot;input_audio&quot;,&quot;type&quot;:&quot;object&quot;,&quot;required&quot;:true,&quot;exact_keys&quot;:[&quot;data&quot;,&quot;format&quot;],&quot;data&quot;:&quot;todellisten tuettujen äänitavujen tarkka base64-koodaus&quot;,&quot;format&quot;:&quot;tiedoston tarkistettu täsmällinen muoto; sen on vastattava todellisia tavuja&quot;}, {&quot;name&quot;:&quot;response_format&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:false,&quot;enum&quot;:[&quot;json&quot;]}</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>max_audio_bytes</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>26214400</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>multipart_for_this_profile</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>false</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>audio</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><p class=\"note-s\">Säilytä koko vastaus ja alkuperäiset palautetut tunnisteet.</p><p class=\"note-s\">Älä koskaan lähetä tuntemattomaan tilaan jäänyttä luontipyyntöä uudelleen.</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>äänisyötteen 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>syöteäänen sekuntia kohden</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Syöte · äänisyötteen sekunti</span> <b>$0.0002</b> <span class=\"price-unit\">syöteää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><div data-declared-reference-pricing><h4>Viitehinnaston tiedot</h4><p class=\"note-s\">Mallitason viitehinnastot eivät muuta menetelmän valintaa, hinta-arvioita tai veloituksia. Käytössä olevat veloitukset käyttävät valitun Ailoot-menetelmän hintoja.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Fish Audio: Transcribe 1 Pro</summary><h4>Hinnat asetusten mukaan</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Asetukset</th><th>Laskutusehdot</th><th>Veloitus</th></tr></thead><tbody><tr><th data-cell-label=\"Asetukset\" scope=\"row\"><span class=\"card-cell-label\">Asetukset</span>Fish Audio: Transcribe 1 Pro · Oletusasetukset</th><td data-cell-label=\"Laskutusehdot\"><span class=\"card-cell-label\">Laskutusehdot</span>Oletuskokoonpano</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Syöte · Äänisyötteen sekunnit</span> <b>0,0002 $</b> <span class=\"price-unit\">syöteäänen sekuntia kohden</span></div></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esimerkkipyynnöt</h3><h4>Ailoot Ultra · Puheentunnistus</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-1362-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1362-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · todelliset äänitavut ja tunnistettu muoto</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-1362-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1362-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set your actual audio file}&quot;\n: &quot;${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}&quot;\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;fish-audio/transcribe-1-pro&quot;, &quot;response_format&quot;: &quot;json&quot;}&#39;)\nimport base64\nf=Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;])\nraw=f.read_bytes()\nif not raw or len(raw)&gt;26214400:raise SystemExit(&#39;Use actual audio bytes within 25 MiB&#39;)\nfmt=os.environ[&#39;AILOOT_AUDIO_FORMAT&#39;].strip()\nif not fmt:raise SystemExit(&#39;Use the actual probed format; the server checks it against the bytes&#39;)\np[&#39;input_audio&#39;]={&#39;data&#39;:base64.b64encode(raw).decode(),&#39;format&#39;:fmt}\nPath(&#39;request.json&#39;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\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 result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\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 · Puheentunnistus</h4><p class=\"note-s\">json</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>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 JSON, vastausotsakkeet, teksti ja jokainen todellinen palautettu käyttötietokenttä. Käytä vastauksen tai käyttäjälle kuuluvan kirjaston todellisia tehtävä- ja aineistotunnisteita; operation_id ei ole task_id.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jos alkuperäinen vastaus on tarkistettava</h5><p class=\"note-s\">Säilytä alkuperäinen operation_id/X-Client-Request-ID täsmäytystä varten lähettämättä pyyntöä uudelleen; erillistä äänen tilakyselyreittiä ei ole.</p></div><details class=\"card-about\" data-output-fields><summary>Vastauksen kentät</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Kenttä</th><th>Tyyppi</th><th>Merkitys</th></tr></thead><tbody><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">text</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td><td data-cell-label=\"Merkitys\"><span class=\"card-cell-label\">Merkitys</span>Litteroitu teksti.</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>object</td><td data-cell-label=\"Merkitys\"><span class=\"card-cell-label\">Merkitys</span>Äänen käyttötiedot.</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">usage.seconds</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>number</td><td data-cell-label=\"Merkitys\"><span class=\"card-cell-label\">Merkitys</span>Äänen kesto sekunteina.</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>number</td><td data-cell-label=\"Merkitys\"><span class=\"card-cell-label\">Merkitys</span>Äänen kesto sekunteina.</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td><td data-cell-label=\"Merkitys\"><span class=\"card-cell-label\">Merkitys</span>Litterointitehtävän tunniste; palautetaan asset_url-kentän kanssa, kun ei-tyhjä litterointi tallennetaan, julkaistaan ja sille määritetään allekirjoitettu sisällön URL-osoite.</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">asset_url</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span>string</td><td data-cell-label=\"Merkitys\"><span class=\"card-cell-label\">Merkitys</span>Litterointisisällön allekirjoitettu URL-osoite; palautetaan task_id-kentän kanssa, kun ei-tyhjä litterointi tallennetaan, julkaistaan ja sille määritetään allekirjoitettu sisällön URL-osoite.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Virheet ja seuraavat vaiheet</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Vastaus</th><th>Ehto</th><th>Seuraava vaihe</th></tr></thead><tbody><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Virheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Korjaa ilmoitetut kentät ennen uutta luontipyyntöä.</td></tr><tr><th data-cell-label=\"Vastaus\" scope=\"row\"><span class=\"card-cell-label\">Vastaus</span><code>server_error</code></th><td data-cell-label=\"Ehto\"><span class=\"card-cell-label\">Ehto</span>Palautettu vastaus ilmoittaa, että operaatio tai tulos edellyttää tarkistusta</td><td data-cell-label=\"Seuraava vaihe\"><span class=\"card-cell-label\">Seuraava vaihe</span>Säilytä alkuperäinen palautettu operaation tai tehtävän ID, pyynnön otsakkeet ja vastaus; jatka kyseisen alkuperäisen operaation tuettuja lukutoimintoja. Älä lähetä luontipyyntöä uudelleen.</td></tr></tbody></table></div></details></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=fish-audio%2Ftranscribe-1-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</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=fish-audio%2Ftranscribe-1-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/transcribe-1-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "errors": [
              {
                "code": null,
                "condition": "Virheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät ennen uutta luontipyyntöä.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Palautettu vastaus ilmoittaa, että operaatio tai tulos edellyttää tarkistusta",
                "http_status": null,
                "recovery": "Säilytä alkuperäinen palautettu operaation tai tehtävän ID, pyynnön otsakkeet ja vastaus; jatka kyseisen alkuperäisen operaation tuettuja lukutoimintoja. Älä lähetä luontipyyntöä uudelleen.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Säilytä alkuperäinen operation_id/X-Client-Request-ID täsmäytystä varten lähettämättä pyyntöä uudelleen; erillistä äänen tilakyselyreittiä ei ole."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "Säilytä koko JSON, vastausotsakkeet, teksti ja jokainen todellinen palautettu käyttötietokenttä. Käytä vastauksen tai käyttäjälle kuuluvan kirjaston todellisia tehtävä- ja aineistotunnisteita; operation_id ei ole task_id.",
              "family": "transcription",
              "fields": [
                {
                  "description": "Litteroitu teksti.",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Äänen käyttötiedot.",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "Äänen kesto sekunteina.",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Äänen kesto sekunteina.",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Litterointitehtävän tunniste; palautetaan asset_url-kentän kanssa, kun ei-tyhjä litterointi tallennetaan, julkaistaan ja sille määritetään allekirjoitettu sisällön URL-osoite.",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Litterointisisällön allekirjoitettu URL-osoite; palautetaan task_id-kentän kanssa, kun ei-tyhjä litterointi tallennetaan, julkaistaan ja sille määritetään allekirjoitettu sisällön URL-osoite.",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "On vastattava todellisen tiedoston tarkistettua muotoa",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "Säilytä koko vastaus ja alkuperäiset palautetut tunnisteet.",
            "Älä koskaan lähetä tuntemattomaan tilaan jäänyttä luontipyyntöä uudelleen."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "todellisten tuettujen äänitavujen tarkka base64-koodaus",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "tiedoston tarkistettu täsmällinen muoto; sen on vastattava todellisia tavuja",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "todellisuudessa palautettu task_id tai mediakirjaston tietue",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "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 audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "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_second": 0.0002
          }
        },
        "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 audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/transcribe-1-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "a8e00ff1058c9226547c7c620b256b2c61c777632d7a6f3bb9fd01edc342705a",
    "input_html_sha256": "8812b69635d8ade8ba93ab59ba84b6cb1786721cacd687b26551e31c767d485e",
    "private_audit_sha256": "935e8399299535fc584003be9b306d2b1f99f3cd9bcc72603b537bc1f861ceb1",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/fish-audio-transcribe-1-pro/",
    "description": "Transcribe 1 Pro muuntaa enintään 60 minuutin tallenteet tekstiksi puhujamerkintöineen ja valinnaisine sanakohtaisine ajoituksineen. Se säilyttää päätellyt tunne- ja ääntelytapahtumien vihjeet, mikä helpottaa haastattelujen, kokousten ja podcastien tarkastelua, hakua tai valmistelua tekstitykseen.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/fish-audio-transcribe-1-pro/index.md",
    "title": "Fish Audio: Transcribe 1 Pro — Ailoot",
    "url": "https://ailoot.ai/models/fi/fish-audio-transcribe-1-pro/"
  },
  "rawModel": {
    "about": "Transcribe 1 Pro on Fish Audion puheentunnistusmalli lyhyille leikkeille, usean puhujan keskusteluille ja pitkille tallenteille. Se vastaanottaa tallennettua ääntä ja palauttaa litteroinnin, johon voi sisältyä ajoitus ja jäsennellyt puheenvuorot. Sen erityispiirteitä ovat tekstiin merkityt puhujanvaihdokset sekä tunne- tai ääntelytapahtumien vihjeet, jotka säilyttävät tallenteen keskustelurakennetta enemmän kuin pelkkä sanajono.\n\nSäilytä haastattelun, kokouksen tai podcastin koko keskustelu yhtenä tiedostona, jotta uudelleen ääneen tulevat puhujat voivat säilyttää yhtenäiset tunnisteet vastauksen sisällä. Hyödyllinen tarkastelutuotos on alkuperäiseen tallenteeseen yhdistetty litterointi, jonka puheenvuorot näytetään erikseen ja jossa aikaleima mahdollistaa lainauksen tarkistamisen. Yhteenveto tai toimenpideluettelo on myöhempi sovellusvaihe: pidä se erillään litteroinnista, jotta puhuttu lähde säilyy vertailtavana.\n\nTuottaja hyväksyy enintään 60 minuutin tallenteita ja kuvaa pitkien tiedostojen käsittelyn esimerkiksi MP3-, Opus- tai AAC-pakatulla äänellä. Tuettuja muotoja ovat WAV, MP3, AAC M4A- tai MP4-säiliössä, FLAC, Ogg Opus- tai Vorbis-koodekilla, WebM/Matroska ja MOV. Videotiedostosta käytetään ensimmäistä ääniraitaa. AIFF, CAF, WMA, AMR, AC-3 ja raakamuotoinen otsakkeeton PCM eivät ole tuettuja. Pyyntöön annetaan yksi äänitiedosto; tulos saapuu koko tallenteen litteroinnin jälkeen, ja pitkä tallenne voi kestää useita minuutteja. Noin 0,08 sekuntia lyhyemmät leikkeet hylätään.\n\nTuottajan vastaus sisältää koko tekstin, tallenteen keston sekunteina ja segments-taulukon. Pro merkitsee puhujanvaihdokset tekstiin esimerkiksi tunnisteilla <|speaker:0|> ja <|speaker:1|>; tunniste koskee seuraavaa tekstiä seuraavaan merkkiin asti. Nämä ovat yhden vastauksen sisäisiä tunnisteita, eivät vahvistettuja nimiä tai henkilöllisyyksiä, jotka voidaan yhdistää eri pyyntöjen välillä. Jos litteroinnissa ei ole puhujamerkintää, opas käsittelee sitä yhden puhujan tuloksena. Säilytä ennen ensimmäistä merkkiä mahdollisesti oleva teksti ensimmäisen puheenvuoron yhteydessä äläkä hylkää sitä.\n\nSanatason aikaleimat ovat valinnaisia. Tuottajan pyynnössä ignore_timestamps on oletuksena true; arvon false asettaminen pyytää segmenttejä, joissa on teksti sekä alku- ja loppuaika sekunteina. Segmentti on yleensä sana, tai kiinassa ja japanissa yksi tai muutama merkki. Segmenttiteksti jättää pois välimerkit, puhujamerkinnät ja tapahtumavihjeet, ja se voi normalisoida puhutun arvon eri tavalla kuin koko litterointi. Sanasegmentin alku- ja loppuaika voivat olla samat. Tyhjä segments-taulukko voi tarkoittaa, ettei aikaleimoja pyydetty, puhetta ei löytynyt tai ajoitus oli tilapäisesti poissa käytöstä. Käytä koko litterointia luettavaan sanamuotoon ja segmenttejä kohdistamiseen sen sijaan, että olettaisit molempien merkkijonojen vastaavan toisiaan merkki merkiltä.\n\ndiarize-asetuksen oletus on auto. Kun aikaleimoja pyydetään eikä diarize ole false, Pro palauttaa myös speaker_turns-tiedot. Jokainen puheenvuoro sisältää puhujatunnisteen, tekstin sekä alku- ja loppuajat, säilyttäen välimerkit ja mukana olevat vihjeet ilman tekstin sisäistä puhujamerkkiä. Jos sanakohtainen ajoitus ei ole saatavilla, puheenvuorojen ajat voivat olla likimääräisiä ja kattaa koko tallenteen; vierekkäiset puheenvuorot eivät välttämättä jatku suoraan toisistaan, ja ne voivat olla päällekkäisiä. diarize-asetuksen poistaminen käytöstä poistaa jäsennellyn puheenvuoroluettelon mutta jättää puhujamerkinnät koko tekstiin. Tunnettu puhujamäärä tai vähimmäis- ja enimmäismäärä voi ohjata pitkän tallenteen puhujanerottelua parhaan mahdollisen arvion perusteella. Tarkkaa määrää ei voi yhdistää määrärajoihin, eikä määrävihjeitä voi käyttää, kun diarize on poistettu käytöstä.\n\nTunne- ja ääntelytapahtumien vihjeet esiintyvät hakasulkeisiin merkittynä tekstinä, esimerkiksi [laughter], tunnistetun puheen rinnalla. Ne ovat äänestä tehtyjä päätelmiä, eivät sanoja, jotka käyttäjän pitäisi lisätä ennen litterointia. Pron tag_audio_events-asetus on oletuksena true; sen poistaminen käytöstä poistaa vihjeet litteroinnista ja puheenvuorotekstistä muuttamatta ajoitusta. Erillistä tunnekenttää tai kiinteää tunne-enumeraatiota ei ole. Säilytä merkinnöillä varustettu litterointi, kun huomautuksen äänensävy on tärkeä, ja käytä vihjeetöntä versiota, kun myöhempi tuotos tarvitsee vain puhutut sanat.\n\nKieli tunnistetaan automaattisesti. Valinnainen pienillä kirjaimilla annettu ISO 639-1 -kielivihje ei pakota kääntämistä eikä muuta Pron litterointia. Jos kieltä ei pystytä määrittämään, palautettu kielikoodi voi vastata vihjettä ilman sen tarkistamista ääntä vasten. Tuottaja ilmoittaa yhden kielen eikä luetteloa kaikista monikielisen tallenteen kielistä. Pidä alkuperäinen sanamuoto ja kielimetatiedot yhdessä hakukelpoista arkistoa valmisteltaessa, erityisesti kun keskustelun eri osat vaihtavat kieltä.\n\nRyhmittele tekstityksiä varten peräkkäiset ajoitetut sanat luettaviksi SRT- tai WebVTT-tekstitysjaksoiksi sen sijaan, että loisit yhden tekstityksen sanaa kohden. Erota jaksot taukojen kohdalla ja valitse niiden pituus ja näyttöaika soittimen ja yleisön mukaan. Puheenvuorojen rajat voivat pitää eri puhujat erillisissä tekstitysjaksoissa. Tarkista, onko ajoitustulos tyhjä, ja että kunkin tekstitysjakson loppuaika on alkuaikaa myöhempi. Tekstityksen muotoilu, anonyymien puhujatunnisteiden nimet ja myöhempi yhteenveto ovat litterointituloksesta rakennettavia sovellustuotoksia.\n\nPäätä käytännön tallennetyönkulussa ennen litterointia, tarvitsetko tavallisen luettavan litteroinnin, merkinnöillä varustetut keskusteluvuorot vai ajoitetut tekstitykset. Säilytä äänitunniste tuloksen yhteydessä, pidä palautettu koko teksti tallessa, kun välimerkit ja vihjeet ovat tärkeitä, ja käytä jäsenneltyjä ajoituskenttiä navigointiin. Pron pitkien tallenteiden ja useiden puhujien ominaisuudet ovat erilliset yleisestä, lyhyille tallenteille tarkoitetusta Transcribe 1 -mallista; niiden rajoja ja säätöjä ei pidä käsitellä keskenään vaihdettavina.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "available": null,
    "canonical_model": "fish-audio/transcribe-1-pro",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "Konfiguraation täydet hintatiedot lisätiedoissa."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "aeebfac63d7ddd8619fb",
        "label": "Fish Audio: Transcribe 1 Pro",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "Oletuskokoonpano"
            },
            "label": "Fish Audio: Transcribe 1 Pro · Oletusasetukset",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "0949942d98ce2e4c35b418d6",
                "label": "Input audio seconds",
                "public_unit_label": "per input audio second",
                "quantity": "1",
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "input_audio_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "transcriptions"
    ],
    "id": "fish-audio/transcribe-1-pro",
    "input": [
      "audio"
    ],
    "kind": "transcription",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "errors": [
              {
                "code": null,
                "condition": "Virheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo",
                "http_status": 400,
                "recovery": "Korjaa ilmoitetut kentät ennen uutta luontipyyntöä.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Palautettu vastaus ilmoittaa, että operaatio tai tulos edellyttää tarkistusta",
                "http_status": null,
                "recovery": "Säilytä alkuperäinen palautettu operaation tai tehtävän ID, pyynnön otsakkeet ja vastaus; jatka kyseisen alkuperäisen operaation tuettuja lukutoimintoja. Älä lähetä luontipyyntöä uudelleen.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Säilytä alkuperäinen operation_id/X-Client-Request-ID täsmäytystä varten lähettämättä pyyntöä uudelleen; erillistä äänen tilakyselyreittiä ei ole."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "Säilytä koko JSON, vastausotsakkeet, teksti ja jokainen todellinen palautettu käyttötietokenttä. Käytä vastauksen tai käyttäjälle kuuluvan kirjaston todellisia tehtävä- ja aineistotunnisteita; operation_id ei ole task_id.",
              "family": "transcription",
              "fields": [
                {
                  "description": "Litteroitu teksti.",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Äänen käyttötiedot.",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "Äänen kesto sekunteina.",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Äänen kesto sekunteina.",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "Litterointitehtävän tunniste; palautetaan asset_url-kentän kanssa, kun ei-tyhjä litterointi tallennetaan, julkaistaan ja sille määritetään allekirjoitettu sisällön URL-osoite.",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "Litterointisisällön allekirjoitettu URL-osoite; palautetaan task_id-kentän kanssa, kun ei-tyhjä litterointi tallennetaan, julkaistaan ja sille määritetään allekirjoitettu sisällön URL-osoite.",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "On vastattava todellisen tiedoston tarkistettua muotoa",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "Säilytä koko vastaus ja alkuperäiset palautetut tunnisteet.",
            "Älä koskaan lähetä tuntemattomaan tilaan jäänyttä luontipyyntöä uudelleen."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "todellisten tuettujen äänitavujen tarkka base64-koodaus",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "tiedoston tarkistettu täsmällinen muoto; sen on vastattava todellisia tavuja",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "todellisuudessa palautettu task_id tai mediakirjaston tietue",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "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 audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "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_second": 0.0002
          }
        },
        "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 audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/transcribe-1-pro",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Transcribe 1 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_declared_unit",
            "conditions": {},
            "key": "prompt",
            "label": "prompt",
            "quantity": "1",
            "rate_role": "typed_active_maker_rate",
            "side": "in",
            "unit": "input_audio_second"
          }
        ]
      }
    ],
    "public_id": "fish-audio/transcribe-1-pro",
    "short": "Transcribe 1 Pro muuntaa enintään 60 minuutin tallenteet tekstiksi puhujamerkintöineen ja valinnaisine sanakohtaisine ajoituksineen. Se säilyttää päätellyt tunne- ja ääntelytapahtumien vihjeet, mikä helpottaa haastattelujen, kokousten ja podcastien tarkastelua, hakua tai valmistelua tekstitykseen."
  },
  "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": "Transcribe 1 Pro muuntaa enintään 60 minuutin tallenteet tekstiksi puhujamerkintöineen ja valinnaisine sanakohtaisine ajoituksineen. Se säilyttää päätellyt tunne- ja ääntelytapahtumien vihjeet, mikä helpottaa haastattelujen, kokousten ja podcastien tarkastelua, hakua tai valmistelua tekstitykseen.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "de3c6b5dc862cb13ead02acdc499dae91458a93b6d0a90844c9475ab6be09ec3",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "85783f6331a7fb6a4b0b128e2985841c98fdecb7c16f3f21dd52ff364d0c80eb"
}
