[PYTHON] [Einführung in AWS] Ich habe versucht, eine Konversations-App zu portieren und mit text2speech @ AWS playing zu spielen

Vor kurzem habe ich mit Shogi AI gespielt, daher wurde der Artikel vernachlässigt, aber ich habe von Freitag bis Samstag an "Own AWS Hackason (vorläufig)" teilgenommen und ihn verlassen, weil ich den Titel machen und mein AWS-Debüt geben konnte. Ich behalte es. Alle Teilnehmer waren wirklich Anfänger in einer Huckepackfahrt, aber es waren sehr erfüllende 24 Stunden.

Was ich in 24 Stunden gemacht habe

** Unten finden Sie eine chronologische Geschichte. ** ** ** ・ Stellen Sie eine Verbindung zu aws her ・ Überprüfen Sie den Typ der AI-Lösung ・ Bestätigung von Speech2text ** ・ Shogi AI lernen ** ・ Pykakasi-Bestätigung ** ・ Mecab-Installation @ AWS ** ** ・ QA_conversation geändert, um AWS zu unterstützen ** ** ・ Mit text2speech @ AWS in eine MP3-Datei aufnehmen ** ・ Massen-Download von MP3-Dateien @TeraTerm ** - Das Veröffentlichen von MP3-Dateien in S3 #confidential file war im Weg ** ** ・ Automatische Generierung einer öffentlichen S3-Audiodatei **

** Folgendes konnte aufgrund einer Zeitüberschreitung nicht durchgeführt werden ** 。。。 ・ MP3-Übertragung und erneutes Senden im Verlauf des Gesprächs 。。。 ・ Sprachtextkonvertierung durch Speech2text ・ Sprechen Sie auf Ihrem Smartphone ·Komplett

Einen Artikel machen

・ Lernen Sie Shogi AI in der Umgebung [email protected] ・ Portieren von Konversations-Apps

・ Lernen Sie Shogi AI in der Umgebung [email protected]

Die Umgebung wurde größtenteils vom Veranstalter bereitgestellt und es war eine Art, Fortschritte im Wiki zu schreiben, das auf ec2 erstellt wurde. Mit anderen Worten, erstellen Sie eine Instanz gemäß Ihrer eigenen App. Also habe ich mich für die GPU-Umgebung p2.xlarge entschieden, die maschinell erlernt werden kann. Jetzt können Sie alle Frameworks für maschinelles Lernen verwenden. Fast wie unten gezeigt, aber der Antrag auf Lockerung der Beschränkungen war nicht notwendig, da der Veranstalter ihn im Voraus festgelegt hatte. 【Referenz】 Wenn Sie Chainer auf einer GPU ausführen möchten, können Sie Deep Learning Base AMI (Ubuntu) einfach verwenden.

Wenn Sie auch ein Schlüsselpaar erstellen, wird die Instanz sicher gestartet

Der Ablauf ist wie im obigen Artikel, aber ich werde eine kleine ergänzende Beschreibung hinzufügen. Dieses Schlüsselpaar ist wichtig und muss an einem sicheren Ort aufbewahrt werden, da es für die Verbindung mit SSH erforderlich ist. Beim Erstellen einer Instanz werden außerdem die folgenden Informationen festgelegt und die Datei kann heruntergeladen werden. Diese Informationen sind beim Erstellen von Apps mit AWS-Lösungen unerlässlich und sollten an einem sicheren Ort aufbewahrt werden.

aws_access_key_id                     
aws_secret_access_key

Verbinden Sie sich mit Teraterm

-Installieren Sie TeraTerm.

Dieses Mal habe ich versucht, train_policy_value_resnet.py von Shogi AI auszuführen, aber es hat im Vergleich zur lokalen Umgebung viel Zeit in Anspruch genommen. Zur Zeit habe ich eine GPU verwendet, aber da die CPU zu 100% ausgelastet war, verwende ich CuDNN lokal, aber ich war enttäuscht, dass ich nicht überprüft habe, ob es installiert ist.

Portieren von Konversations-Apps

Die Datei lautet Verwenden Sie neulich die nano @ ubuntu-Version der Konversations-App. Ich werde dieses Material senden. Vor allem, obwohl es sich um maschinelles Lernen handelt, wird DL nicht verwendet. Erstellen Sie daher eine neue t2.large-Instanz von ubuntu18.04 und führen Sie sie aus. Im Vergleich zum Preis ist es eine Größenordnung billiger, wie unten gezeigt.

p2.xlarge 4 12 61 GiB EBS nur 0.9USD/Zeit
t2.groß 2 variabel 8 GiB EBS nur 0.0928USD/Zeit

【Referenz】 Amazon EC2-Preisliste

・ Mecab-Installation @AWS

Die größte Herausforderung bei der Portierung ist die Installation von Mecab. Ich habe Probleme mit jeder Umgebung, aber ich habe Probleme mit t2.large ubuntu 18.04 unter AWS. Die Grundlagen sind wie folgt dargestellt wie bei Nano. 【Referenz】 Mecab unter Ubuntu 18.10 installieren Allerdings habe ich auch dieses Mal ein No-Modul mit dem Namen 'Mecab' erhalten. Die Ursache ist unbekannt, aber ich habe es unten neu installiert und es hat funktioniert.

sudo pip3 install --no-cache-dir mecab-python3

Auch das mit der obigen Methode problemlos eingegebene Wörterbuch. Ich installiere pyaudio nicht, weil ich die Klangerzeugung nicht repariere, aber ich habe pykakasi installiert und bestätigt. Jetzt funktioniert es, wenn ich den Funktionsaufruf text2speak () in qa_conversation_nano.py entferne.

- Spielen Sie das konvertierte Audio im Web mit text2speech von amazon polly

Diese App möchte schließlich ein Sprachgespräch führen. Ich wollte also language2text und text2speech verwenden, falls vorhanden, aber ich habe mich dafür entschieden, da AWS nur text2speech auf Japanisch unterstützt.

Sprachkonvertierung mit Pollys text2speech

AWS hat viele Erklärungen, aber es scheint, dass Sie sich daran gewöhnen müssen, auf den Punkt zu kommen. Also habe ich den folgenden Code gefunden. Wenn Sie dies verwenden, wird der in Text eingegebene Text in eine Audiodatei konvertiert und die MP3-Datei in der angegebenen Richtung des ec2-Servers abgelegt. Geben Sie hier den Schlüssel ein, der beim Erstellen der obigen Instanz auf der rechten Seite von aws_access_key_id = und aws_secret_access_key = ,.

SynthesizeSpeech@AWS

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()

Setzen Sie für Japanisch VoiceId = 'Mizuki' und fügen Sie Japanisch in Text ein. Es scheint, dass Sie verschiedene Anpassungen vornehmen können, diesmal ist dies jedoch aus Zeitgründen die Standardeinstellung. Amazon Polly Voice

Transfer von ec2 nach s3

Ich konnte es mit dem folgenden Code machen. Eigentlich gab es hier ein Problem. Mit anderen Worten, ich habe die Fehlermeldung erhalten, dass die Schlüssel unterschiedlich sind. Dies lag daran, dass während dieser Übertragung eine Authentifizierung stattfand und automatisch die vertrauliche Datei überprüft und der alte Schlüssel gelesen wurde. Diesmal habe ich diese Datei gelöscht und normal hochgeladen.

# -*- 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')
s3_client = boto3.client('s3')

# Upload the file to S3
s3_client.upload_file('test.txt', 'bucket-name', 'test-remote.txt')

s3 Gibt das Audio des öffentlichen Servers aus

Zu diesem Zeitpunkt können Sie Sound mit normalem HTML erzeugen.

【Referenz】

<html>
<body>
<figure>
    <figcaption>Listen to the Answer:</figcaption>
    <audio
        autoplay
        controls
        src="https://******.s3-****.amazonaws.com/mp3/speech0.mp3">
            Your browser does not support the
            <code>audio</code> element.
    </audio>
</figure>
</body>
</html>

Zusammenfassung

・ Ich konnte mein AWS-Debüt geben, indem ich am "Own AWS Hackason (vorläufig)" teilnahm. ・ Ich habe versucht, die Konversations-App auf AWS abzuspielen ・ Text2speech war unklar

・ Speech2text unterstützte Japanisch in AWS nicht, daher müssen Gegenmaßnahmen in Betracht gezogen werden. ・ Sprechen Sie auf Ihrem Smartphone

Recommended Posts

[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 ♪
Ich habe versucht, mit Pillow mit dem Bild zu spielen
[Einführung in AWS] Text-Voice-Konvertierung und Wiedergabe ♪
[Einführung in AWS] Ich habe mit Polly und Transcribe male mit Männer- und Frauenstimmen gespielt
Ich versuchte, Trauer und Freude über das Problem der stabilen Ehe auszudrücken.
Ich habe versucht, den Winkel von Sin und Cos mit Chainer zu lernen
Ich habe versucht, die Netzwerkbandbreite und -verzögerung mit dem Befehl tc zu steuern
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, mit tkinter mit dem Taschenrechner zu spielen
[Einführung in PID] Ich habe versucht, ♬ zu steuern und zu spielen
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
[Einführung in Pytorch] Ich habe versucht, Cifar10 mit VGG16 ♬ zu kategorisieren
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
Ich habe versucht, Überlebende der Titanic mit Kaggle vorherzusagen und einzureichen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, die Zugverspätungsinformationen mit LINE Notify zu benachrichtigen
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Ich habe versucht, die Unterschiede zwischen Java und Python aufzuzählen
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich habe versucht, den Ipython-Cluster unter AWS auf das Minimum zu starten
Ich habe den Chat von YouTube Live angezeigt und versucht zu spielen
Ich habe versucht, zum Zeitpunkt der Bereitstellung mit Fabric und ChatWork Api automatisch in ChatWork zu posten
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Einführung in die KI-Erstellung mit Python! Teil 1 Ich habe versucht, die Nummer anhand des handgeschriebenen Zahlenbildes zu klassifizieren und vorherzusagen
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
[AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part2 zu bedienen
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe versucht, die Lesezeichen zu visualisieren, die mit Doc2Vec und PCA nach Slack fliegen
[Einführung in die Simulation] Ich habe versucht, durch Simulation einer Koronainfektion zu spielen ♬ Teil 2
Ich habe versucht, das Bild mit OpenCV im "Skizzenstil" zu verarbeiten
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
[Einführung in sinGAN-Tensorflow] Ich habe mit der hochauflösenden "Challenge Big Imayuyu" ♬ gespielt
Ich habe am Wochenende versucht, mit Bitcoin Systre zu beginnen
[AWS / Tello] Ich habe versucht, die Drohne mit meiner Stimme Part1 zu bedienen
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern
Ich habe versucht, Gesichtsmarkierungen mit Python und Dlib leicht zu erkennen
[Einführung in RasPi4] Ich habe mit "Hiroko / Hiromis giftigem Zungengespräch" gespielt ♪
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe versucht, den Sesam für Eingang 2 mit einem einzigen Druck auf die AWS IoT-Taste zu entsperren
Ich habe zum ersten Mal versucht, mit DynamoDB und Step Functions eine serverlose Stapelverarbeitung zu erstellen
[Python] Ich habe versucht, die Nacht der Galaxienbahn mit WordCloud zu visualisieren!
Ich habe versucht, schlechte Tweets regelmäßig mit der AWS Lambda + Twitter API zu löschen
Ich versuchte zusammenzufassen, bis ich die Bank verließ und Ingenieur wurde
Ich habe versucht, das Bild durch Klicken mit der rechten und linken Maustaste in den angegebenen Ordner zu verschieben
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren