Letztes Transkript Polly vor dem letzten, diesmal habe ich ein wenig mit jedem gespielt, aber diesmal Wurde so geändert, dass es leicht verwendet werden kann, um es frei zu verwenden.
・ Sequenz unter der Annahme einer Konversations-App ・ Zu realisierender Code · Tatsächliche Ergebnis
Die Annahme ist, den Text mit einer Konversations-App auf dem Weg zu konvertieren, um eine Situation zu schaffen, als ob ein Mann und eine Frau sprechen. Hier ist die Konversationsanwendung eine Verarbeitung in natürlicher Sprache, und die Eingabe ist eine Konversationsanwendung mit Text.
Daher wurde die folgende Sequenz durchgeführt. ① Geben Sie einen geeigneten Satz ein ② Wandle den Satz von ① mit polly in eine weibliche Stimme um ③ Erwerben Sie die MP3-Datei für weibliche Sprachdateien. ④ Transkribieren Sie die weibliche Sprachdatei und konvertieren Sie sie in Text, Eingabe der Konversations-App, Antworttext ⑤ Polly den Antwortsatz (jetzt den konvertierten Zeichensatz von ④) und konvertiere ihn in männliche Stimme; ⑥ Holen Sie sich männliche Sprachdatei mp3; Vorkommen ⑦ Transkribieren Sie abschließend die männliche Sprachdatei und konvertieren Sie sie in einen Zeichensatz, geben Sie die Konversationsanwendung ein und antworten Sie. .. ..
text0="Hallo, heute ist es in Tokio und Yokohama bewölkt. Mizuki,Ich habe angekündigt" #①
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) #⑦
In Bezug auf den Code habe ich es nur zu einer Funktion gemacht, um die Verwendung derjenigen vom letzten und vom letzten Mal zu vereinfachen. Die zu verwendende Bibliothek lautet wie folgt.
from __future__ import print_function
import time
import boto3
import pandas as pd
from boto3 import Session
Definiert Speicher-Buckets für Session, Polly, Transicribe und S3, die von beiden Funktionen verwendet werden.
session = Session(profile_name="default")
polly = session.client("polly")
transcribe = boto3.client('transcribe')
s3 = boto3.resource('s3') #S3-Objekt abrufen
bucket = s3.Bucket('muauanpub') #Bucket-Definition
Das Folgende ist die Funktion function_polly, die Text in Sprache konvertiert. Die Eingabe ist Text und Stimme0 der weiblichen oder männlichen Stimme. Die Verarbeitung in der Funktion ist ① Konvertierung ② Speichern Sie die MP3-Datei im lokalen ec2 ③ In s3-Bucket hochladen ⇒ Als HTML usw. veröffentlicht. ④ Geben Sie den Audiodateinamen vfile in s3 zurück
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
Als nächstes folgt die Funktion fun_tran, die eine Audiodatei in eine Textdatei konvertiert. Was hier wichtig ist, ist, dass für job_name eindeutige und kontinuierliche Konvertierungen durchgeführt werden müssen, der Jobname nacheinander mit Elementen wie time generiert oder gelöscht werden muss. Dieses Mal wurde die zu löschende Funktion von transcript.delete_transcription_job (TranscriptionJobName = 'test_tran') realisiert, daher habe ich diese Methode verwendet. Wie ich das letzte Mal geschrieben habe, ist es auch wichtig, den s3-Bucket-Namen des Ausgabeziels zu definieren. Holen Sie sich das s3-Objekt; s3 = boto3.resource ('s3'). .. .. Usw. sind dupliziert.
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') #Download auf ec2; Datei herunterladen, Datei nach dem Download
df = pd.read_json('test_tran.json') #Lesen Sie die JSON-Datei mit Pandas
text1=df['results'][1][0]['transcript']
print(text1) #Extrahieren Sie die Konvertierungszeichenfolge aus der JSON-Datei
transcribe.delete_transcription_job(TranscriptionJobName='test_tran')
return text1
Es ist ungefähr 12 Stunden öffentlich, aber es hat aufgehört, weil es viele Anfragen gibt und die s3-Anforderungsgebühr den freien Frame m (__) m zu überschreiten scheint Sprachwiedergabe für Frauen und Männer
・ Ich habe eine Polly- und Transcribe-Funktion erstellt und versucht, sie auszuführen. ・ Beide Funktionen können problemlos verwendet werden, und ich habe versucht, kontinuierlich männliche und weibliche Stimmen zu generieren. ・ Ich habe versucht, den gleichen Satz zu drehen, aber das Vorkommen ist nicht zusammengebrochen und der Ausgabesatz war der gleiche. Man kann also sagen, dass die Konvertierungsgenauigkeit hoch ist.
・ Lassen Sie uns eine Pseudo-Sprachkonversations-App erstellen ・ Lassen Sie uns versuchen, es in Bewegung zu setzen, wenn es mit Lambda auf S3 gesetzt wird
Recommended Posts