Letztes Mal übersetzt die im s3: // Bucket platzierte MP3-Datei in Text mit dem folgenden Code und konvertiert die JSON-Datei in OutputBucketName. S3; In einen Eimer gelegt. Dieses Mal werde ich diese JSON-Datei aufrufen, um die textkonvertierten Sätze zu extrahieren. Ich habe den Code das letzte Mal absichtlich ausgegeben, da der Code auch diesmal ähnlich ist.
s3 = boto3.client('s3')
transcribe = boto3.client('transcribe')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
try:
transcribe.start_transcription_job(
TranscriptionJobName= datetime.datetime.now().strftime('%Y%m%d%H%M%S') + '_Transcription',
LanguageCode='ja-JP',
Media={
'MediaFileUri': 'https://s3.ap-northeast-1.amazonaws.com/' + bucket + '/' + key
},
OutputBucketName='lamoutput'
)
...
raise e
Also konnte ich es mit dem folgenden Code implementieren. S3: Die Methode zum Speichern im Bucket dient als Referenz. 【Referenz】 ① [AWS Lambda-Basiscode 2] Speichern von Dateien in S3 ② S3-Objekte mit Boto3 bearbeiten (High-Level-API und Low-Level-API) Ich habe einen Kommentar als Referenz hinterlassen ①. Es funktionierte mit fast demselben Code. Der Unterschied besteht darin, dass es [Wie man neulich mit JSON-Dateien umgeht] enthält (https://qiita.com/MuAuan/items/45bc563a068d9fc87600). Erstens ist Lib wie folgt
#① Import der Bibliothek
import boto3
import urllib.parse
from datetime import datetime
import json
Das Folgende definiert den Client durch Imitieren von Referenz (2).
print('Loading function') #(2) Geben Sie die Funktionslast in das Protokoll aus
s3 = boto3.resource('s3') #③ S3-Objekt abrufen
client = s3.meta.client
Das Abrufen des Buckets und des Schlüssels mit dem lambda_handler entspricht genau dem obigen Transkriptionscode (natürlich ...).
#④ Lambdas Hauptfunktion
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
Im Folgenden wird die Antwort ['Body'] aus der JSON-Datei mit demselben Code wie Referenz ② gelesen. Ich bin hier jedoch gestolpert. Mit anderen Worten, ich dachte, dass japanische Sätze erscheinen würden, wenn dieser body.decode ('utf-8') verwendet würde. In Wirklichkeit erscheint jedoch eine ziemlich json-artige (Zeichenkette). Anfangs wusste ich nicht, dass es sich um eine Zeichenfolge handelt, und dachte, es sei eine JSON-Datei. Also bemerkte ich, dass es sich um eine Zeichenfolge handelte, und stellte fest, dass sie mit json.loads in eine json-Datei konvertiert werden konnte. .. .. Ich bin endlich zu dem Code unten gekommen. Das heißt, Körper ist eine Zeichenfolge.
response = client.get_object(Bucket=bucket, Key=key)
body = response['Body'].read()
Konvertieren Sie die Zeichenfolge in eine JSON-Datei.
dec = json.loads(body)
Und da es sich um eine JSON-Datei handelt, können japanische Sätze wie folgt leicht extrahiert werden.
con_el=dec["results"]["transcripts"][0]["transcript"]
print('contents=',con_el)
Inhalt = Hallo Tokyo Yokohama auch trübe kleine Stimme ist Mizukis
Schließlich können Sie es als schlüsselähnlichen zeitgesteuerten .txt im s3; Bucket speichern, der wie folgt angegeben ist.
bucket = 'muauanpub' #⑤ Geben Sie den Bucket-Namen an
key = 'test_' + datetime.now().strftime('%Y-%m-%d-%H-%M-%S') + '.txt' #⑥ Geben Sie die Schlüsselinformationen des Objekts an
file_contents = con_el # 'Lambda test' #⑦ Dateiinhalt
obj = s3.Object(bucket,key) #⑧ Geben Sie den Namen und den Pfad des Buckets an
obj.put( Body=file_contents ) #⑨ Ausgabedatei in Bucket
return
・ Ich konnte Sätze aus der konvertierten JSON-Datei der Audiodatei extrahieren und im S3-Bucket speichern. -Dies ist ein zweistufiger Prozess, aber wenn Sie eine MP3-Datei in den S3-Bucket legen, wird der textkonvertierte Text selbst automatisch im S3-Bucket gespeichert. ・ Teraterm → ec2 → s3 Bucket Transfer vorerst. .. .. Download aus dem S3 Bucket ⇒ Anzeige war möglich
Recommended Posts