[PYTHON] [Introduction à AWS] J'ai essayé de jouer avec la conversion voix-texte ♪

Cela a la même apparence, mais il n'y a presque pas de matériel ici. J'ai réussi à voir la référence. La voix de la nuit dernière est publiée. J'ai converti ceci en texte ce soir. Génération de voix

【référence】 ①Getting Started (AWS SDK for Python (Boto))Transcrivez la voix avec Amazon Transcribe. S3 → Lambda → Transcrire → Créer un pipeline de transcription avec S3

À partir de la référence ①, le code suivant peut être créé. Cela ressemble presque à Reference ①, mais en regardant Reference ③ à un endroit, la destination de sortie est spécifiée comme OutputBucketName = 'bucket name'. Sans cela, je ne pourrais pas savoir où il a été produit.

from __future__ import print_function
import time
import boto3
transcribe = boto3.client('transcribe')
job_name = "test_tran3"
job_uri = "https://Nom du godet.s3.amazonaws.com/speech.mp3"
transcribe.start_transcription_job(
    TranscriptionJobName=job_name,
    Media={'MediaFileUri': job_uri},
    MediaFormat='mp3',  #wav, mp4, mp3
    LanguageCode='ja-JP', #'en-US'
    OutputBucketName='muauanmp3'
)
while True:
    status = transcribe.get_transcription_job(TranscriptionJobName=job_name)
    if status['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']:
        break
    print("Not ready yet...")
    time.sleep(5)
print(status)

Le code ci-dessus donne la sortie suivante. Pas encore prêt est émis une fois toutes les 5 secondes, mais il semble que cela prend environ 30 secondes car il est émis 6 fois ou plus. Et j'ai craché le résultat json, mais je ne comprends pas grand-chose.

$ python3 boto_transcribe.py
Not ready yet...
...
Not ready yet...
{'TranscriptionJob': {'TranscriptionJobName':..., 'content-length': '506', 'connection': 'keep-alive'}, 'RetryAttempts': 0}}

Par conséquent, vérifiez le fichier de compartiment s3 comme indiqué dans la référence (2). Vous pouvez voir des fichiers tels que test_tran3.json qui ont été générés avec le fichier audio speech.mp3.

$ aws s3 ls s3://Nom du godet
2020-06-19 04:52:36          2 .write_access_check_file.temp
...
2020-06-18 23:44:17      35467 speech.mp3
...
2020-06-19 04:45:47       1472 test_tran2.json
2020-06-19 04:54:09       1663 test_tran3.json

Copiez ensuite s3: // nom du compartiment /test_tran3.json sur le serveur ec2.

$ aws s3 cp s3://Nom du godet/test_tran3.json ./
download: s3://Nom du godet/test_tran3.json to ./test_tran3.json

Enfin, affichez le contenu de json avec la commande suivante. Si la langue est correcte, la sortie est correcte comme indiqué ci-dessous, mais le résultat de la transcription du même fichier audio avec les spécifications anglaises est dans l'alphabet comme indiqué ci-dessous, mais c'est étrange! Cela dit, j'ai effectué une conversion audio-texte.

$ cat test_tran3.json |jq .results[][0].transcript
"Bonjour aussi Yokohama Tokyo, la petite voix trouble est celle de Mizuki"

$ cat test_tran2.json |jq .results[][0].transcript
"Tokyo, Yokohama, Moscow See Commodities, Cueva Mitic Sundays."

Cependant, lorsque je l'utilise réellement, je veux toujours le faire avec du code python au lieu de l'artisanat. Ainsi, à la suite de diverses enquêtes, il a été constaté que les références suivantes peuvent être faites.

【référence】 ④ Charger et télécharger des fichiers sur S3 à l'aide de boto3Lire la chaîne de caractères / fichier JSON avec pandas (read_json)Expliquez la structure imbriquée des tableaux et comment obtenir des valeurs en JSON en utilisant Python! Si vous déposez ces méthodes dans votre code, vous obtenez: En d'autres termes ① Téléchargez le fichier json ② Lisez avec les pandas ③ Sortie de la pièce souhaitée Telle est la méthode.

import pandas as pd
s3 = boto3.resource('s3') #Obtenir l'objet S3

bucket = s3.Bucket('Nom du godet') #définition du bucket
bucket.download_file('test_tran3.json', 'test_tran3.json') #Télécharger sur ec2; télécharger le fichier, le fichier après le téléchargement
df = pd.read_json('test_tran3.json') #Lire le fichier json avec les pandas

print(df['results'][1][0]['transcript']) #Extraire la chaîne de conversion du fichier json

À la suite d'une série de travaux, les phrases suivantes ont été obtenues avec succès.

Bonjour aussi Yokohama Tokyo, la petite voix trouble est celle de Mizuki

·variation

Application d'application

Il s'agit d'un élément unique et il semble que les minutes et les traductions puissent être utilisées normalement. De plus, lorsqu'il est combiné avec le texte-voix de la nuit dernière, vous pouvez voir que la séquence suivante peut être construite.

texte-voix-...-voix-texte

Alors ... .. .. Il existe différents processus possibles pour la pièce. Enregistrez la lecture des articles et du matériel et la séquence des questions dans le texte. En d'autres termes, le texte / la voix initiale et la voix / le texte traités peuvent être différents. De plus, d'autres séquences sont possibles. Dans le cas d'une application de conversation, la disposition ci-dessus est inversée

voix-Text-Conversation App-Text-voix

Il est possible que. C'est une séquence comme Alexa. Dans ce cas, il s'agit d'une conversion basée sur du texte, il semble donc que vous puissiez traduire normalement.

Contrôle qualité de la voix

Une voix comme Alexa-je pense que je peux créer une application d'assurance qualité. Si vous acceptez des questions vocales comme un smartphone et exécutez l'application ci-dessus, il semble que le contrôle qualité de la voix en temps réel puisse également être effectué.

Assistance Twitter

Ce n'est pas limité à Twitter, mais le fait est que l'entrée peut être faite par la voix et la sortie peut être faite par la voix. .. .. .. Cependant, vous devez faire de votre mieux pour créer ces applications.

Résumé

・ J'ai joué avec la conversion voix-texte ・ J'ai pu créer une série d'actions avec python

-Si le fichier json existe, il ne peut pas être fait deux fois, il est donc nécessaire de le supprimer dans une série de séquences pour faire le même travail à chaque fois. ・ Faisons une application. .. .. ・ Faisons la traduction de texte

Recommended Posts

[Introduction à AWS] J'ai essayé de jouer avec la conversion voix-texte ♪
[Introduction à AWS] J'ai essayé de porter une application de conversation et de jouer avec text2speech @ AWS ♪
[Introduction à AWS] Conversion de texte-voix et lecture ♪
[Introduction à Pytorch] J'ai essayé de catégoriser Cifar10 avec VGG16 ♬
[Introduction à la simulation] J'ai essayé de jouer en simulant une infection corona ♬
[Introduction au modèle de maladie infectieuse] J'ai essayé de m'adapter et de jouer
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé de commencer avec Hy
Je veux jouer avec aws avec python
[Introduction à Pytorch] J'ai joué avec sinGAN ♬
J'ai essayé d'implémenter CVAE avec PyTorch
J'ai essayé de jouer avec l'image avec Pillow
J'ai essayé de résoudre TSP avec QAOA
J'ai essayé de supprimer régulièrement les mauvais tweets avec l'API AWS Lambda + Twitter
[Introduction à AWS] J'ai joué avec des voix masculines et féminines avec Polly et Transcribe ♪
[AWS] [GCP] J'ai essayé de rendre les services cloud faciles à utiliser avec Python
J'ai essayé l'analyse de données IRMf avec python (Introduction au décodage des informations cérébrales)
J'ai essayé de créer un service de raccourcissement d'url sans serveur avec AWS CDK
J'ai essayé d'implémenter la lecture de Dataset avec PyTorch
J'ai essayé d'utiliser lightGBM, xg boost avec Boruta
J'ai essayé d'apprendre le fonctionnement logique avec TF Learn
J'ai essayé de déplacer GAN (mnist) avec keras
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de détecter rapidement un mouvement avec OpenCV
J'ai essayé d'intégrer Keras dans TFv1.1
J'ai essayé de jouer en connectant PartiQL et MongoDB
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de sortir LLVM IR avec Python
J'ai essayé de détecter un objet avec M2Det!
J'ai essayé d'automatiser la fabrication des sushis avec python
J'ai essayé de prédire la survie du Titanic avec PyCaret
J'ai essayé de connecter AWS Lambda à d'autres services
J'ai essayé d'utiliser Linux avec Discord Bot
J'ai essayé d'étudier DP avec séquence de Fibonacci
J'ai essayé de démarrer Jupyter avec toutes les lumières d'Amazon
J'ai essayé de juger Tundele avec Naive Bays
J'ai essayé de jouer avec la calculatrice avec tkinter
[Introduction au PID] J'ai essayé de contrôler et de jouer ♬
J'ai essayé AWS CDK!
J'ai essayé AWS Iot
Quand j'ai essayé de créer un VPC avec AWS CDK mais que je n'ai pas pu le faire
J'ai essayé de créer un environnement à vérifier régulièrement en utilisant Selenium avec AWS Fargate
J'ai essayé d'entraîner la fonction péché avec chainer
J'ai essayé de déplacer l'apprentissage automatique (détection d'objet) avec TouchDesigner
J'ai essayé d'extraire des fonctionnalités avec SIFT d'OpenCV
J'ai essayé de déplacer Faster R-CNN rapidement avec pytorch
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2 2
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2
J'ai essayé de démarrer avec le script python de blender_Partie 02
J'ai essayé de générer ObjectId (clé primaire) avec pymongo
J'ai essayé d'implémenter le perceptron artificiel avec python
J'ai essayé de créer un pipeline ML avec Cloud Composer