Transkripce

Chunking dlouhých nahrávek: jak rozdělit hodinu záznamu, aniž věta ztratí smysl

Přepisové API má limity. Hodina záznamu nemůže projít jako jeden celek — model ji nedokáže zpracovat najednou. Soubor se musí rozdělit na části. Kde se tyto části rozdělí, určuje, zda bude finální přepis hladký nebo plný artefaktů. Jak chunking funguje, proč na hranicích záleží a jak poznat, kdy se to pokazilo.


Proč přepisové modely nedokáží zpracovat celý záznam najednou

Limity nejsou na straně uživatele — jsou strukturálně zabudovány do přepisových API. OpenAI Whisper API přijme maximálně 25 MB na jeden požadavek. Hodina záznamu v MP3 při 128 kbps je přibližně 58 MB — to je více než dvojnásobek tohoto limitu. Deepgram, AssemblyAI a další služby pracují s časovými limity: typicky 60 až 120 minut záznamu na jedno volání, v závislosti na tarifu.

Druhý faktor je paměťový. Transformer modely, které stojí za moderním přepisem, načítají celý vstup do paměti najednou pro výpočet attention mechanismu. Příliš dlouhý vstup přetíží paměť nebo výrazně zpomalí zpracování. Limity stanovené výrobci modelů nejsou libovůlí — jsou odrazem reálných výpočetních hranic.

Praktický důsledek je přímý: jakákoliv nahrávka delší než limit musí být před odesláním ke zpracování rozdělena na menší části. Tomuto procesu se říká chunking.


Kde hledat správné hranice

Samotné rozdělení souboru na části je snadné. Problém je v tom, kde přesně se soubor rozdělí.

Rozdělení uprostřed věty způsobí, že model druhého chunku začíná přepisovat bez kontextu předchozích slov. Pokud první chunk skončí ve slově „… přičemž výsledky ukazují, že —" a druhý chunk začíná „— metodologie byla od začátku", model druhé části neví, že jde o pokračování předchozí myšlenky. Může přepsat správně foneticky, ale kontext věty je narušen.

Tiché pauzy jako přirozené hranice

Nejspolehlivějším řešením je hledat hranice tam, kde mluvčí přirozeně přerušil řeč — v tichých pauzách. Algoritmy VAD (Voice Activity Detection) sledují energii zvukového signálu v čase. Kde energie poklesne pod prahovou hodnotu na dostatečně dlouhou dobu, je ticho — přirozená hranice v řeči.

Tichá pauza odpovídá přirozeným přestávkám: konci věty, přechodu na nové téma, nadechnutí. Přepis přerušený v tichém místě je téměř vždy hladký — žádné slovo se nepřeruší, kontext zůstane zachován v předchozím chunku.

Minimální délka ticha pro spolehlivé rozdělení: typicky 0,5 až 2 sekundy. Kratší pauzy jsou součástí věty — delší pauzy signalizují přirozené přestávky.

Překryv jako záchranná síť

Rychlá konverzace nebo přednáška bez dostatečných pauz může nemít vhodná tichá místa pro spolehlivé rozdělení. V takovém případě se použije záložní přístup: pevná délka chunku — například 10 minut — s překryvem (overlap).

Překryv znamená, že posledních N sekund předchozího chunku se opakuje na začátku dalšího. Model tak vidí kontext přechodu a dokáže správně přepsat slova, která leží na hranici. Typická délka překryvu je 5 až 15 sekund. Překryvná část se ze slučovacího výsledku odstraní — ve finálním přepisu se každé slovo objeví jen jednou.


Jak se chunky zpracovávají a skládají zpět

Jakmile jsou chunky připraveny, nezpracovávají se jeden po druhém — zpracovávají se paralelně. Každý chunk je samostatný požadavek na API, který lze odeslat současně s ostatními. Přepis hodinové nahrávky rozdělené na šest desetiminutových chunků trvá přibližně stejně jako přepis jednoho desetiminutového chunku — nikoli šestinásobek.

Po zpracování se přepisy chunků spojují v pořadí. Každý chunk má timestamp offset — čas v originální nahrávce, od kterého začíná. Timestamps v přepisu chunku se přičtením tohoto offsetu převedou na absolutní časy odpovídající originální nahrávce. Klik na časový štítek v přepisu pak přeskočí přehrávač přesně na správné místo záznamu.

Na hranicích chunků slučovací algoritmus zkontroluje přechod: zda poslední slova předchozího chunku nekorespondují s prvními slovy dalšího — artefakt, který může vzniknout při překryvu. Duplicitní část se odstraní.

Jazykový model jako slučovací vrstva může přechody dále zkvalitňovat. Vidí kontext z obou stran hranice a vybírá přirozeně plynoucí variantu v místech, kde přepisy chunků mírně divergují.


Co se může pokazit a jak to poznat

Ideální chunking je neviditelný — výsledný přepis vypadá, jako by byl zpracován najednou. Špatný chunking zanechá ve výsledku stopy.

Zdvojená slova na hranici

Pokud překryv nebyl správně odstraněn, slučovací algoritmus nesmazal duplicitu: „Praha Praha je hlavní město." Snadno identifikovatelné vizuální kontrolou přepisu na místech, kde chunky navazují.

Přeříznutá věta

Pokud se chunk rozdělil uprostřed věty bez překryvu: věta bez konce nebo fragment bez začátku. Model přepíše, co slyší — ale kontext pro správnou interpretaci chybí. Výsledek může být foneticky správný, ale sémanticky rozbitý.

Chybné timestamps

Seskok v čase na hranici chunků: timestamp skočí z 10:00 na 9:58 nebo na 10:15. Znamená to chybu ve výpočtu offsetu. Projeví se při kontrole přepisu v přehrávači — klik na text nevede na správné místo v záznamu.

Jak ověřit kvalitu chunkování

Vizuální kontrola: přečíst přechody v přepisu každých 10 minut záznamu. Přechody by měly plynout jako zbytek textu bez viditelných švů.

Kontrola timestamps: kliknout na označený čas v přepisu a ověřit, zda přehrávač přeskočí na správné místo. Timestamp na začátku a na konci záznamu, a alespoň jeden v prostředku — to je dostatečná stichoproba.


Czech Transcription System zpracovává chunking automaticky. Uživatel nahraje soubor libovolné délky bez nutnosti ručního dělení. Hranice chunků jsou voleny na základě detekce ticha; přepis věty se tak nepřeruší uprostřed myšlenky. Timestamps ve výsledném přepisu odpovídají originální nahrávce — hodina záznamu se dohledává stejně snadno jako minutová ukázka.


Pokud vás zajímá technická stránka souborů před přepisem, přečtěte si o vstupních formátech zvuku A09. Pro zpracování velmi dlouhých nahrávek přes více modelů najednou je relevantní přehled slučování výsledků A13.


Zdroje: