[PYTHON] [Einführung in AWS] Text-Voice-Konvertierung und Wiedergabe ♪

Diesmal ist es eine Aufzeichnung darüber, was ich vor einem halben Jahr bei meinem eigenen AWS-Hackathon getan habe (https://qiita.com/MuAuan/items/c189fc894b2d9cdd1a6a). Das letzte Mal hörte ich mir an, was ich nicht verstand, weil ein Experte in der Nähe war, aber dieses Mal erinnerte ich mich an alles, von der Registrierung für freie Slots bis zur Konvertierung von Text in Sprache mit Polly, so dass es sich in meinem Gedächtnis festsetzte. Das Linux von Ec2 läuft nutzlos, aber es befindet sich natürlich immer noch in der freien Ebene. Übrigens verbraucht am meisten 30 GB Amazon Elastic Block Storage, was 12,5% entspricht.

Was ich getan habe

・ Legen Sie einen Entwicklungsstil fest ・ Letzter Code · Leichte Verbesserung ・ Hören Sie den Ton

・ Legen Sie einen Entwicklungsstil fest

Viele der Registrierungen sind nett, daher denke ich, dass sie durch Nachahmung erstellt werden können. 【Referenz】 Anfänger versuchen AWS Zusammenfassung der Grundeinstellungen, die nach dem Erwerb eines AWS-Kontos schnell vorgenommen werden sollten So konnte ich in Ohio sicher einen EC2-Server einrichten. Als Entwicklungsstil habe ich zuerst Programme mit vi erstellt, aber als ich mich daran gewöhnt habe, habe ich ein Programm mit Jupyter Notebook auf meinem PC erstellt und es mit Teraterm gesendet. Das ist definitiv einfacher. Darüber hinaus stehen Abrechnung und Sicherheit an erster Stelle, sind aber am wichtigsten. Anfangs habe ich den folgenden Befehl verwendet. Da ich mich jedoch ein wenig an jede Seite und jeden Dienst von AWS gewöhne, kann ich über die CLI Dateivorgänge in S3 ausführen. Ich bin jedoch zu dem Schluss gekommen, dass es schneller ist, mit Dateien direkt in S3 zu spielen. Liste der Befehle zum Betreiben von S3 mit AWS CLI

・ Letzter Code

Ich habe auf die Referenz verwiesen, weil ich einen Schlüssel zur Verwendung von S3 benötige. Der Bildschirm ist etwas anders, aber Sie können sehen, was Sie tun. 【Referenz】 Zugriffsschlüssel und geheimen Schlüssel für den Betrieb von s3 of aws (IAM) abrufen

Nach der Installation verschiedener Python-Bibliotheken auf der Ubuntu-Instanz von EC2 wird beim Übertragen des Programms mit Teraterm [Benutzername ist Ubuntu](https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2- Es war Passwort-Login /). Außerdem kopiert der Host die öffentliche IPv4-IP-Adresse und gibt sie ein. Teraterm ist übrigens den ganzen Tag ohne Unterbrechung verbunden. Wenn der Speicherort der Instanz jedoch Ohio ist, sich jedoch in Tokio geändert hat, wird die Instanz als 0 angezeigt, und ich habe es zunächst eilig. Verwenden Sie den Befehl SSHSCR, wenn Sie mit Teraterm Dinge von Ihrem eigenen PC auf Ihren eigenen PC übertragen. Der folgende vorherige Code hat also funktioniert. Dieser Code konvertiert mit boto3 den in Text angezeigten Text in Joannas Stimme und speichert ihn in language.mp3.

import boto3
polly_client = boto3.Session(
                aws_access_key_id=,                     
    aws_secret_access_key=,
    region_name='us-west-2').client('polly')
response = polly_client.synthesize_speech(VoiceId='Joanna',
                OutputFormat='mp3', 
                Text = 'This is a sample text to be synthesized.')
file = open('speech.mp3', 'wb')
file.write(response['AudioStream'].read())
file.close()

Als nächstes lautet der Code, um dies in den zuvor in S3 erstellten Bucket zu übertragen, wie folgt.

# -*- coding: utf-8 -*-
import boto3
s3 = boto3.resource('s3') #S3-Objekt abrufen
bucket = s3.Bucket('s3 Eimer-name')
bucket.upload_file('Geben Sie die ec2-MP3-Datei an', 'dir spezifikation des eimers von s3')

Aber

s3_client = boto3.client('s3')
# Upload the file to S3
s3_client.upload_file('Geben Sie die ec2-MP3-Datei an', 's3 Eimer-name', 'mp3 Dateiname in s3')

Aber es funktioniert.

· Leichte Verbesserung

In diesem Fall sind die Dateien in S3 jedoch in beiden Fällen privat (solche Sicherheitseinstellungen sind die Standardeinstellungen). In diesem Fall können Sie nicht von außen auf (Wiedergabe) verweisen, es sei denn, Sie veröffentlichen jede Datei auf der S3-Site. Wenn Sie dies als Referenz verwenden, können Sie anscheinend ACL = Public festlegen, wenn es gesendet wird. Diesmal konnte ich es jedoch nicht mit dieser Methode tun, aber als Ergebnis verschiedener Versuche (** Ich glaubte, dass ich es schaffen konnte ) konnte ich es mit dem folgenden Code realisieren. 【Referenz】 [Wie kann ich mit boto3 Dateien in S3 hochladen und veröffentlichen? ](Https://www.it-swarm.dev/ja/python/boto3%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6% E3% 83% 95% E3% 82% A1% E3% 82% A4% E3% 83% AB% E3% 82% 92s3% E3% 81% AB% E3% 82% A2% E3% 83% 83% E3% 83% 97% E3% 83% AD% E3% 83% BC% E3% 83% 89% E3% 81% 97% E3% 81% A6% E5% 85% AC% E9% 96% 8B% E3% 81% 99% E3% 82% 8B% E6% 96% B9% E6% B3% 95% E3% 81% AF% EF% BC% 9F / 830216134 /) Es gibt zwei Verbesserungen im Code unten im Vergleich zu oben. ① session = Session (profile_name = "***") macht das direkte Schreiben des Schlüssels überflüssig (2) Da es veröffentlicht (referenziert) wird, während es von Bucket.upload_file übertragen wird ('ec2-Dateiname', 's3-Dateiname', ExtraArgs = {'ACL': 'public-read'}), ist es kontinuierlich. Audio kann kontinuierlich veröffentlicht werden

import boto3
from boto3 import Session

session = Session(profile_name="*****")
polly = session.client("polly")
response = polly.synthesize_speech(Text="Hallo, Tokio und Yokohama sind auch etwas bewölkt. Die Stimme ist Mizuki", OutputFormat="mp3",  VoiceId="Mizuki")

file = open('Gespeicherter Dateiname in ec2', 'wb')
file.write(response['AudioStream'].read())
file.close()

s3 = boto3.resource('s3') #S3-Objekt abrufen
bucket = s3.Bucket('Bucket Dir Name für s3')
bucket.upload_file('ec2 Dateiname', 'Dateiname in s3',  ExtraArgs={'ACL':'public-read'})

Jetzt haben Sie einen einseitigen Mechanismus für Konversationen und andere Apps.

・ Hören Sie den Ton

Sie können es im folgenden HTML anhören.

https://Eimername.s3.amazonaws.com/index.html

$ aws s3 cp --acl public-read index.html s3://Eimername/index.html
<html>
<body>
<figure>
    <figcaption>Listen to the Answer:</figcaption>
    <audio
        autoplay
        controls
        src="speech0.mp3">
            Your browser does not support the
            <code>audio</code> element.
    </audio>
</figure>
</body>
</html>

Zusammenfassung

・ Ich habe versucht, die AWS Hackason-App mit der kostenlosen Stufe AWS auszuführen. ・ Japanischer Text mit Polly-Voice-Konvertierung war für die kontinuierliche Veröffentlichung möglich

・ S3-Ich möchte Lambda herunterladen oder hochladen (Amazon Transcribe, Amazon Translate)

Recommended Posts

[Einführung in AWS] Text-Voice-Konvertierung und Wiedergabe ♪
[Einführung in AWS] Ich habe versucht, mit der Sprach-Text-Konvertierung zu spielen ♪
[Einführung in AWS] Ich habe versucht, eine Konversations-App zu portieren und mit text2speech @ AWS playing zu spielen
[Einführung in das Modell der Infektionskrankheiten] Ich habe versucht, zu passen und zu spielen ♬
[Einführung in Python3 Tag 1] Programmierung und Python
[AWS SAM] Einführung in die Python-Version
[Einführung in AWS] Ich habe mit Polly und Transcribe male mit Männer- und Frauenstimmen gespielt
Einführung in Scrapy (1)
Einführung in Scrapy (3)
Einführung in die Thano-Funktionsdefinition und automatische Differenzierung
Erste Schritte mit Supervisor
Einführung in Tkinter 1: Einführung
[Einführung in Python3 Tag 12] Kapitel 6 Objekte und Klassen (6.3-6.15)
[Einführung in AWS] Das erste Lambda ist Transcribe ♪
Einführung in PyQt
Einführung in Scrapy (2)
[Einführung in Python3, Tag 22] Kapitel 11 Parallele Verarbeitung und Vernetzung (11.1 bis 11.3)
[Einführung in die Udemy Python3 + -Anwendung] 64. Namespace und Gültigkeitsbereich
[Einführung in Python3 Tag 11] Kapitel 6 Objekte und Klassen (6.1-6.2)
[Linux] Einführung in Linux
[AWS; Einführung in Lambda] 2. Extrahieren Sie Sätze aus der JSON-Datei und speichern Sie S3 ♬
Einführung in Scrapy (4)
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
Einführung in discord.py (2)
[Einführung in PID] Ich habe versucht, ♬ zu steuern und zu spielen
[Einführung in die Udemy Python3 + -Anwendung] 35. Vergleichsoperatoren und logische Operatoren
[Einführung in StyleGAN] Mayuyu und Anime lächelten ♬
[Einführung in die Udemy Python3 + -Anwendung] 68. Importanweisung und AS
Einführung in Lightning Pytorch
Einführung in nichtparametrische Felder
Einführung in EV3 / MicroPython
Konvertierung zwischen hexadezimaler Zeichenfolge und Zeichenfolge
Einführung in die TensorFlow-Bilderkennung
Einführung in OpenCV (Python) - (2)
Einführung in PyQt4 Teil 1
Einführung in die Abhängigkeitsinjektion
Einführung in Private Chainer
Einführung in das maschinelle Lernen
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
[Einführung in cx_Oracle] (Teil 6) Zuordnung von DB- und Python-Datentypen
[Einführung in Data Scientists] Deskriptive Statistik und einfache Regressionsanalyse ♬
[Einführung in cx_Oracle] (Teil 4) Abrufen und Scrollen der Ergebnismenge
[Einführung in die Udemy Python3 + -Anwendung] 42. für Anweisung, break-Anweisung und continue-Anweisung
[Einführung in die Udemy Python3 + -Anwendung] 39. while-Anweisung, continue-Anweisung und break-Anweisung
[Einführung in cx_Oracle] (10.) Aktualisieren Sie die DML-Anweisung und die DDL / DCL-Anweisung
[Einführung in die Simulation] Ich habe versucht, durch Simulation einer Koronainfektion zu spielen ♬
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
[Einführung in AWS] Memorandum zum Erstellen eines Webservers auf AWS
[Einführung in Scipy] Berechnung der Lorenzkurve und des Gini-Koeffizienten ♬
[Einführung in Udemy Python3 + Application] 50. Positionsargumente, Schlüsselwortargumente und Standardargumente
Maschinelles Lernen mit Nogisaka 46 und Keyakizaka 46 Teil 1 Einführung
Einführung in die Effektüberprüfung Schreiben der Kapitel 4 und 5 in Python
Einführung von DataLiner Version 1.3 und Verwendung von Union Append
[Einführung in Python] Kombinieren Sie Nikkei-Durchschnitts- und NY Dow-CSV-Daten
[Einführung in Tensorflow] Verstehen Sie Tensorflow richtig und versuchen Sie, ein Modell zu erstellen
[Einführung in Mac] Praktische Mac-Apps und -Einstellungen, die ich verwende