[PYTHON] [Einführung in AWS] Ich habe mit Polly und Transcribe male mit Männer- und Frauenstimmen gespielt

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.

Was ich getan habe

・ Sequenz unter der Annahme einer Konversations-App ・ Zu realisierender Code · Tatsächliche Ergebnis

・ Sequenz unter der Annahme einer Konversations-App

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) #⑦

・ Zu realisierender Code

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

· Tatsächliche Ergebnis

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

Zusammenfassung

・ 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

[Einführung in AWS] Ich habe mit Polly und Transcribe male mit Männer- und Frauenstimmen gespielt
[Einführung in Pytorch] Ich habe mit sinGAN ♬ gespielt
[Einführung in AWS] Ich habe versucht, eine Konversations-App zu portieren und mit text2speech @ AWS playing zu spielen
[Einführung in AWS] Ich habe versucht, mit der Sprach-Text-Konvertierung zu spielen ♪
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
Ich habe mit PyQt5 und Python3 gespielt
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
[Einführung in sinGAN-Tensorflow] Ich habe mit der hochauflösenden "Challenge Big Imayuyu" ♬ gespielt
[Einführung in Matplotlib] Achsen 3D-Animation: Ich habe mit 3D-Lisaju-Figuren gespielt ♬
[Einführung in RasPi4] Ich habe mit "Hiroko / Hiromis giftigem Zungengespräch" gespielt ♪
[Einführung in StyleGAN] Ich habe mit "Eine Frau verwandelt sich in Mayuyu" gespielt ♬
Ich möchte mit aws mit Python spielen
[Einführung in AWS] Text-Voice-Konvertierung und Wiedergabe ♪
[Einführung in StyleGAN] Ich habe mit style_mixing "Frau, die die Brille abnimmt" ♬ gespielt
[Einführung in AWS] Das erste Lambda ist Transcribe ♪
[Einführung in PID] Ich habe versucht, ♬ zu steuern und zu spielen
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
[Einführung in Pytorch] Ich habe versucht, Cifar10 mit VGG16 ♬ zu kategorisieren
Ich möchte Lambda mit Python auf Mac AWS!
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Ich habe mit Wordcloud gespielt!
Ich habe versucht, Überlebende der Titanic mit Kaggle vorherzusagen und einzureichen
[Einführung in das Modell der Infektionskrankheiten] Ich habe versucht, zu passen und zu spielen ♬
Maschinelles Lernen mit Nogisaka 46 und Keyakizaka 46 Teil 1 Einführung
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
[Einführung in Mac] Praktische Mac-Apps und -Einstellungen, die ich verwende
Einführung in RDB mit sqlalchemy Ⅰ
Einführung in die nichtlineare Optimierung (I)
Ich habe versucht, die Lesezeichen zu visualisieren, die mit Doc2Vec und PCA nach Slack fliegen
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich las "Das Lernen mit Python von der Einführung bis zur Praxis stärken", Kapitel 1
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Bereiten Sie eine Umgebung für die Verwendung von OpenCV und Pillow mit AWS Lambda vor
Ich habe versucht, Gesichtsmarkierungen mit Python und Dlib leicht zu erkennen
Ich las "Das Lernen mit Python von der Einführung bis zur Praxis stärken", Kapitel 2