Sada dávkového zpracování pro kontejnery Speech

Sada dávkového zpracování slouží k rozšíření a škálování úloh v kontejnerech služby Speech. Tento nástroj s otevřeným zdrojovým kódem, který je k dispozici jako kontejner, usnadňuje dávkový přepis pro velký počet zvukových souborů v libovolném počtu místních a cloudových koncových bodů kontejnerů pro zpracování řeči.

Diagram znázorňující ukázkový pracovní postup kontejneru sady Batch-Kit

Kontejner sady Batch je k dispozici zdarma na GitHubu a centru Dockeru. Účtují se vám pouze kontejnery služby Speech, které používáte.

Funkce Popis
Distribuce zvukových souborů v dávkách Automatické odesílání velkého počtu souborů do místních nebo cloudových koncových bodů kontejneru Speech Soubory můžou být na libovolném svazku kompatibilním se standardem POSIX, včetně systémů síťových souborů.
Integrace sady Speech SDK Předávejte do sady Speech SDK běžné parametry, jako jsou n-best hypotézy, diarizace, jazyk a maskování vulgárních výrazů.
Režimy spuštění Spusťte dávkového klienta jednou, nepřetržitě na pozadí nebo vytvořte koncové body HTTP pro zvukové soubory.
Odolnost proti chybám Automaticky zopakujte a pokračujte v přepisu bez ztráty průběhu a rozlište chyby, které lze, a které nelze znovu vyzkoušet.
Detekce dostupnosti koncového bodu Pokud se koncový bod stane nedostupným, klient batch pokračuje v přepisu pomocí jiných koncových bodů kontejneru. Jakmile je klient dostupný, začne automaticky používat koncový bod.
Hot swap koncového bodu Přidejte, odeberte nebo upravte koncové body kontejneru služby Speech během běhu bez přerušení dávkového průběhu. Aktualizace jsou okamžité.
Protokolování v reálném čase Protokolování žádostí, časových razítek a důvodů selhání v reálném čase s protokolovými soubory sady Speech SDK pro každý zvukový soubor

Bezpečné zpracování dlouhého zvuku

Kontejnery služby Speech podporují zvuk s maximální dobou trvání 24 hodin. Před odesláním k přepisu rozdělte jakýkoli zvukový záznam delší než 24 hodin na segmenty. Velikost souboru není spolehlivou náhradou za dobu trvání, protože kódování, vzorkovací frekvence, hloubka bitu a počet kanálů určují počet bajtů. Například 1 GB není univerzální prahová hodnota segmentace.

Některé zvukové kanály používají k výpočtu doby trvání 32bitový čítač. Po přibližně 37,3 hodinách může dojít k přetečení čítače a výsledkem může být kratší, zdánlivě platná doba trvání. V tomto případě může přepis hlásit úspěch bez upozornění, že je výsledek zkrácen. Přesné místo v kódu, kde k tomuto přetečení dochází, není známo.

Po přepisu porovnejte délku původního zvukového záznamu s koncovým časovým údajem v přepisu nebo s posledním rozpoznaným časovým razítkem. Považujte výsledek, který končí výrazně před zdrojovým audiem, jako neúplný, i když přepis hlásí úspěch.

Pokud převedete zdrojový zvuk na RIFF/WAV, použijte tyto hodnoty k identifikaci, kde došlo k přetečení:

  • Převedený datový blok WAV délka 274,568,704 bajtů označuje přetečení během převodu nebo zápisu souboru.
  • Délka datového 4,569,536,000 bloku bajtů nebo soubor větší než 4 GB se správnou hlavičkou označuje, že se soubor zapisoval správně a přetečení proběhlo později v kanálu zpracování. Kontaktujte Microsoft podporu a požádejte o zapojení techniků pro tento případ.

RF64 a Wave64 (W64) nejsou přímými náhradami tohoto řešení. Každý čtenář a cesta kontroly doby trvání v kanálu musí podporovat vybraný formát. Například integrovaný modul Python wave odmítne soubory RF64.

Získání image kontejneru pomocí docker pull

Pomocí příkazu docker pull stáhněte nejnovější kontejner sady Batch Kit.

Poznámka:

Následující příklad načítá image veřejného kontejneru z Docker Hubu. Doporučujeme, abyste se nejdřív ověřili pomocí svého účtu Docker Hubu (docker login) místo vytvoření anonymní žádosti o přijetí změn. Pokud chcete zvýšit spolehlivost při používání veřejného obsahu, naimportujte a spravujte image v privátním registru kontejnerů Azure. Přečtěte si další informace o práci s veřejnými imagemi.

docker pull docker.io/batchkit/speech-batch-kit:latest

Konfigurace koncového bodu

Klient batch používá konfigurační soubor YAML, který určuje místní koncové body kontejneru. Napište následující příklad do /mnt/my_nfs/config.yaml, který se používá v následujících příkladech.

MyContainer1:
  concurrency: 5
  host: 192.168.0.100
  port: 5000
  rtf: 3
MyContainer2:
  concurrency: 5
  host: BatchVM0.corp.redmond.microsoft.com
  port: 5000
  rtf: 2
MyContainer3:
  concurrency: 10
  host: localhost
  port: 6001
  rtf: 4

Tento příklad YAML uvádí tři kontejnery služby Speech na třech hostitelích. První hostitel je určen adresou IPv4, druhý hostitel běží na stejném virtuálním počítači jako dávkového klienta a třetí kontejner je určen názvem hostitele DNS jiného virtuálního počítače. Hodnota concurrency určuje maximální počet souběžných přepisů souborů, které se dají spustit ve stejném kontejneru. Hodnota rtf (faktor v reálném čase) je volitelná a dá se použít k ladění výkonu.

Dávkový klient může dynamicky zjistit, kdy se endpoint stane nedostupným (například kvůli restartování kontejneru nebo síťovému problému) a když se znovu stane dostupným. Požadavky na přepis se neodesílají do kontejnerů, které nejsou k dispozici, a klient nadále používá jiné dostupné kontejnery. Koncové body můžete kdykoli přidávat, odebírat nebo upravovat, aniž byste přerušili průběh zpracování dávky.

Spusťte kontejner dávkového zpracování

 

Poznámka:

  • Tento příklad používá stejný adresář (/my_nfs) pro konfigurační soubor a vstupy, výstupy a adresáře protokolů. Pro tyto složky můžete použít hostované adresáře nebo adresáře připojené systémem souborů NFS.
  • Spuštění klienta s příznakem –h obsahuje seznam dostupných parametrů příkazového řádku a jejich výchozí hodnoty. 
  • Kontejner dávkového zpracování je podporován pouze v Linuxu.

Ke spuštění kontejneru použijte příkaz Dockeru run . Tento příkaz spustí interaktivní prostředí uvnitř kontejneru.

docker run --network host --rm -ti -v /mnt/my_nfs:/my_nfs --entrypoint /bin/bash /mnt/my_nfs:/my_nfs docker.io/batchkit/speech-batch-kit:latest

Spuštění dávkového klienta:

run-batch-client -config /my_nfs/config.yaml -input_folder /my_nfs/audio_files -output_folder /my_nfs/transcriptions -log_folder /my_nfs/logs -file_log_level DEBUG -nbest 1 -m ONESHOT -diarization None -language en-US -strict_config

Spuštění dávkového klienta a kontejneru v jednom příkazu:

docker run --network host --rm -ti -v /mnt/my_nfs:/my_nfs docker.io/batchkit/speech-batch-kit:latest -config /my_nfs/config.yaml -input_folder /my_nfs/audio_files -output_folder /my_nfs/transcriptions -log_folder /my_nfs/logs

Klient se spustí. Pokud byl zvukový soubor přepsán v předchozím spuštění, klient soubor automaticky přeskočí. Soubory se odesílají s automatickým opětovným pokusem, pokud dojde k přechodným chybám, a můžete určit, které chyby chcete, aby klient znovu vyzkoušel. Při chybě přepisu klient pokračuje v přepisu a může to zkusit znovu, aniž by došlo ke ztrátě průběhu.

Režimy spuštění

Sada dávkového zpracování nabízí pomocí parametru --run-mode tři režimy.

ONESHOT režim přepisuje jednu dávku zvukových souborů (ze vstupního adresáře a volitelného seznamu souborů) do výstupní složky.

Diagram znázorňující soubory zpracování kontejnerů sady Batch-Kit v režimu jedním snímkem

  1. Definujte koncové body kontejneru služby Speech, které dávkový klient používá v config.yaml souboru.
  2. Umístěte zvukové soubory pro přepis do vstupního adresáře.
  3. Vyvolejte kontejner v adresáři pro spuštění zpracování souborů. Pokud je zvukový soubor již přepsán v předchozím spuštění se stejným výstupním adresářem (stejný název souboru a kontrolní součet), klient soubor přeskočí.
  4. Soubory se odesílají do koncových bodů kontejneru z kroku 1.
  5. Do zadaného výstupního adresáře se vrátí protokoly a výstup kontejneru služby Speech.

Protokolování

Poznámka:

Dávkový klient může pravidelně přepisovat soubor run.log, pokud jeho velikost přesáhne limit.

Klient vytvoří soubor run.log v adresáři určeném -log_folder argumentem v příkazu dockeru run . Protokoly se ve výchozím nastavení zaznamenávají na úrovni DEBUG. Stejné protokoly se odesílají do objektu stdout/stderra filtrují se v závislosti na argumentech-file_log_level.console_log_level Tento protokol je nezbytný pouze pro účely ladění nebo pokud potřebujete odeslat trasu pro podporu. Složka protokolování obsahuje také protokoly sady Speech SDK pro každý zvukový soubor.

Výstupní adresář specifikovaný -output_folder obsahuje soubor run_summary.json, který se pravidelně přepisuje každých 30 sekund nebo vždy, když jsou dokončeny nové přepisy. Pomocí tohoto souboru můžete sledovat průběh, jak dávka probíhá. Obsahuje také statistiku konečného spuštění a konečný stav každého souboru po dokončení dávky. Dávka se dokončí, když má proces čistý výstup.

Další kroky