Límdu inn strauminn, ekki síðuna. Raunverulegt hljóð stöðvarinnar er á vistfangi sem endar á .mp3, .aac eða .m3u8, og þegar umritun í beinni hefur fengið það þarf enginn að hlusta.
Fréttastofa sem vaktar þrjár útvarpsstöðvar, tvo sjónvarpsstrauma og nokkrar beinar útsendingar á YouTube stendur fyrst frammi fyrir mannekluvanda, ekki umritunarvanda. Einhver þarf að hlusta og einhver þarf að ýta á upptöku. Umritun í beinni með straum sem uppsprettu tekur við báðum þessum verkefnum: gefðu upp vistfang straumsins og þjónninn opnar hann, afkóðar og umritar hann jafnóðum og hann er sendur út, svo enginn þarf að sitja við skrifborð þegar blaðamannafundur hefst óvænt snemma. Erfiði hlutinn, eins og kemur í ljós, er að finna vistfangið.
Umritun í beinni getur tekið hljóðið frá straumi sem þjónninn sækir sjálfur: netútvarpsstöð, HLS-spilunarlista (.m3u8), DASH-lýsingu (.mpd) eða beina útsendingu á YouTube. Í stjórnborðinu er þetta ný umritun í beinni á Transcriptions → New → Live þar sem uppsprettan er straumur en ekki hljóðnemi. Vistfangið er stillt þegar umritunin er stofnuð og breytist aldrei, þannig að vöktun er sett upp einu sinni og ræst hvenær sem stöðin er þess virði að taka upp.
Vistfangið verður að vera straumurinn sjálfur, ekki vefsíðan sem spilar hann. Vefsíða stöðvarinnar er HTML; hljóðið sem hún spilar kemur annars staðar frá, oftast frá Icecast- eða Shoutcast-þjóni, og spilarinn á síðunni finnur það vistfang með JavaScript eftir að hún hefur hlaðist. Leitaðu á vefsvæðinu að tengli merktum „Listen“, „Direct stream“ eða „Other players“: hann endar á .mp3, .aac, .m3u, .m3u8 eða .pls. Skrá með endingunni .pls eða .m3u er ekki heldur hljóð. Hún er stutt textaskrá með nokkrum línum, þar sem hver lína gefur vistfang straums; hún er til svo að skjáspilarar geti fengið einn tengil, og VocalStack umritar strauminn sem hún vísar á. Ef þú límir inn síðuna í staðinn sækir VocalStack hana, sér HTML koma til baka og lætur þig vita. Hver stöð felur strauminn sinn aðeins öðruvísi; flestar fela hann á bak við hnapp merktan „Listen“, sem er það eina á síðunni sem ekki er þess virði að smella á.
Tvær tegundir tengla eru hafnaðar fyrirfram. Tenglar á síður sem spila margmiðlun, eins og Spotify, SoundCloud eða Twitch, eru stöðvaðir áður en nokkur tenging er opnuð. Straumar með afritunarvörn eru heldur ekki studdir: spilunarlisti eða lýsing sem þarf DRM-leyfi mistekst með skilaboðum sem segja það. Sumir straumar hafna líka beiðnum utan lands stöðvarinnar, þannig að vistfang sem spilast á skrifstofunni gæti ekki spilast af þjóni erlendis. Ef straumur spilast í vafra en ekki í VocalStack, er stöðin að hafna öðrum spilurum; biddu stöðina um vistfang sem önnur forrit mega nota. Flestar bjóða upp á MP3-, AAC- eða HLS-straum. Þegar þú hefur rétta vistfangið er næsta spurning hvort það endi nokkurn tímann.
Lifandi straumur endar aldrei, þannig að hann er ekki skrá. Munurinn skiptir mestu máli fyrir YouTube. Bein útsending á YouTube sem er í loftinu tilheyrir umritun í beinni, og stjórnborðið fylgir henni eftir meðan hún er í loftinu. Bein útsending á YouTube sem er á dagskrá en er ekki hafin birtist sem Not live yet og er hægt að taka upp þegar hún er komin í loftið. Lokið myndband er annað mál: það hefur lengd og er því umritað sem skrá. Límdu tengilinn inn í Transcriptions → New.
Spilunarlistinn sjálfur segir til um hvort er hvað, og þannig greinir hvaða spilari sem er á milli. Lokinn HLS-spilunarlisti er með merkið #EXT-X-ENDLIST eða #EXT-X-PLAYLIST-TYPE:VOD; sá sem er í beinni hefur hvorugt og stækkar stöðugt, þannig að spilarinn sækir hann aftur á nokkurra sekúndna fresti til að fá nýja búta. DASH-lýsing er með type="dynamic" meðan útsendingin er í loftinu og type="static" þegar hún er upptaka. MP3- eða AAC-straumur frá Icecast-þjóni hefur enga lengd; hann einfaldlega hættir aldrei.
Úr kóða sker GET /v1/transcriptions/probe?url= úr um þetta áður en nokkuð er vistað. Svarið kind er live fyrir beina útsendingu á YouTube sem er í loftinu eða á dagskrá, óendanlegan HTTP-straum, HLS-spilunarlista án enda eða kvikan DASH-lýsingu. Það er file fyrir allt sem hefur endi, og unknown þegar ekki tókst að ráða það. Þegar tengillinn opnaðist ekki sem margmiðlun er ok false og problem setning sem þú getur sýnt. Probe geymir ekkert og er takmarkað við 60 köll á mínútu.
Skráaumritanir ganga margfalt hraðar en hljóðið spilast, þannig að lokinn klukkustund af sjónvarpi tekur ekki klukkustund. Umritun straums í beinni fer í rauntíma, en „rauntími“ er þegar á eftir útsendingunni, og vert er að vita hversu mikið. Icecast-straumur nær spilara nokkrum sekúndum eftir hljóðnemann. HLS og DASH eru skipt í búta, og spilari byrjar ekki fyrr en hann hefur tvo til þrjá búta, hvern um sex sekúndur, þannig að HLS-straumur er venjulega 10 til 30 sekúndum á eftir útsendingunni áður en umritunin bætir við sinni eigin töf. Lína sem virðist berast seint er yfirleitt töf stöðvarinnar, ekki umritarans. Einn straumur býr til eina upptöku; ritstjórn keyrir nokkra, og þeir enda allir á sama stað.
Sérhver umritun í beinni lendir í Transcriptions-safninu við hliðina á hverri skrá. Hver upptaka er geymd með uppskriftinni sinni, og þegar orðin eru endanleg eru titill og samantekt skrifuð fyrir hana á öllum tungumálum. Talmálið greinist sjálfkrafa og ræðumenn mega skipta um tungumál hvenær sem er. Þar sem þú veist tungumálið hjálpar að nefna það, sem bætir gæði umritunarinnar.
Safnið er leitarhæft þvert á tungumál: leitaðu í öllum uppskriftum, hvaða tungumáli sem þær eru á, og fáðu niðurstöðurnar á þínu máli. Blaðamaður sem les aðeins ensku getur leitað að nafni ráðherra í morgunþætti rúmenskrar stöðvar og lesið niðurstöðurnar á ensku, hver með umritunina sem hún kemur úr og tímann sem hún var sögð. Nafn ráðherrans verður ritað á þrjá vegu á þremur stöðvum; að leita að því á ensku sparar lestur á öllum þremur.
Umritun er hægt að þýða á allt að 10 tungumál í einu, þannig að sama upptakan birtist á öllum tungumálunum sem ritstjórnin vinnur á. Leitarniðurstaða er aðeins gagnleg ef þú getur vitnað í hana.
Uppskrift er ekki veggur af texta. GET /v1/recordings/{id}/transcript í API skilar sentences, segments með tímasetningum orða, og speakers, þannig að hægt er að setja tilvitnun nákvæmlega á sekúnduna miðað við upptökuna. Stjórnborðið spilar umritun í beinni nákvæmlega eins og hún barst, með hljóðinu, þannig að hægt er að hlusta á setningu áður en hún er vitnað í.
Áður en þú treystir uppskrift af útvarpshljóði, frá hvaða kerfi sem er, er vert að vita tvennt. Talgreining hrasar oftast á sérnöfnum, stöðum og tölum, sem eru einmitt það sem blaðamenn leita að. Nafn sem greinirinn hefur aldrei séð kemur út sem næsta algengt orð, og leit að réttri stafsetningu finnur það þá ekki. Leitaðu í staðinn að sérkennandi orði sem sagt er í sömu andrá og lestu svo í kringum niðurstöðuna. Og útvarp er ekki allt tal: tónlistarundirlag, stef og auglýsingahlé framleiða línur sem líta út eins og setningar en eru það ekki. Athugaðu hljóðið áður en þú vitnar í það.
Ræðumannamerki hafa þrjár stillingar: slökkt, kveikt eða When Needed, sem sýnir merki þegar annar ræðumaður heyrist. Þú getur nefnt ræðumann í upptöku (PUT /v1/recordings/{id}/speakers/{idx}), og þegar rödd ræðumanns hefur verið skráð þekkja síðari upptökur hann með nafni. Fyrir stöð þar sem kynnar mæta á hverjum morgni hætta merkin að vera „Speaker 2“ eftir fyrstu vikuna. Þegar tilvitnunin hefur verið yfirfarin þarf hún að fara út úr húsinu.
Hvert snið á flipanum Export í umritun hefur hlutverk á fréttastofu. SRT fer til myndklippara, þannig að klippa úr straumnum fær skjátexta; þýtt SRT ber þá á öðru tungumáli. Excel fer til rannsakandans, ein röð fyrir hverja setningu með tímanum sínum, til að sía og athuga. PDF fer til ritstjórans sem vill lesa alla klukkustundina í lestinni. JSON fer til þess sem skrifar sín eigin verkfæri fyrir ritstjórnina. Í gegnum API er útflutningurinn GET /v1/recordings/{id}/export?format=srt|json|xlsx|pdf, með lang= fyrir þýdda útgáfu. Download audio skilar upptökunni sem MP3 fyrir pakkann sjálfan.
Að vakta útsendingu til fréttaflutnings er venjuleg blaðamennska. Að birta bút úr henni aftur er annað verk. Það er háð sanngjarnri notkun þar sem þú ert og skilmálum stöðvarinnar sjálfrar, þannig að reglur ritstjórnarinnar um að vitna í keppinaut gilda líka um hljóð keppinautarins. Allt ofangreint er nokkrir smellir í stjórnborðinu; fyrir ritstjórn með tuttugu stöðvar er betra að skrifa handrit.
Öll leiðin er í API, innifalin í hverri áskriftarleið og rukkuð á sama verði og í stjórnborðinu. Umritun í beinni með straum sem uppsprettu er stofnuð í biðstöðu, ræst með fyrstu upptökunni og stýrt yfir HTTP. Þar sem þjónninn sækir hljóðið skilar það að hefja upptöku engri straumslóð fyrir þig að senda í: það er ekkert hjá þér sem sendir hljóð.
API=$VOCALSTACK_API_ORIGIN # the origin shown in the API reference
AUTH="Authorization: Bearer $VOCALSTACK_API_KEY"
# A live transcription whose source the server pulls itself.
TX=$(jq -n '{name: "Morning show", source: {kind: "stream", url: "https://example.org/live.mp3"},
settings: {speakerLabels: "auto"}}' \
| curl -sSf "$API/v1/transcriptions/live" -H "$AUTH" -H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" -d @- | jq -r .id)
# Start recording: the server opens the stream now.
REC=$(curl -sSf -X POST "$API/v1/transcriptions/$TX/recordings" -H "$AUTH" \
-H "Content-Type: application/json" -d '{}' | jq -r .recording.id)
# Later: pause, then stop (a live recording must be paused before it is stopped).
curl -sSf -X POST "$API/v1/recordings/$REC/pause" -H "$AUTH"
curl -sSf -X POST "$API/v1/recordings/$REC/stop" -H "$AUTH" -H "Content-Type: application/json" -d '{}'
# Search everything that was said, in English.
curl -sSfG "$API/v1/search" -H "$AUTH" --data-urlencode "q=budget" --data-urlencode "lang=en"
Idempotency-Key gerir það að verkum að endurtekin stofnun skilar fyrstu umrituninni í stað annarrar. TypeScript- og Python-SDK-in vefja sömu köll og eru sótt í Developers area; API reference hefur allar leiðir og ramma þeirra.
AI-miðill getur unnið í safninu án nokkurs kóða. MCP-þjónninn á /v1/mcp gefur miðlinum sett af verkfærum; af þeim skipta fjögur máli hér. search_transcriptions leitar í því sem var sagt í öllum umritunum reikningsins, á hvaða tungumáli sem er, og skilar samsvarandi línum, hverri með umritunina sem hún er í og tímann sem hún var sögð. get_summary skilar samantekt upptöku. transcribe_url og wait_for_transcription umrita lokið myndband eða tengil á upptöku og bíða eftir niðurstöðunni. Að byrja vöktun á beinum straumi er áfram í stjórnborðinu eða API-inu hér að ofan. Uppsetningin fyrir Claude Code, Cursor eða hvaða Streamable HTTP-biðlara sem er er undir Developers → Connect an AI agent; MCP-greinin fer yfir hana. Hvað handritið kostar í keyrslu er síðasta spurningin.
Umritun í beinni kostar $0.60 á klukkustund af hljóði, rukkuð á sekúndu ($0.01 á mínútu), með 5 mínútna lágmarki á hverja umritun. Umritun í beinni kostar meira en skrá því hún fer fram jafnóðum, svo lengi sem hún keyrir. Skrár kosta $0.20 á klukkustund ($0.0033 á mínútu; 30 mínútna skrá kostar $0.10). Verðin eru þau sömu í öllum áskriftarleiðum og í gegnum API, og þýðingar, samantektir, nafngreining ræðumanna, útsending og deiling bætast aldrei við reikninginn.
Stöð sem er vöktuð átta klukkustundir á dag, fimm daga vikunnar, eru 40 beinar klukkustundir: $24 á viku, sama á hvaða tungumálum ritstjórnin les hana.
Takmörkin sem skipta máli við vöktun eru mismunandi eftir áskriftarleiðum. Hvert þeirra er talið í þessari röð: Greitt eftir notkun, Premium, Enterprise:
Nýr reikningur fær $5 nýskráningarinneign án korts, sem er meira en átta klukkustundir af vöktun í beinni til að prófa það. Heildartaflan er á verðsíðunni.