C'est un dossier que j'ai essayé comme référence pour mémoire. Je pense que l'article de référence est facile pour tous ceux qui savent qu'il est bien écrit, mais c'était difficile pour les débutants AWS. Je voudrais expliquer ce domaine d'une manière boueuse. Donc ce que j'ai fait, c'est finalement l'article de référence. 【référence】 ・ S3 → Lambda → Transcrire → Créer un pipeline de transcription avec S3
・ Créer un compartiment pour (entrée) dans 1 S3 ・ 2 Lambda ouvertes ・ 3 Définition et signification de la fonction Lambda ・ 4 Comment lire les journaux CloudWatch ・ Créer un compartiment pour (sortie) dans 5 S3 ・ 6 correction Lambda ・ 7 Comment changer le rôle d'exécution ・ 8 Modifier la fonction Lambda ・ 9 Comment vérifier la transcription
Si vous appuyez sur le service en haut à gauche d'AWS, tous les services seront affichés et vous pourrez sélectionner divers menus à partir d'ici. Si vous sélectionnez s3 pour le stockage, vous pouvez accéder à la page où vous pouvez créer un compartiment pour s3, alors créez-le là. Je pense que cela fonctionne même si toute sécurité est interdite (les objets sont rendus publics). Créez une entrée et une sortie avec des noms de compartiment appropriés.
Affichez tous les services comme ci-dessus, cette fois, ouvrez Lambda pour le calcul. La page de création de fonction s'ouvre S'il ne s'ouvre pas, cliquez sur Créer une fonction. Ensuite, la page de l'image de référence ① sautera. Ici, vous pouvez passer à l'écran suivant en sélectionnant [Use Design] - [s3-get-object-python] - [Settings].
En premier lieu, en tant que prémisse majeure, ** la fonction Lambda est une méthode de définition d'une fonction qui fonctionne en récupérant un déclencheur sans serveur, et c'est un service payant à l'utilisation qui coûte des frais pour un déménagement complet. ** ** Nous définissons donc une fonction avec presque une seule fonction.
Enfin, définissons le comportement de la fonction. Nom de la fonction; tout ce qui est unique semble bon Nom du rôle; il doit être unique. Même si vous supprimez la fonction, elle ne disparaîtra pas, vous devez donc la supprimer séparément Déclencheur S3; nom du compartiment d'entrée pour l'entrée Activer le déclencheur; vérifier Le squelette suivant est craché, mais il s'avère que cette fonction fonctionne déjà. Autrement dit, on peut voir qu'un journal est enregistré lorsque quelque chose est placé (transféré) dans le compartiment d'entrée. En regardant le contenu, c'est comme suit Premièrement, Lib est comme suit
import json
import urllib.parse
import boto3
Obtenir un objet s3
print('Loading function')
s3 = boto3.client('s3')
La fonction lambda_handler exécute l'opération décrite dans #. Autrement dit, il obtient un objet de l'événement et affiche son contenu. bucket renvoie le nom du compartiment s3 défini ci-dessus. key renvoie le nom du fichier. Obtenez le nom du fichier, etc. placé dans le compartiment en réponse. Il renvoie ce type de contenu. Sous Exception se trouve la routine d'erreur.
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
# Get the object from the event and show its content type
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
try:
response = s3.get_object(Bucket=bucket, Key=key)
print("CONTENT TYPE: " + response['ContentType'])
return response['ContentType']
except Exception as e:
print(e)
print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket))
raise e
Lorsque vous créez une fonction, vous pouvez créer une page de fonction. Lorsque vous y entrez, ce sera [Paramètres] [Droits d'accès] [Surveillance], et le code est écrit ci-dessous. Sélectionnez [Surveillance]. Et il y a quelques graphiques, ci-dessous, vous pouvez voir CloudWatch Logs Insights. Ici, essayez d'organiser (transférer) quelque chose d'ec2, etc. vers le compartiment d'entrée ci-dessus. Ensuite, la fonction Lambda ci-dessus fonctionne et ce CloudWatch Logs montre l'enregistrement du mouvement d'un moment à l'autre. Des erreurs sont également générées. Donc, au moins, vous pouvez vérifier que cela fonctionne.
Enfin, rendez la fonction Lambda réelle. Cette fois, je pense que vous pouvez simplement copier et coller l'application dans Reference ① et changer les noms de seau pour l'entrée et la sortie. Voyons ce qui se passe lorsque le déclencheur entre réellement dans l'essai. Ici, le plus conçu est que le TranscriptionJobName est généré à chaque fois que le déclencheur est appliqué pour le garder unique. Par conséquent, le json généré connaît également l'heure. Vous pouvez comprendre le code suivant car bucket est le bucket d'entrée et le nom de fichier est key. Ensuite, le fichier de sortie est généré dans le compartiment défini par OutputBucketName.
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'
)
Sélectionnez [Droits d'accès]. Le rôle d'exécution apparaît. Cliquez dessus pour afficher les autorisations du rôle d'exécution et la politique d'autorisations. ici, AmazonS3FullAccess AmazonTranscribeFullAccess Ajouter. Pour l'ajouter, cliquez sur [Joindre la politique] et entrez ce qui précède dans la recherche, vérifiez donc la gauche et joignez-le pour l'ajouter.
Identique à 6, mais modifiez le code ci-dessous directement sur la page de fonction et enregistrez.
Dans cet état, si vous placez un fichier mp3 sur l'entrée, je pense que le résultat de la transcription est le fichier json dans la sortie. Je pense que cela prendra du temps, mais il sortira plus vite que mon propre programme. Vous pouvez voir la situation actuelle en consultant les journaux CloudWatch ci-dessus. À propos, dans le compartiment de sortie, vous ne pourrez peut-être pas le voir à moins de le recharger, alors soyez prudent. Et si vous publiez le fichier json, vous pouvez facilement le télécharger. De plus, quand je l'ai simplement ouvert, les personnages étaient déformés. Quand je l'ai ouvert avec le Bloc-notes, j'ai pu voir le contenu magnifiquement. De plus, je pense que c'était beau de lire le fichier json téléchargé avec des pandas et de vérifier le texte transcrit. J'ai pensé à utiliser la fonction ci-dessus jusqu'à présent, mais j'ai abandonné ce soir car cela semble difficile.
・ Début de la fonction Lambda
・ La conversion étant rapide, j'aimerais implémenter Polly et l'appliquer aux applications de conversation. ・ Polly essaiera de le faire de la même manière
Recommended Posts