Bandika mtiririko, si ukurasa. Sauti halisi ya kituo huishi kwenye anwani inayoishia .mp3, .aac au .m3u8, na mara unukuzi mubashara ukiipata, hakuna haja ya mtu kusikiliza.
Chumba cha habari kinachofuatilia redio tatu, runinga mbili za mitiririko na lives kadhaa za YouTube kina tatizo la wafanyakazi kabla ya kuwa na tatizo la unukuzi. Mtu lazima asikilize, na mtu lazima abonyeze kurekodi. Unukuzi mubashara wenye mtiririko kama chanzo unachukua kazi zote mbili: mpe anwani ya mtiririko, na seva inaufungua, inausimbua na kuunukuu unavyorushwa hewani, hivyo hakuna anayehitaji kuwa mezani wakati mkutano wa waandishi wa habari unapoanza mapema. Sehemu ngumu, inavyoonekana, ni kutafuta anwani yenyewe.
Unukuzi mubashara unaweza kuchukua sauti yake kutoka kwenye mtiririko ambao seva yenyewe huuvuta: kituo cha redio cha intaneti, orodha ya HLS (.m3u8), manifesti ya DASH (.mpd), au YouTube mubashara. Kwenye Dashibodi, hii ni unukuzi mpya mubashara kupitia Transcriptions → New → Live ambao chanzo chake ni mtiririko badala ya maikrofoni. Anwani huwekwa unapoundwa unukuzi na haibadiliki kamwe, kwa hiyo kifuatiliaji huwekwa mara moja na kuanzishwa kila kituo kinapostahili kurekodiwa.
Anwani lazima iwe mtiririko wenyewe, si ukurasa wa wavuti unaouchezesha. Ukurasa wa kituo ni HTML; sauti inayochezwa inatoka mahali pengine, mara nyingi kwenye seva ya Icecast au Shoutcast, na kicheza cha ukurasa hutafuta anwani hiyo kwa JavaScript baada ya ukurasa kupakia. Tafuta kwenye tovuti kiungo cha "Listen", "Direct stream" au "Other players": kinaishia kwa .mp3, .aac, .m3u, .m3u8 au .pls. Faili la .pls au .m3u nalo si sauti. Ni faili fupi la maandishi la mistari machache, kila moja likitoa anwani ya mtiririko; lipo ili vicheza-muziki vya kompyuta viweze kupewa kiungo kimoja, na VocalStack hunukuu mtiririko unaotajwa humo. Ukibandika ukurasa badala yake, VocalStack huuomba, huona HTML ikirudi na kukuambia hivyo. Kila kituo huficha mtiririko wake kwa namna yake; wengi huuficha nyuma ya kitufe chenye neno "Listen", ambacho ndicho kitu pekee kwenye ukurasa kisichostahili kubonyezwa.
Aina mbili za viungo hukataliwa moja kwa moja. Viungo vya kurasa zinazocheza midia, kama Spotify, SoundCloud au Twitch, hukataliwa kabla hata muunganisho haujaanzishwa. Mitiririko iliyolindwa dhidi ya kunakiliwa nayo haitumiki: orodha au manifesti inayohitaji leseni ya DRM itashindwa na ujumbe unaosema hivyo. Baadhi ya mitiririko pia hukataa maombi kutoka nje ya nchi ya kituo, kwa hiyo anwani inayocheza ofisini inaweza isicheze kutoka seva iliyo nje ya nchi. Ikiwa mtiririko unacheza kwenye kivinjari lakini si kwenye VocalStack, kituo kinawakataa wachezaji wengine; muombe kituo anwani ambayo programu nyingine zinaruhusiwa kuitumia. Vituo vingi hutoa mtiririko wa MP3, AAC au HLS. Ukishapata anwani sahihi, swali linalofuata ni kama mtiririko huo unawahi kuisha.
Mtiririko wa moja kwa moja hauishi kamwe, kwa hiyo si faili. Tofauti hii ni muhimu hasa kwa YouTube. Live ya YouTube inayoonyeshwa hewani ni ya unukuzi mubashara, na Dashibodi huifuata inavyorushwa. Live ya YouTube iliyopangwa lakini bado haijaanza huonyeshwa kama Not live yet na inaweza kurekodiwa itakapokuwa hewani. Video iliyokwisha ni kitu tofauti: ina urefu, kwa hiyo hunukuliwa kama faili: bandika kiungo katika Transcriptions → New.
Orodha yenyewe ndiyo inayosema ni ipi, na hivyo ndivyo kicheza chochote kinavyotofautisha. Orodha ya HLS iliyokwisha hubeba lebo #EXT-X-ENDLIST au #EXT-X-PLAYLIST-TYPE:VOD; ile ya moja kwa moja haina yoyote kati ya hizo na inaendelea kukua, kwa hiyo kicheza huiomba upya kila sekunde chache kutafuta sehemu mpya. Manifesti ya DASH hutangaza type="dynamic" wakati matangazo yako hewani na type="static" yakishakuwa rekodi. Mtiririko wa MP3 au AAC kutoka seva ya Icecast hauna urefu kabisa; hauishi tu.
Kutoka kwenye msimbo, GET /v1/transcriptions/probe?url= hutatua hili kabla ya chochote kuhifadhiwa. Jibu la kind ni live kwa live ya YouTube iliyo hewani au iliyopangwa, mtiririko wa HTTP usioisha, orodha ya HLS isiyo na mwisho, au manifesti ya DASH ya dynamic. Ni file kwa chochote chenye mwisho, na unknown pale probe isipoweza kubaini. Kiungo kisipofunguka kama midia, ok ni false na problem ni sentensi unayoweza kuionyesha. Probe haihifadhi kitu chochote na ina kikomo cha simu 60 kwa dakika.
Unukuzi wa faili huenda kwa kasi mara nyingi zaidi kuliko sauti inavyocheza, kwa hiyo saa moja ya runinga iliyokwisha haichukui saa moja. Mtiririko wa moja kwa moja hunukuliwa kwa wakati halisi, lakini "wakati halisi" tayari uko nyuma ya matangazo, na inafaa kujua kwa kiasi gani. Mtiririko wa Icecast hufika kwa kicheza sekunde chache baada ya maikrofoni. HLS na DASH zimegawanywa katika sehemu, na kicheza hakianzi hadi kiwe na sehemu mbili au tatu za takriban sekunde sita kila moja, kwa hiyo mtiririko wa HLS kwa kawaida huwa nyuma ya matangazo kwa sekunde 10 hadi 30 kabla unukuzi haujaongeza ucheleweshaji wake. Mstari unaoonekana kufika kwa kuchelewa mara nyingi ni ucheleweshaji wa kituo, si wa mnukuzi. Mtiririko mmoja hutengeneza rekodi moja; dawati linaweza kuendesha kadhaa, na zote huishia mahali pamoja.
Kila unukuzi mubashara huishia kwenye maktaba ya Transcriptions pamoja na kila faili. Kila rekodi huhifadhiwa pamoja na nakala yake, na maneno yakishakuwa ya mwisho, jina na muhtasari huandikwa kwa ajili yake, katika kila lugha. Lugha inayozungumzwa hugunduliwa kiotomatiki, na wazungumzaji wanaweza kubadili lugha wakati wowote. Pale unapojua lugha, kuitaja huboresha ubora wa unukuzi.
Maktaba inatafutika katika lugha zote: tafuta kila nakala, bila kujali lugha yake, na upate matokeo kwa lugha yako. Mwandishi anayesoma Kiingereki pekee anaweza kutafuta kipindi cha asubuhi cha kituo cha redio cha Kiromania kwa jina la waziri na kusoma matokeo kwa Kiingereki, kila moja likiwa na unukuzi lilikotoka na wakati lilipotamkwa. Jina la waziri litaandikwa kwa njia tatu katika vituo vitatu; kulitafuta kwa Kiingereki kunaokoa kusoma vyote vitatu.
Unukuzi mmoja unaweza kutafsiriwa hadi lugha 10 kwa wakati mmoja, kwa hiyo rekodi hiyo hiyo inasomeka katika kila lugha ambayo dawati linafanya kazi nayo. Matokeo ya utafutaji yana manufaa tu ikiwa unaweza kuyanukuu.
Nakala si ukuta wa maandishi. GET /v1/recordings/{id}/transcript ya API hurejesha sentences, segments zenye muda wa maneno, na speakers, kwa hiyo nukuu inaweza kuwekwa hadi sekunde dhidi ya rekodi. Dashibodi hucheza tena rekodi ya moja kwa moja jinsi ilivyofika, pamoja na sauti yake, kwa hiyo sentensi inaweza kusikilizwa kabla ya kunukuliwa.
Kabla ya kuamini nakala yoyote ya sauti ya redio, kutoka mfumo wowote, mambo mawili yanafaa kujulikana. Utambuzi wa usemi hujikwaa zaidi kwenye majina ya watu, mahali na takwimu, ambayo ndiyo hasa mwandishi anayayatafuta. Jina ambalo kitambuzi hakijawahi kuliona hutoka kama neno la kawaida lililo karibu zaidi, na utafutaji wa tahajia sahihi hulikosa. Badala yake tafuta neno la kipekee lililosemwa katika pumzi moja, kisha usome karibu na matokeo. Pia redio si usemi pekee: mandhari ya muziki, jingles na vipindi vya matangazo ya biashara huzalisha mistari inayofanana na sentensi lakini si sentensi. Angalia sauti kabla ya kunukuu.
Lebo za wazungumzaji zina mipangilio mitatu: off, on, au When Needed, ambayo huonyesha lebo mara tu msemaji wa pili anaposikika. Unaweza kumpa msemaji jina katika rekodi (PUT /v1/recordings/{id}/speakers/{idx}), na sauti ya msemaji ikishasajiliwa, rekodi zijazo zitamtambua kwa jina. Kwa kituo ambacho watangazaji wake hurudi kila asubuhi, lebo hazibaki "Speaker 2" baada ya wiki ya kwanza. Nukuu ikishakaguliwa, ni wakati wa kuitoa nje ya jengo.
Kila umbizo kwenye kichupo cha Hamisha cha unukuzi lina kazi katika chumba cha habari. SRT huenda kwa mhariri wa video, kwa hiyo kipande kutoka kwenye mtiririko kinabeba manukuu; SRT iliyotafsiriwa inabeba manukuu kwa lugha nyingine. Excel huenda kwa mtafiti, safu moja kwa kila sentensi pamoja na muda wake, ili ichujwe na kuandikwa maelezo. PDF huenda kwa mhariri anayetaka kusoma saa nzima ya kipindi akiwa safarini kwenye treni. JSON huenda kwa yeyote anayeandika zana za dawati lenyewe. Kupitia API, hamisho ni GET /v1/recordings/{id}/export?format=srt|json|xlsx|pdf, na lang= kwa toleo lililotafsiriwa. Download audio hutoa rekodi kama MP3 kwa ajili ya kifurushi chenyewe.
Kufuatilia matangazo kwa ajili ya kuripoti ni desturi ya kawaida ya vyumba vya habari. Kuchapisha tena kipande chake ni kitendo tofauti. Kinasimamiwa na matumizi ya haki pale ulipo, na masharti ya kituo chenyewe, kwa hiyo kanuni za kawaida za dawati kuhusu kunukuu mshindani zinatumika pia kwa sauti ya mshindani. Yote yaliyo hapo juu ni mibofyo michache kwenye Dashibodi; kwa dawati lenye vituo ishirini, ni bora kuviendesha kwa hati ya programu.
Njia nzima iko kwenye API, imejumuishwa katika kila mpango na inatozwa kwa kiwango kile kile cha Dashibodi. Unukuzi mubashara wenye chanzo cha mtiririko huundwa ukiwa bila kazi, huanzishwa na rekodi yake ya kwanza, na hudhibitiwa kupitia HTTP. Kwa sababu seva huvuta sauti, kuanzisha rekodi hakurudishi mtiririko wowote wa wewe kuchapisha: hakuna chochote upande wako kinachotuma sauti.
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"
Kitambulisho cha Idempotency-Key huhakikisha kwamba uundaji unaorudiwa unarudisha unukuzi wa kwanza badala ya wa pili. SDK za TypeScript na Python zinafunika simu hizo hizo na zinapakuliwa kutoka eneo la Developers; marejeo ya API yana kila njia na fremu zake.
Wakala wa AI anaweza kufanya kazi na maktaba bila msimbo wowote kabisa. Seva ya MCP kwenye /v1/mcp humpa wakala seti ya zana; kati yake, nne ni muhimu hapa. search_transcriptions hutafuta kilichosemwa katika unukuzi wote wa akaunti kwa lugha yoyote na hurejesha mistari inayolingana, kila moja ikiwa na unukuzi ilimo na wakati ilipotamkwa. get_summary hurejesha muhtasari wa rekodi. transcribe_url na wait_for_transcription hunukuu video iliyokwisha au kiungo cha rekodi na husubiri matokeo. Kuanzisha ufuatiliaji wa mtiririko wa moja kwa moja kunabaki kwenye Dashibodi au API iliyo hapo juu. Usanidi wa Claude Code, Cursor au mteja yeyote wa Streamable HTTP uko chini ya Developers → Connect an AI agent; makala ya MCP inaeleza hatua kwa hatua. Gharama ya kuendesha hati hiyo ndilo swali la mwisho.
Unukuzi mubashara ni $0.60 kwa saa ya sauti, unatozwa kwa sekunde ($0.01 kwa dakika), na kiwango cha chini ni dakika 5 kwa kila unukuzi. Live hugharimu zaidi ya faili kwa sababu unanukuliwa unapotokea, kwa muda wowote unaoendelea. Faili ni $0.20 kwa saa ($0.0033 kwa dakika; faili ya dakika 30 hugharimu $0.10). Viwango ni vilevile katika kila mpango na kupitia API, na tafsiri, muhtasari, kutaja wazungumzaji, matangazo na kushiriki haziongezi chochote kwenye bili.
Kituo kinachofuatiliwa saa nane kwa siku, siku tano kwa wiki, ni saa 40 za moja kwa moja: $24 kwa wiki, bila kujali ni lugha ngapi dawati linazisoma.
Vikomo vinavyojali kwa ufuatiliaji hutofautiana kwa mpango. Kila kimoja kimeorodheshwa kwa mpangilio wa Lipa Unapotumia, Premium, Enterprise:
Akaunti mpya huanza na salio la kujisajili la $5 bila kadi, ambalo linatosha zaidi ya saa nane za ufuatiliaji wa moja kwa moja kujaribu. Jedwali kamili liko kwenye ukurasa wa bei.