Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj zestawu do przetwarzania wsadowego, aby uzupełnić i skalować obciążenia w kontenerach mowy. Dostępne w formie kontenera, to otwartoźródłowe narzędzie ułatwia transkrypcję wsadową dużej liczby plików audio na różnych lokalnych i chmurowych punktach końcowych dla systemów rozpoznawania mowy.
Kontener zestawu wsadowego jest dostępny bezpłatnie na GitHubie i Docker Hubie. Opłaty są naliczane tylko za używane kontenery usługi rozpoznawania mowy.
| Funkcja | opis |
|---|---|
| Dystrybucja plików audio w partii | Automatycznie wysyłaj dużą liczbę plików do lokalnych lub chmurowych punktów końcowych kontenera usługi Mowa. Pliki mogą znajdować się na dowolnym woluminie zgodnym ze standardem POSIX, w tym w systemach plików sieciowych. |
| Integracja zestawu SDK usługi mowy | Przekaż standardowe flagi do Speech SDK, w tym: najlepsze n-hipotezy, diarizacja, język, maskowanie wulgaryzmów. |
| Tryby uruchamiania | Uruchom klienta wsadowego raz, stale w tle lub utwórz punkty końcowe HTTP dla plików audio. |
| Odporność na uszkodzenia | Automatycznie ponów próbę i kontynuuj transkrypcję bez utraty postępu oraz rozróżniaj, które błędy mogą i nie można ich ponowić. |
| Wykrywanie dostępności punktu końcowego | Jeśli punkt końcowy stanie się niedostępny, klient wsadowy kontynuuje transkrypcję przy użyciu innych punktów końcowych kontenera. Gdy klient jest dostępny, automatycznie rozpoczyna korzystanie z punktu końcowego. |
| Wymiana punktów końcowych na gorąco | Dodawanie, usuwanie lub modyfikowanie punktów końcowych kontenera służącego do przetwarzania mowy podczas wykonywania wsadu, bez przerywania jego postępu. Aktualizacje są natychmiastowe. |
| Rejestrowanie w czasie rzeczywistym | Rejestrowanie żądań, sygnatur czasowych i przyczyn niepowodzenia w czasie rzeczywistym z plikami dziennika zestawu SPEECH SDK dla każdego pliku audio. |
Bezpieczne przetwarzanie długiego dźwięku
Kontenery mowy obsługują dźwięk z maksymalnym czasem trwania 24 godzin. Podziel wszystkie pliki audio dłuższe niż 24 godziny przed przesłaniem ich do transkrypcji. Rozmiar pliku nie jest niezawodnym zamiennikiem czasu trwania, ponieważ kodowanie, częstotliwość próbkowania, głębokość bitów i liczba kanałów określają liczbę bajtów. Na przykład 1 GB nie jest uniwersalnym progiem segmentacji.
Niektóre ścieżki przetwarzania dźwięku wykorzystują 32-bitowy licznik do obliczania czasu trwania. Po około 37,3 godziny licznik może ulec przepełnieniu i zwrócić krótszy, pozornie prawidłowy czas trwania. W takim przypadku transkrypcja może zgłosić powodzenie bez ostrzeżenia, że wynik zostanie obcięty. Dokładne miejsce w kodzie, w którym występuje to przepełnienie, nie jest znane.
Po transkrypcji porównaj oryginalny czas trwania dźwięku z końcowym przesunięciem w transkrypcji lub ostatnim rozpoznanym znacznikiem czasu. Traktuj wynik, który kończy się znacząco przed końcem oryginalnego nagrania audio, jako niekompletny, nawet jeśli transkrypcja wskazuje powodzenie.
Jeśli przekonwertujesz dźwięk źródłowy na RIFF/WAV, użyj tych wartości, aby ułatwić zidentyfikowanie miejsca wystąpienia przepełnienia:
- Długość przekonwertowanego fragmentu danych WAV wynosząca
274,568,704bajtów wskazuje na przepełnienie podczas konwersji lub zapisu pliku. - Fragment danych o długości
4,569,536,000bajtów lub plik większy niż 4 GB z poprawnym nagłówkiem wskazuje, że plik został zapisany poprawnie, a przepełnienie nastąpiło później w potoku przetwarzania. Skontaktuj się z pomocą techniczną Microsoft, aby zaangażować inżynierów w tym przypadku.
RF64 i Wave64 (W64) nie są bezpośrednim rozwiązaniem tego problemu. Każda ścieżka odczytu i sprawdzania czasu trwania w potoku musi obsługiwać wybrany format. Na przykład wbudowany wave moduł Python odrzuca pliki RF64.
Pobieranie obrazu kontenera za pomocą polecenia docker pull
Użyj polecenia docker pull, aby pobrać najnowszy kontener zestawu batch.
Uwaga
Poniższy przykład ściąga publiczny obraz kontenera z usługi Docker Hub. Zalecamy najpierw uwierzytelnienie przy użyciu konta usługi Docker Hub (docker login) zamiast tworzenia anonimowego żądania ściągnięcia. Aby zwiększyć niezawodność podczas korzystania z zawartości publicznej, zaimportuj obraz i zarządzaj nim w prywatnym rejestrze kontenerów platformy Azure.
Dowiedz się więcej o pracy z obrazami publicznymi.
docker pull docker.io/batchkit/speech-batch-kit:latest
Konfiguracja punktu końcowego
Klient wsadowy używa pliku konfiguracji YAML, który określa lokalne punkty końcowe kontenera. Zapisz poniższy przykład w /mnt/my_nfs/config.yaml, którego użyto w poniższych przykładach.
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
Ten przykład YAML określa trzy kontenery mowy na trzech hostach. Pierwszy host jest określany przez adres IPv4, drugi host działa na tej samej maszynie wirtualnej co klient wsadowy, a trzeci kontener jest określony przez nazwę hosta DNS innej maszyny wirtualnej. Wartość concurrency określa maksymalną współbieżną transkrypcję plików, które mogą być uruchamiane w tym samym kontenerze.
rtf Wartość (współczynnik czasu rzeczywistego) jest opcjonalna i może służyć do dostosowywania wydajności.
Klient wsadowy może dynamicznie wykrywać, czy punkt końcowy stanie się niedostępny (na przykład z powodu problemu z ponownym uruchomieniem kontenera lub siecią), a gdy stanie się ponownie dostępny. Żądania transkrypcji nie są wysyłane do kontenerów, które są niedostępne, a klient kontynuuje korzystanie z innych dostępnych kontenerów. Punkty końcowe można dodawać, usuwać i edytować w dowolnym momencie bez przerywania postępu partii.
Uruchom kontener przetwarzania wsadowego
Uwaga
- W tym przykładzie użyto tego samego katalogu (
/my_nfs) dla pliku konfiguracji i danych wejściowych, danych wyjściowych i katalogów dzienników. Dla tych folderów można używać katalogów hostowanych lub zamontowanych w systemie plików NFS. - Uruchomienie klienta z flagą
–hzawiera listę dostępnych parametrów wiersza polecenia i ich wartości domyślne. - Kontener przetwarzania wsadowego jest obsługiwany tylko na platformie Linux.
Użyj polecenia platformy Docker run , aby uruchomić kontener. To polecenie uruchamia interaktywną powłokę wewnątrz kontenera.
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
Aby uruchomić klienta wsadowego:
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
Aby uruchomić klienta wsadowego i kontener w jednym poleceniu:
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 rozpoczyna działanie. Jeśli plik audio został transkrypowany w poprzednim przebiegu, klient automatycznie pomija plik. Pliki są wysyłane z automatycznym ponawianiem w przypadku wystąpienia błędów przejściowych, a Ty możesz zdecydować, które błędy mają być ponawiane przez klienta. W przypadku błędu transkrypcji klient kontynuuje transkrypcję i może ponowić próbę bez utraty postępu.
Tryby uruchamiania
Zestaw przetwarzania wsadowego oferuje trzy tryby, używając parametru --run-mode.
ONESHOT tryb transkrybuje pojedynczą partię plików audio (z katalogu wejściowego i opcjonalnej listy plików) do folderu wyjściowego.
Diagram przedstawiający przetwarzanie plików w kontenerze zestawu "batch-kit" w trybie jednorazowym.
- Zdefiniuj punkty końcowe kontenera Speech, które klient wsadowy używa w pliku
config.yaml. - Umieść pliki audio na potrzeby transkrypcji w katalogu wejściowym.
- Wywołaj kontener w katalogu, aby rozpocząć przetwarzanie plików. Jeśli plik audio został już transkrybowany w poprzednim uruchomieniu z tym samym katalogiem wyjściowym (ta sama nazwa pliku i suma kontrolna), klient pomija ten plik.
- Pliki są wysyłane do punktów końcowych kontenera z kroku 1.
- Dzienniki i dane wyjściowe kontenera usługi Mowa są zwracane do określonego katalogu wyjściowego.
Rejestrowanie
Uwaga
Klient wsadowy może okresowo nadpisywać plik run.log, jeśli jest zbyt duży.
Klient tworzy plik run.log w katalogu określonym przez -log_folder argument w poleceniu platformy Docker run . Dzienniki są domyślnie przechwytywane na poziomie DEBUG. Te same dzienniki są wysyłane do stdout/stderr i filtrowane w zależności od argumentów -file_log_level lub console_log_level. Ten dziennik jest niezbędny tylko do debugowania lub jeśli konieczne jest wysłanie śladu w celu uzyskania pomocy technicznej. Folder logów zawiera również logi SDK do obsługi mowy dla każdego pliku audio.
Katalog wyjściowy określony przez -output_folder zawiera plik run_summary.json, który jest okresowo przepisywany co 30 sekund lub po zakończeniu nowych transkrypcji. Możesz użyć tego pliku, aby śledzić postępy w miarę postępu przetwarzania wsadowego. Zawiera również końcowe statystyki uruchomienia i stan końcowy każdego pliku po zakończeniu przetwarzania wsadowego. Partia jest zakończona, gdy proces ma czyste zakończenie.