Dernière transcription Polly, j'ai joué un peu avec chacun d'eux, mais cette fois A été modifié pour pouvoir être facilement utilisé dans le but de l'utiliser librement.
・ Séquence prenant en charge l'application de conversation ・ Code à réaliser · Résultat actuel
L'hypothèse est de convertir le texte avec une application de conversation pour créer une situation comme si un homme et une femme parlaient. Ici, l'application de conversation est un traitement du langage naturel et l'entrée est une application de conversation avec du texte.
Par conséquent, la séquence suivante a été effectuée. ① Entrez une phrase appropriée ② Convertissez la phrase de ① en voix féminine avec polly ③ Acquérir un fichier vocal féminin mp3; ④ Transscrivez le fichier vocal féminin et convertissez-le en texte; entrée d'application de conversation; texte de réponse ⑤ Polly la phrase de réponse (maintenant la phrase de caractère convertie de ④) et la convertir en voix masculine; ⑥ Obtenez un fichier vocal masculin mp3; Occurrence ⑦ Enfin, transcrivez le fichier vocal masculin et convertissez-le en une phrase de caractères; entrez l'application de conversation; phrase de réponse. .. ..
text0="Bonjour, il fait nuageux à Tokyo et à Yokohama aujourd'hui. Mizuki,J'ai annoncé" #①
vfile = function_polly(text0,'Mizuki') #②
file0= vfile #'Mizuki.mp3' #③
text0 = fun_tran(file0) #④
vfile = function_polly(text0,'Takumi') #⑤
file0= vfile #'Takumi.mp3' #⑥
text0 = fun_tran(file0) #⑦
En termes de code, je viens de créer une fonction pour faciliter l'utilisation de ceux de la dernière et de la dernière fois. La Lib à utiliser est la suivante.
from __future__ import print_function
import time
import boto3
import pandas as pd
from boto3 import Session
Définit les compartiments de stockage pour session, polly, transicribe et s3 utilisés par les deux fonctions.
session = Session(profile_name="default")
polly = session.client("polly")
transcribe = boto3.client('transcribe')
s3 = boto3.resource('s3') #Obtenir l'objet S3
bucket = s3.Bucket('muauanpub') #définition du bucket
Voici la fonction function_polly qui convertit le texte en voix. L'entrée est le texte et la voix0 de la voix féminine ou masculine. Le traitement dans la fonction est ① Conversion ② Enregistrez le fichier mp3 sur l'ec2 local ③ Télécharger dans le seau s3 ⇒ Publié au format HTML, etc. ④ Renvoie le nom du fichier audio vfile dans s3
def function_polly(text0,voice0):
response = polly.synthesize_speech(Text=text0, OutputFormat="mp3", VoiceId=voice0) #"Mizuki"
file = open('speech.mp3', 'wb')
file.write(response['AudioStream'].read())
file.close()
vfile = '{}.mp3'.format(voice0)
bucket.upload_file('speech.mp3', vfile, ExtraArgs={'ACL':'public-read'})
return vfile
Vient ensuite la fonction fun_tran qui convertit un fichier audio en fichier texte. Ce qui est important ici, c'est que pour que nom_travail effectue une conversion unique et continue, il est nécessaire de générer ou de supprimer le nom du travail l'un après l'autre en insérant des éléments tels que l'heure. Cette fois, la fonction à supprimer a été réalisée par transcript.delete_transcription_job (TranscriptionJobName = 'test_tran'), j'ai donc utilisé cette méthode. De plus, comme je l'ai écrit la dernière fois, il est important de définir le nom du compartiment s3 de la destination de sortie. Récupère l'objet s3; s3 = boto3.resource ('s3'). .. .. Etc. sont dupliqués.
def fun_tran(file0):
job_name = "test_tran"
job_uri = "https://muauanpub.s3.amazonaws.com/{}".format(file0)
transcribe.start_transcription_job(
TranscriptionJobName=job_name,
Media={'MediaFileUri': job_uri},
MediaFormat='mp3',
LanguageCode='ja-JP',
OutputBucketName='muauanpub'
)
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)
bucket.download_file('test_tran.json', 'test_tran.json') #Télécharger sur ec2; télécharger le fichier, le fichier après le téléchargement
df = pd.read_json('test_tran.json') #Lire le fichier json avec les pandas
text1=df['results'][1][0]['transcript']
print(text1) #Extraire la chaîne de conversion du fichier json
transcribe.delete_transcription_job(TranscriptionJobName='test_tran')
return text1
C'est environ 12 heures publiques, mais cela s'est arrêté car il y a beaucoup de demandes et les frais de demande s3 semblent dépasser la trame libre m (_ _) m Lecture vocale pour les femmes et les hommes
・ J'ai créé une fonction Polly and Transcribe et essayé de l'exécuter. ・ Les deux fonctions peuvent être utilisées facilement et j'ai essayé de générer des voix masculines et féminines en continu. ・ J'ai essayé de faire pivoter la même phrase, mais l'occurrence ne s'est pas réduite et la phrase de sortie était la même, on peut donc dire que la précision de conversion est élevée.
・ Créons une pseudo application de conversation vocale ・ Essayons de le faire bouger lorsqu'il est placé sur S3 avec Lambda
Recommended Posts