W ciągu ostatnich kilku lat internetowe platformy edukacyjne odnotowały wzrost popularności i wzrost popytu na naukę w oparciu o wideo, ponieważ oferuje ona skuteczne medium do angażowania uczniów. Aby rozszerzyć działalność na rynki międzynarodowe i dotrzeć do zróżnicowanej kulturowo i językowo populacji, firmy poszukują również dywersyfikacji swojej oferty edukacyjnej poprzez lokalizowanie treści na wiele języków. Firmy te szukają niezawodnych i opłacalnych sposobów rozwiązywania problemów związanych z lokalizacją.
Lokalizacja treści obejmuje głównie tłumaczenie oryginalnych głosów na nowe języki i dodawanie pomocy wizualnych, takich jak napisy. Tradycyjnie proces ten jest kosztowny, ręczny i zajmuje dużo czasu, w tym współpracę ze specjalistami od lokalizacji. Dzięki mocy usług uczenia maszynowego AWS (ML), takich jak Amazon Transcribe, Tłumacz Amazon, Amazon Polly, możesz stworzyć realne i opłacalne rozwiązanie lokalizacyjne. Możesz użyć usługi Amazon Transscribe, aby utworzyć transkrypcję istniejących strumieni audio i wideo, a następnie przetłumaczyć tę transkrypcję na wiele języków za pomocą Tłumacza Amazon. Następnie możesz użyć Amazon Polly, usługi zamiany tekstu na mowę, aby przekonwertować przetłumaczony tekst na naturalnie brzmiącą mowę ludzką.
Kolejnym krokiem lokalizacji jest dodanie napisów do treści, co może poprawić dostępność i zrozumienie oraz pomóc widzom lepiej zrozumieć filmy. Tworzenie napisów w treści wideo może być trudne, ponieważ przetłumaczona mowa nie pasuje do oryginalnego czasu wypowiedzi. Ta synchronizacja między dźwiękiem a napisami jest krytycznym zadaniem do rozważenia, ponieważ może odłączyć odbiorców od treści, jeśli nie są zsynchronizowani. Amazon Polly oferuje rozwiązanie tego wyzwania poprzez umożliwienie znaki mowy, którego można użyć do utworzenia pliku napisów, który można zsynchronizować z wygenerowaną mową.
W tym poście opisujemy rozwiązanie lokalizacyjne przy użyciu usług AWS ML, w którym używamy oryginalnego angielskiego filmu i konwertujemy go na hiszpański. Skupiamy się również na używaniu znaków mowy do tworzenia zsynchronizowanego pliku napisów w języku hiszpańskim.
Omówienie rozwiązania
Poniższy schemat ilustruje architekturę rozwiązania.
Rozwiązanie pobiera plik wideo i ustawienia języka docelowego jako dane wejściowe i wykorzystuje Amazon Transscribe do tworzenia transkrypcji wideo. Następnie korzystamy z Tłumacza Amazon, aby przetłumaczyć transkrypcję na język docelowy. Przetłumaczony tekst jest dostarczany jako dane wejściowe do Amazon Polly w celu wygenerowania strumienia audio i znaków mowy w języku docelowym. Amazon Polly powraca wyjście znaku mowy w rozdzielonym wierszami strumieniu JSON, który zawiera pola, takie jak czas, typ, początek, koniec i wartość. Wartość może się różnić w zależności od typu znaku mowy wymaganego w danych wejściowych, na przykład SSML, wisem, słowo lub zdanie. Na potrzeby naszego przykładu poprosiliśmy o typ znaku mowy as word
. Dzięki tej opcji Amazon Polly dzieli zdanie na poszczególne słowa w zdaniu oraz ich czas rozpoczęcia i zakończenia w strumieniu audio. Za pomocą tych metadanych znaki mowy są następnie przetwarzane w celu wygenerowania napisów dla odpowiedniego strumienia audio generowanego przez Amazon Polly.
Wreszcie używamy Podstawowa konwersja mediów AWS aby wyrenderować końcowy film z przetłumaczonym dźwiękiem i odpowiednimi napisami.
Poniższy film przedstawia ostateczny wynik rozwiązania:
Przepływ pracy funkcji krokowych AWS
Używamy pliki Funkcje kroków AWS aby zaaranżować ten proces. Poniższy rysunek przedstawia widok wysokiego poziomu przepływu pracy Funkcje kroków (niektóre kroki zostały pominięte na diagramie dla lepszej przejrzystości).
Kroki przepływu pracy są następujące:
- Użytkownik przesyła źródłowy plik wideo do Usługa Amazon Simple Storage Łyżka (Amazon S3).
- Połączenia Powiadomienie o zdarzeniu S3 wyzwala AWS Lambda funkcjonować state_machine.py (nie pokazano na diagramie), który wywołuje maszynę stanów Step Functions.
- Pierwszy krok, Transkrybuj dźwięk, wywołuje funkcję Lambda transkrypcja.py, który wykorzystuje usługę Amazon Transscribe do generowania transkrypcji dźwięku ze źródła wideo.
Poniższy przykładowy kod pokazuje, jak utworzyć zadanie transkrypcji za pomocą usługi Amazon Transscribe Boto3 Pakiet SDK Pythona:
Po zakończeniu zadania pliki wyjściowe są zapisywane w zasobniku S3, a proces przechodzi do następnego kroku tłumaczenia treści.
- Połączenia Przetłumacz transkrypcję step wywołuje funkcję Lambda przetłumacz.py który używa Tłumacza Amazon do tłumaczenia transkrypcji na język docelowy. Tutaj używamy tłumaczenia synchronicznego/w czasie rzeczywistym za pomocą przetłumacz_tekst funkcjonować:
Tłumaczenie synchroniczne ma ograniczenia dotyczące rozmiaru dokumentu, który może przetłumaczyć; w chwili pisania tego tekstu jest ustawiony na 5,000 bajtów. W przypadku większych rozmiarów dokumentów rozważ użycie asynchronicznej trasy tworzenia zadania za pomocą start_text_translation_job i sprawdzanie statusu przez description_text_translation_job.
- Następnym krokiem jest Step Functions Parallel stan, w którym tworzymy równoległe gałęzie w naszej maszynie stanów.
- W pierwszej gałęzi wywołujemy funkcję Lambda funkcję Lambda generuj_polly_audio.py aby wygenerować nasz strumień audio Amazon Polly:
Tutaj używamy start_speech_synthesis_task metoda zestawu SDK Amazon Polly Python do wyzwalania zadania syntezy mowy, które tworzy dźwięk Amazon Polly. Ustawiliśmy
OutputFormat
domp3
, który informuje Amazon Polly o wygenerowaniu strumienia audio dla tego wywołania interfejsu API. - W drugiej gałęzi wywołujemy funkcję Lambda generuj_znaki_mowy.py aby wygenerować wyjście znaków mowy:
- W pierwszej gałęzi wywołujemy funkcję Lambda funkcję Lambda generuj_polly_audio.py aby wygenerować nasz strumień audio Amazon Polly:
- Ponownie używamy start_speech_synthesis_task metoda, ale sprecyzuj
OutputFormat
dojson
, który nakazuje Amazon Polly generowanie znaków mowy dla tego wywołania interfejsu API.
W kolejnym kroku drugiej gałęzi wywołujemy funkcję Lambda generuj_napisy.py, który implementuje logikę generowania pliku napisów z danych wyjściowych znaków mowy.
Używa modułu Python w pliku webvtt_utils.py. Ten moduł ma wiele funkcji narzędziowych do tworzenia pliku napisów; jedna taka metoda get_phrases_from_speechmarks
odpowiada za parsowanie pliku znaków mowy. Struktura JSON znaków mowy zapewnia tylko czas rozpoczęcia dla każdego słowa z osobna. Aby utworzyć czas napisów wymagany dla pliku SRT, najpierw tworzymy frazy zawierające około n (gdzie n=10) słów z listy słów w pliku znaczników mowy. Następnie zapisujemy je do formatu pliku SRT, biorąc czas początkowy od pierwszego słowa we frazie, a dla czasu końcowego używamy czasu początkowego słowa (n+1) i odejmujemy go przez 1, aby utworzyć wpis sekwencyjny . Poniższa funkcja tworzy frazy w ramach przygotowań do ich zapisu do pliku SRT:
- Ostatni krok, Konwersja mediów, wywołuje funkcję Lambda utwórz_mediaconvert_job.py aby połączyć strumień audio z Amazon Polly i plik napisów ze źródłowym plikiem wideo w celu wygenerowania końcowego pliku wyjściowego, który jest następnie przechowywany w wiadrze S3. Ten krok wykorzystuje
MediaConvert
, usługa transkodowania wideo oparta na plikach z funkcjami klasy emisyjnej. Umożliwia łatwe tworzenie treści wideo na żądanie i łączy zaawansowane funkcje wideo i audio z prostym interfejsem internetowym. Tutaj znowu używamy Pythona Boto3 SDK do tworzeniaMediaConvert
stanowisko:
Wymagania wstępne
Przed rozpoczęciem musisz spełnić następujące wymagania wstępne:
Wdróż rozwiązanie
Aby wdrożyć rozwiązanie za pomocą AWS CDK, wykonaj następujące kroki:
- Sklonuj składnica:
- Aby upewnić się, że AWS CDK jest bootstrapped, uruchom polecenie
cdk bootstrap
z katalogu głównego repozytorium: - Zmień katalog roboczy na katalog główny repozytorium i uruchom następujące polecenie:
Domyślnie docelowe ustawienia dźwięku są ustawione na hiszpański amerykański (es-US
). Jeśli planujesz przetestować go z innym językiem docelowym, użyj następującego polecenia:
Proces trwa kilka minut, po czym wyświetla link, za pomocą którego można wyświetlić docelowy plik wideo z przetłumaczonym dźwiękiem i przetłumaczonymi napisami.
Przetestuj rozwiązanie
Aby przetestować to rozwiązanie, wykorzystaliśmy niewielką część poniższych AWS re:Wymyśl wideo 2017 z YouTube, gdzie po raz pierwszy wprowadzono Amazon Transscribe. Możesz również przetestować rozwiązanie za pomocą własnego filmu. Oryginalnym językiem naszego testowego filmu jest język angielski. Podczas wdrażania tego rozwiązania można określić docelowe ustawienia dźwięku lub użyć domyślnych docelowych ustawień dźwięku, które wykorzystują język hiszpański do generowania dźwięku i napisów. Rozwiązanie tworzy zasobnik S3, którego można użyć do przesłania pliku wideo.
- W konsoli Amazon S3 przejdź do zasobnika
PollyBlogBucket
. - Wybierz wiadro, przejdź do
/inputVideo
katalogu i wgraj plik wideo (rozwiązanie jest testowane z filmami typu mp4). W tym momencie powiadomienie o zdarzeniu S3 wyzwala funkcję Lambda, która uruchamia maszynę stanów. - W konsoli Step Functions przejdź do maszyny stanów (
ProcessAudioWithSubtitles
). - Wybierz jeden z przebiegów maszyny stanów, aby zlokalizować Inspektor wykresów.
Pokazuje wyniki uruchomienia dla każdego stanu. Przepływ pracy funkcji kroków zajmuje kilka minut, po czym można sprawdzić, czy wszystkie kroki zostały pomyślnie wykonane.
Przejrzyj wyniki
Aby przejrzeć dane wyjściowe, otwórz konsolę Amazon S3 i sprawdź, czy plik audio (.mp3) i plik znaku mowy (.marks) są przechowywane w zasobniku S3 pod <ROOT_S3_BUCKET>/<UID>/synthesisOutput/
.
Poniżej znajduje się przykładowy plik znaków mowy wygenerowany z przetłumaczonego tekstu:
W tym wyniku każda część tekstu jest podzielona na znaki mowy:
- czas – Znacznik czasu w milisekundach od początku odpowiedniego strumienia audio
- rodzaj – Rodzaj znaku mowy (zdanie, słowo, viseme lub SSML)
- początek – Przesunięcie w bajtach (nie znakach) początku obiektu w tekście wejściowym (bez znaków viseme)
- zakończenia – Przesunięcie w bajtach (nie znakach) końca obiektu w tekście wejściowym (bez znaków viseme)
- wartość – Poszczególne słowa w zdaniu
Wygenerowany plik napisów jest zapisywany z powrotem do zasobnika S3. Możesz znaleźć plik pod <ROOT_S3_BUCKET>/<UID>/subtitlesOutput/
. Sprawdź plik napisów; treść powinna być zbliżona do poniższego tekstu:
Po wygenerowaniu pliku napisów i pliku audio ostateczny źródłowy plik wideo jest tworzony za pomocą MediaConvert. Sprawdź konsolę MediaConvert, aby sprawdzić, czy stan zadania to COMPLETE
.
Po zakończeniu zadania MediaConvert, końcowy plik wideo jest generowany i zapisywany z powrotem do wiadra S3, który można znaleźć pod <ROOT_S3_BUCKET>/<UID>/convertedAV/
.
W ramach tego wdrożenia końcowy film jest rozpowszechniany za pośrednictwem Amazon CloudFront (CDN) i wyświetlane w terminalu lub w Tworzenie chmury AWS Konsola.
Otwórz adres URL w przeglądarce, aby wyświetlić oryginalny film z dodatkowymi opcjami dźwięku i napisów. Możesz sprawdzić, czy przetłumaczony dźwięk i napisy są zsynchronizowane.
Wnioski
W tym poście omówiliśmy, jak tworzyć nowe wersje językowe plików wideo bez konieczności ręcznej interwencji. Twórcy treści mogą wykorzystać ten proces do zsynchronizowania dźwięku i napisów w swoich filmach i dotarcia do odbiorców na całym świecie.
Możesz łatwo zintegrować to podejście z własnymi rurociągami produkcyjnymi, aby obsługiwać duże ilości i skalować zgodnie z Twoimi potrzebami. Amazon Polly używa Neuronowy TTS (NTTS) do tworzenia naturalnych i podobnych do ludzkich głosów zamiany tekstu na mowę. Obsługuje również generowanie mowy z SSML, który zapewnia dodatkową kontrolę nad sposobem, w jaki Amazon Polly generuje mowę z dostarczonego tekstu. Amazon Polly zapewnia również różnorodność różnych głosów w wielu językach, aby zaspokoić Twoje potrzeby.
Zacznij korzystać z usług uczenia maszynowego AWS, odwiedzając stronę Strona produktu, lub odnieś się do Laboratorium rozwiązań do uczenia maszynowego Amazon Amazon Strona, na której możesz współpracować z ekspertami, aby wprowadzić rozwiązania uczenia maszynowego do swojej organizacji.
Dodatkowe zasoby
Aby uzyskać więcej informacji o usługach wykorzystywanych w tym rozwiązaniu, zapoznaj się z następującymi informacjami:
O autorach
Reagana Rosario pracuje jako architekt rozwiązań w AWS skupiając się na firmach zajmujących się technologiami edukacyjnymi. Uwielbia pomagać klientom w tworzeniu skalowalnych, wysoce dostępnych i bezpiecznych rozwiązań w chmurze AWS. Ma ponad dziesięcioletnie doświadczenie w pracy na różnych stanowiskach technologicznych, koncentrując się na inżynierii oprogramowania i architekturze.
Anila Kodali jest architektem rozwiązań w Amazon Web Services. Współpracuje z klientami AWS EdTech, prowadząc ich z najlepszymi praktykami architektonicznymi dotyczącymi migracji istniejących obciążeń do chmury i projektowania nowych obciążeń z podejściem cloud-first. Przed dołączeniem do AWS pracował z dużymi detalistami, aby pomóc im w migracji do chmury.
Prasanna Saraswati Krysznana jest architektem rozwiązań z Amazon Web Services współpracującym z klientami EdTech. Pomaga im kierować architekturą chmury i strategią danych z wykorzystaniem najlepszych praktyk. Jego doświadczenie obejmuje przetwarzanie rozproszone, analitykę dużych zbiorów danych i inżynierię danych. Pasjonuje się uczeniem maszynowym i przetwarzaniem języka naturalnego.
- AI
- ai sztuka
- generator sztuki ai
- masz robota
- Laboratorium rozwiązań Amazon ML
- Amazon Polly
- Amazon Transcribe
- Tłumacz Amazon
- sztuczna inteligencja
- certyfikacja sztucznej inteligencji
- sztuczna inteligencja w bankowości
- robot sztucznej inteligencji
- roboty sztucznej inteligencji
- oprogramowanie sztucznej inteligencji
- Uczenie maszynowe AWS
- blockchain
- konferencja blockchain ai
- pomysłowość
- sztuczna inteligencja konwersacyjna
- konferencja kryptograficzna
- Dall's
- głęboka nauka
- google to
- uczenie maszynowe
- plato
- Platon Ai
- Analiza danych Platona
- Gra Platona
- PlatoDane
- platogaming
- skala ai
- składnia
- zefirnet