Tworzenie niskokodowej platformy licznika mowy „you know” przy użyciu AWS Step Functions
W wystąpieniach publicznych zdania wypełniające mogą rozpraszać publiczność i umniejszać wartość i wpływ tego, co próbujesz jej przekazać.
Przeglądanie nagrań prezentacji może okazać się pomocne w ustaleniu, czy prezenterzy używają fraz wypełniających. Jednak zamiast ręcznie przeglądać wcześniejsze nagrania, automatyzacja może przetwarzać pliki multimedialne i wykonywać funkcję zamiany mowy na tekst. Tekst ten można następnie przetworzyć w celu zgłoszenia użycia zdań wypełniających.
Poniższy artykuł wyjaśnia, jak używać AWS Step Functions, Amazon EventBridge, Amazon Transcribe i Amazon Athena do zgłaszania użycia popularnego wyrażenia „you know” w plikach multimedialnych. Usługi te mogą zautomatyzować i skrócić czas potrzebny na znalezienie użycia fraz wypełniających.
Step Functions może zautomatyzować i połączyć ze sobą wiele działań i innych usług Amazon. Amazon Transcribe to z kolei usługa zamiany mowy na tekst, która wykorzystuje pliki multimedialne jako dane wejściowe i tworzy z nich transkrypcje tekstowe. Athena jest interaktywną usługą zapytań, która ułatwia analizę danych w Amazon S3 przy użyciu standardowego SQL. Athena umożliwia użycie standardowego SQL do zapytań o dane w S3.
W tym artykule przedstawiono podejście oparte na konfiguracji i platformie niskokodowej, umożliwiające wdrożenie tego rozwiązania. Low-code oznacza pisanie niewielkiej ilości lub brak niestandardowego oprogramowania do wykonywania funkcji. Zamiast tego używasz podejścia z dyskiem konfiguracyjnym przy użyciu integracji usług, w którym zadania maszyny stanów wywołują usługi AWS przy użyciu istniejących zestawów SDK, interfejsów API lub innych interfejsów. Podejście oparte na konfiguracji w tym przykładzie polega na użyciu języka Amazon States Language (ASL) Step Functions do łączenia działań, zamiast pisania tradycyjnego kodu. Wymaga to mniejszej liczby szczegółów dotyczących zarządzania danymi i obsługi błędów w połączeniu z wizualnym interfejsem użytkownika do komponowania przepływu pracy. Ze względu ma to, że akcje i logika są jasno zdefiniowane w wizualnym przepływie pracy, ogranicza to konserwację.
Zarys rozwiązania
Poniższy diagram przedstawia architekturę rozwiązania.
- Przesyłasz plik multimedialny do zasobnika Amazon S3 Media.
- Przesłanie pliku multimedialnego do S3 uruchamia regułę EventBridge.
- Reguła EventBridge uruchamia wykonanie automatu stanu Step Functions.
- Automat stanowy wywołuje Amazon Transscribe w celu przetworzenia pliku multimedialnego.
- Plik wyjściowy transkrypcji jest przechowywany w zasobniku transkrypcji Amazon S3.
- Maszyna stanowa wywołuje Atenę, aby kwestionowała transkrypcję tekstową o frazę wypełniającą. Wykorzystuje tabelę AWS Glue do opisania formatu pliku wyników transkrypcji.
- Liczba wypełniających fraz określona przez Athenę jest zwracana i przechowywana w zasobniku Amazon S3 Results.
Wymagania wstępne
- Konto AWS i użytkownik lub rola AWS z uprawnieniami wystarczającymi do tworzenia niezbędnych zasobów.
- Dostęp do następujących usług AWS: Step Functions, Amazon Transcribe, Athena i Amazon S3.
- Najnowsza wersja AWS Serverless Application Model (AWS SAM) CLI, która pomaga programistom tworzyć i zarządzać aplikacjami bezserwerowymi w chmurze AWS.
- Przetestowane pliki multimedialne (na przykład oficjalny podcast AWS).
Przykładowy przegląd
1. Sklonuj repozytorium GitHub na swoje urządzenie.
git clone https://github.com/aws-samples/aws-stepfunctions-examples.git
2. Wdróż zasoby za pomocą AWS SAM. Polecenie wdrażania przetwarza plik szablonu AWS SAM w celu utworzenia niezbędnych zasobów w AWS. Jako nazwę stosu i region AWS, w którym chcesz wdrożyć swoje rozwiązanie, wybierz you-know.
cd aws-stepfunctions-examples/sam/app-low-code-you-know-counter/
sam deploy --guided
Użyj parametrów domyślnych lub w razie potrzeby zastąp je innymi wartościami. Na przykład, aby uzyskać kalkulacje innej frazy wypełniającej, zastąp parametrem FillerPhrase.
GlueDatabaseYouKnowP |
Nazwa bazy dawnych AWS Glue do utworzenia |
AthenaTableName |
Nazwa tabeli AWS Glue, która jest używana przez Athenę do zapytania o wyniki. |
FillerPhrase |
Zdanie wypełniające do sprawdzenia |
AthenaQueryPreparedStatementName |
Nazwa instrukcji przygotowanej przez Athena używanej do uruchamiania zapytań SQL |
AthenaWorkgroup |
Grupa robocza Athena do użycia |
AthenaDataCatalog |
Źródło danych do uruchamiania zapytań Athena |
Uruchamianie licznika fraz wypełniających
1. Przejdź do konsoli Amazon S3 i prześlij nagranie podcastu mp3 lub mp4 do zasobnika o nazwie bucket-{account number}-{Region}-you-know-media.
2. Przejdź do konsoli Step Functions. Wybierz działającą maszynę stanów i monitoruj wykonanie maszyny stanów transkrypcji.
3. Gdy wykonanie zakończy się pomyślnie, wybierz zadanie QueryExecutionSuccess, aby przeanalizować dane wyjściowe i zobaczyć liczbę fraz wypełniających.
4. Amazon Transscribe tworzy tekst transkrypcji pliku multimedialnego. Możesz sprawdzić dane wyjściowe w zasobniku Wyniki. Korzystając z konsoli S3, przejdź do zasobnika, wybierz plik pasujący do nazwy pliku multimedialnego i użyj opcji „Zapytanie z S3 Select”, aby wyświetlić zawartość.
5. Jeśli zadanie transkrypcji nie zostanie wykonane, automat stanowy zgłosi niepowodzenie i zakończy działanie.
Eksplorowanie maszyny stanu
Maszyna stanu organizuje przetwarzanie transkrypcji:
Zadanie StartTranscriptionJob uruchamia pracę transkrypcji. Stan oczekiwania dodaje 60-sekundowe opóźnienie przed sprawdzeniem stanu zadania transkrypcji. Dopóki status zadania nie zmieni się na FAILED lub COMPLETED, stan wyboru będzie kontynuowany.
Po pomyślnym zakończeniu pracy zadanie AthenaStartQueryExecutionUsingPreparedStatement uruchamia zapytanie Athena i przechowuje wyniki w zasobniku wyników S3. Zadanie AthenaGetQueryResults pobiera liczbę z zestawu wyników.
TranscribeMediaBucket przechowuje pliki multimedialne do przesłania. Konfiguracja wysyła zdarzenie powiadomienia o przesłaniu do EventBridge:
NotificationConfiguration:
EventBridgeConfiguration:
EventBridgeEnabled: true
TranscribeResultsBucket ma powiązaną politykę zapewniającą dostęp do Amazon Transcribe. Athena przechowuje dane wyjściowe z zapytań wykonywanych przez maszynę stanów w AthenaQueryResultsBucket.
Gdy nastąpi przesłanie multimediów, YouKnowTranscribeStateMachine wykorzystuje natywną integrację zdarzeń Step Functions, aby wyzwolić regułę EventBridge. Zawiera obiekt zdarzenia podobny do:
{
"version": "0",
"id": "99a0cb40-4b26-7d74-dc59-c837f5346ac6",
"detail-type": "Object Created",
"source": "aws.s3",
"account": "012345678901",
"time": "2022-05-19T22:21:10Z",
"region": "us-east-2",
"resources": [
"arn:aws:s3:::bucket-012345678901-us-east-2-you-know-media"
],
"detail": {
"version": "0",
"bucket": {
"name": "bucket-012345678901-us-east-2-you-know-media"
},
"object": {
"key": "Podcase_Episode.m4a",
"size": 202329,
"etag": "624fce93a981f97d85025e8432e24f48",
"sequencer": "006286C2D604D7A390"
},
"request-id": "B4DA7RD214V1QG3W",
"requester": "012345678901",
"source-ip-address": "172.0.0.1",
"reason": "PutObject"
}
}
Maszyna stanowa pozwala na przygotowanie parametrów i wykorzystanie bezpośredniej integracji SDK do uruchomienia zadania transkrypcji poprzez wywołanie API usługi Amazon Transcribe. Ta integracja oznacza, że nie musisz pisać niestandardowego kodu, aby wykonać tę funkcję. Zdarzenie wyzwalające wykonanie automatu stanów zawiera lokalizację przesłanego pliku multimedialnego.
StartTranscriptionJob:
Type: Task
Comment: Start a transcribe job on the provided media file
Parameters:
Media:
MediaFileUri.$: States.Format('s3://{}/{}', $.detail.bucket.name, $.detail.object.key)
TranscriptionJobName.$: "$.detail.object.key"
IdentifyLanguage: true
OutputBucketName: !Ref TranscribeResultsBucket
Resource: !Sub 'arn:${AWS::Partition}:states:${AWS::Region}:${AWS::AccountId}:aws-sdk:transcribe:startTranscriptionJob'
SDK używa aws-sdk:transscribe:getTranscriptionJob, aby uzyskać status zadania.
GetTranscriptionJob:
Type: Task
Comment: Retrieve the status of an Amazon Transcribe job
Parameters:
TranscriptionJobName.$: "$.TranscriptionJob.TranscriptionJobName"
Resource: !Sub 'arn:${AWS::Partition}:states:${AWS::Region}:${AWS::AccountId}:aws-sdk:transcribe:getTranscriptionJob'
Next: TranscriptionJobStatus
Maszyna stanów używa pętli przeglądania z opóźnieniem, aby sprawdzić status zadania transkrypcji.
TranscriptionJobStatus:
Type: Choice
Choices:
- Variable: "$.TranscriptionJob.TranscriptionJobStatus"
StringEquals: COMPLETED
Next: AthenaStartQueryExecutionUsingPreparedStatement
- Variable: "$.TranscriptionJob.TranscriptionJobStatus"
StringEquals: FAILED
Next: Failed
Default: Wait
Po pomyślnym zakończeniu zadania transkrypcji rozpoczyna się proces liczenia fraz wypełniających.
Przygotowana instrukcja Athena wykonuje zapytanie z nazwą zadania transkrypcji jako parametrem wykonawczym. AWS SDK uruchamia zapytanie, a realizacja maszyny stanowej zatrzymuje się, czekając na zwrócenie wyników przed przejściem do następnego stanu:
athena:startQueryExecution.sync
Po zakończeniu zapytania Step Functions używa integracji SDK do pobrania wyników za pomocą athena:getQueryResults:
athena:getQueryResults
Tworzy przygotowaną przez Athenę instrukcję, aby przekazać nazwę zadania transkrypcji jako parametr do wykonania zapytania:
ResultsQueryPreparedStatement:
Type: AWS::Athena::PreparedStatement
Properties:
Description: Create a statement that allows the use of a parameter for specifying an Amazon Transcribe job name in the Athena query
QueryStatement: !Sub >-
select cardinality(regexp_extract_all(results.transcripts[1].transcript, '${FillerPhrase}')) AS item_count from "${GlueDatabaseYouKnow}"."${AthenaTableName}" where jobname like ?
StatementName: !Ref AthenaQueryPreparedStatementName
WorkGroup: !Ref AthenaWorkgroup
Istnieje kilka możliwości ulepszenia tego narzędzia. Na przykład dodanie obsługi wielu fraz wypełniających. Możesz zbudować większą aplikację do przesyłania multimediów i pobierania wyników. Możesz skorzystać z interfejsu API transkrypcji Amazon Transcribe w czasie rzeczywistym, aby wyświetlać wyniki podczas trwania prezentacji, aby natychmiast przekazać prezenterowi informację zwrotną.
Porządkowanie
1. Przejdź do konsoli Amazon Transscribe. Wybierz Transcription jobs w lewym okienku, wybierz zadania utworzone w tym przykładzie i wybierz opcję Usuń.
2. Przejdź do konsoli S3. Na pasku wyszukiwania Znajdź zasobniki według nazwy wpisz „you know”. To pokazuje listę zasobników utworzonych dla tego przykładu. Wybierz każdy z przycisków opcji obok zasobnika indywidualnie i wybierz Pusty.
3. Użyj następującego polecenia, aby usunąć stos i potwierdź usunięcie stosu.
sam delete
Podsumowanie
Aplikacje i platformy niskokodowe mogą zwiększyć wydajność programistów, zmniejszając ilość niestandardowego kodu wymaganego do tworzenia rozwiązań. Mogą również umożliwić rolom nie-deweloperskim tworzenie automatyzacji w celu wykonywania funkcji biznesowych, zapewniając interfejsy użytkownika w stylu „drag-and-drop”.
Ten post pokazuje, jak podejście niskokodowe może zbudować łańcuch narzędzi przy użyciu usług AWS. Przykład przetwarza pliki multimedialne w celu utworzenia transkrypcji tekstowych i zlicza użycie fraz wypełniających w tych transkrypcjach. Pokazuje, jak przetwarzać dane EventBridge i jak wywoływać Amazon Transcribe i Athena za pomocą maszyn stanu Step Functions.
W celu uzyskania większej liczby zasobów do nauki bezserwerowej, odwiedź Severless Land.
źródło: AWS