Batchbearbetningspaket för Speech-containrar

Använd batchbearbetningspaketet för att komplettera och skala ut arbetsbelastningar i Speech-containrar. Det här verktyget med öppen källkod är tillgängligt som en container och underlättar batch-transkription för ett stort antal ljudfiler över valfritt antal lokala och molnbaserade slutpunkter för talcontainer.

Ett diagram som visar ett exempel på ett batch-kit-containerarbetsflöde.

Batch Kit-containern är tillgänglig kostnadsfritt på GitHub och Docker Hub. Du debiteras bara för de Speech-containrar som du använder.

Funktionalitet beskrivning
Batch-ljudfilsdistribution Skicka automatiskt ett stort antal filer till lokala eller molnbaserade slutpunkter för Speech-containern. Filer kan finnas på valfri POSIX-kompatibel volym, inklusive nätverksfilsystem.
Speech SDK-integrering Skicka vanliga flaggor till Speech SDK, inklusive: n-bästa hypoteser, diarisering, språk, svordomsmaskering.
Körningslägen Kör batchklienten en gång, kontinuerligt i bakgrunden eller skapa HTTP-slutpunkter för ljudfiler.
Feltolerans Försök automatiskt igen och fortsätt transkriptionen utan att förlora förloppet och skilja mellan vilka fel som kan och inte kan försökas igen.
Identifiering av slutpunktstillgänglighet Om en slutpunkt blir otillgänglig fortsätter batchklienten att transkribera med hjälp av andra containerslutpunkter. När klienten är tillgänglig börjar den automatiskt använda slutpunkten.
Snabbväxling av slutpunkt Lägg till, ta bort eller ändra slutpunkter för Speech-containern under körningen utan att avbryta batchförloppet. Uppdateringarna är omedelbara.
Realtidsloggning Realtidsloggning av begäranden, tidsstämplar och felorsaker med Speech SDK-loggfiler för varje ljudfil.

Bearbeta långt ljud på ett säkert sätt

Talcontainrar stöder ljud med en maximal varaktighet på 24 timmar. Segmentera ljud längre än 24 timmar innan du skickar det för transkription. Filstorlek är inte ett tillförlitligt substitut för varaktighet eftersom kodning, exempelfrekvens, bitdjup och kanalantal avgör antalet byte. Till exempel är 1 GB inte ett universellt segmenteringströskelvärde.

Vissa ljudpipelines använder en 32-bitarsräknare för att beräkna varaktigheten. Vid cirka 37,3 timmar kan räknaren svämma över och ge en kortare men giltig tidsangivelse. I det här fallet kan transkription rapportera framgång utan varning om att resultatet trunkeras. Den exakta platsen i koden för det här överflödet är inte känd.

Efter transkribering jämför du den ursprungliga ljudfilens längd med transkriptets slutliga offset eller den senast igenkända tidsstämpeln. Behandla ett resultat som slutar väsentligt före källljudet som ofullständigt, även om transkriptionen rapporterar framgång.

Om du konverterar källljud till RIFF/WAV använder du dessa värden för att identifiera var ett spill uppstod:

  • En längd på 274,568,704 byte för ett konverterat WAV-datasegment anger ett överflöde vid konvertering eller skrivning till fil.
  • En längd på 4,569,536,000 byte för ett datablock, eller en fil som är större än 4 GB med korrekt huvud, indikerar att filen skrevs korrekt och att överflödet inträffade senare i bearbetningskedjan. Kontakta Microsoft support för att kontakta tekniker för det här fallet.

RF64 och Wave64 (W64) är inte några direkta lösningar på det här problemet. Varje läsare och sökväg för varaktighetskontroll i pipelinen måste ha stöd för det valda formatet. Den Python inbyggda modulen avvisar till exempel RF64-filerwave.

Hämta containeravbildningen med docker pull

Använd docker pull-kommandot för att ladda ned den senaste batch kit-containern.

Kommentar

I följande exempel hämtas en offentlig containeravbildning från Docker Hub. Vi rekommenderar att du autentiserar med ditt Docker Hub-konto (docker login) först i stället för att göra en anonym pull-begäran. För att förbättra tillförlitligheten när du använder offentligt innehåll importerar och hanterar du avbildningen i ett privat Azure-containerregister. Läs mer om hur du arbetar med offentliga avbildningar.

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

Slutpunktskonfiguration

Batch-klienten använder en YAML-konfigurationsfil som anger de lokala containerslutpunkterna. Skriv följande exempel till /mnt/my_nfs/config.yaml, som används i följande exempel.

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

Det här YAML-exemplet anger tre talcontainrar på tre värdar. Den första värddatorn anges med en IPv4-adress, den andra värddatorn körs på samma virtuella dator som batchklienten och den tredje containern anges med DNS-värdnamnet till en annan virtuell dator. Värdet concurrency anger maximalt antal samtidiga filavskrifter som kan köras på samma container. Värdet rtf (realtidsfaktor) är valfritt och kan användas för att justera prestanda.

Batch-klienten kan dynamiskt identifiera om en slutpunkt blir otillgänglig (till exempel på grund av ett problem med containerns omstart eller nätverk) och när den blir tillgänglig igen. Transkriptionsbegäranden skickas inte till containrar som inte är tillgängliga och klienten fortsätter att använda andra tillgängliga containrar. Du kan lägga till, ta bort eller redigera slutpunkter när som helst utan att avbryta batchens förlopp.

Kör batchbearbetningscontainern

 

Kommentar

  • I det här exemplet används samma katalog (/my_nfs) för konfigurationsfilen och indata, utdata och loggkataloger. Du kan använda värdbaserade eller NFS-monterade kataloger för dessa mappar.
  • När klienten körs med –h flaggan visas de tillgängliga kommandoradsparametrarna och deras standardvärden. 
  • Containern för batchbearbetning stöds endast i Linux.

Använd Docker-kommandot run för att starta containern. Det här kommandot startar ett interaktivt gränssnitt i containern.

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

Så här kör du batchklienten:

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

Så här kör du batchklienten och containern i ett enda kommando:

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

Klienten börjar köra. Om en ljudfil transkriberades i en tidigare körning hoppar klienten automatiskt över filen. Filer skickas med ett automatiskt återförsök om tillfälliga fel inträffar och du kan skilja mellan vilka fel som du vill att klienten ska försöka igen på. Vid ett transkriptionsfel fortsätter klienten transkriptionen och kan försöka igen utan att förlora förloppet.

Körningslägen

Batchbearbetningssatsen erbjuder tre lägen med hjälp av parametern --run-mode .

ONESHOT-läget transkriberar en batch ljudfiler (från en indatakatalog och en valfri fillista) till en utdatamapp.

Ett diagram som visar hur batch-kit-behållare behandlar filer i enstegsläge.

  1. Definiera slutpunkterna för Speechcontainern som batchklienten använder i config.yaml-filen.
  2. Placera ljudfiler för transkription i en indatakatalog.
  3. Anropa containern i katalogen för att börja bearbeta filerna. Om ljudfilen redan transkriberas i en tidigare körning med samma utdatakatalog (samma filnamn och kontrollsumma) hoppar klienten över filen.
  4. Filerna skickas till containerslutpunkterna från steg 1.
  5. Loggar och utdata från Speech-containern returneras till den angivna utdatakatalogen.

Loggning

Kommentar

Batch-klienten kan skriva över den run.log filen regelbundet om den blir för stor.

Klienten skapar en run.log fil i katalogen som anges av -log_folder argumentet i docker-kommandot run . Loggar registreras som standard på Debuggnivå. Samma loggar skickas till stdout/stderr, och filtreras beroende på argumenten -file_log_level eller console_log_level . Den här loggen är bara nödvändig för felsökning eller om du behöver skicka en spårning för support. Loggningsmappen innehåller också Speech SDK-loggarna för varje ljudfil.

Utdatakatalogen som anges av -output_folder innehåller en run_summary.json fil som skrivs om var 30:e sekund eller när nya transkriptioner har slutförts. Du kan använda den här filen för att kontrollera förloppet när batchen fortsätter. Den innehåller också den slutliga körningsstatistiken och den slutliga statusen för varje fil när batchen har slutförts. Batchen slutförs när processen avslutas korrekt.

Nästa steg