Dernière fois traduit le fichier mp3 placé dans le compartiment s3: // en texte avec le code suivant et convertit le fichier json en OutputBucketName. S3; Placé dans un seau. Cette fois, j'appellerai ce fichier json pour extraire les phrases converties en texte. J'ai volontairement émis le code la dernière fois car le code est également similaire cette fois.
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
J'ai donc pu l'implémenter avec le code suivant. S3; La méthode de sauvegarde dans le compartiment est une référence. 【référence】 ① [AWS Lambda Basic Code Part 2] Enregistrement de fichiers dans S3 ② Manipuler des objets S3 avec Boto3 (API de haut niveau et API de bas niveau) J'ai laissé un commentaire pour Reference ①. Cela fonctionnait avec presque le même code. La différence est qu'il intègre Comment gérer les fichiers json l'autre jour. Premièrement, Lib est comme suit
#① Import de bibliothèque
import boto3
import urllib.parse
from datetime import datetime
import json
Ce qui suit définit le client en imitant la référence (2).
print('Loading function') #(2) Sortie de la fonction load dans le journal
s3 = boto3.resource('s3') #③ Obtenir l'objet S3
client = s3.meta.client
Obtenir le bucket et la clé avec le lambda_handler est exactement le même que le code de transcription ci-dessus (bien sûr ...).
#④ Fonction principale de Lambda
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')
Ce qui suit lit la réponse ['Body'] du fichier json avec le même code que la référence ②. Cependant, je suis tombé ici. En d'autres termes, je pensais que des phrases japonaises apparaissaient si ce body.decode ('utf-8') était utilisé. Cependant, en réalité, une jolie chaîne de caractères de type json apparaît. Au départ, je ne savais pas que c'était une chaîne et je pensais que c'était un fichier json. Donc, j'ai remarqué qu'il s'agissait d'une chaîne de caractères et j'ai trouvé qu'elle pouvait être convertie en fichier json avec json.loads,. .. .. Je suis enfin arrivé au code ci-dessous. Autrement dit, le corps est une chaîne.
response = client.get_object(Bucket=bucket, Key=key)
body = response['Body'].read()
Convertissez la chaîne en fichier json.
dec = json.loads(body)
Et comme il s'agit d'un fichier json, les phrases japonaises peuvent être facilement extraites comme suit.
con_el=dec["results"]["transcripts"][0]["transcript"]
print('contents=',con_el)
Contenu = Bonjour Tokyo Yokohama aussi la petite voix trouble est celle de Mizuki
Enfin, il peut être enregistré en tant que .txt chronométré semblable à une clé dans le compartiment s3; spécifié comme suit.
bucket = 'muauanpub' #⑤ Spécifiez le nom du bucket
key = 'test_' + datetime.now().strftime('%Y-%m-%d-%H-%M-%S') + '.txt' #⑥ Spécifiez les informations clés de l'objet
file_contents = con_el # 'Lambda test' #⑦ Contenu du fichier
obj = s3.Object(bucket,key) #⑧ Spécifiez le nom et le chemin du bucket
obj.put( Body=file_contents ) #⑨ Fichier de sortie vers le seau
return
・ J'ai pu extraire des phrases du fichier json converti du fichier audio et le stocker dans le bucket s3. -Il s'agit d'un processus en deux étapes, mais lorsque vous placez un fichier mp3 dans le seau s3, le texte converti lui-même est automatiquement enregistré dans le seau s3. ・ Pour le moment, transfert au godet Teraterm → ec2 → s3. .. .. Téléchargement depuis s3 bucket ⇒ L'affichage était possible
-De plus, si une application qui transfère des fichiers audio vers ce bucket s3 et une application qui affiche le fichier texte du bucket s3 peut être créée, il semble qu'une application de conversion fichier-texte audio plus facile à utiliser puisse être créée (conversion Web). -Même si le temps de conversion est long, les deux fonctions Lambda sont démarrées de manière asynchrone, il semble donc être une application conviviale en termes de temps et d'argent.
Recommended Posts