Sprechen Sie japanischen Text mit OpenJTalk + Python

Zeigt die Methode unter Ubuntu und Windows. Es tut mir leid, dass der Mac keine Umgebung hat.

Sprechen Sie mit OpenJTalk + Python unter Ubuntu 14.04 LTS

Öffnen Sie das JTalk-Setup

Installieren Sie open-jtalk (1.07) mit apt-get.

Terminal


$ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001

Das mecab Wörterbuch ist in / var / lib / mecab / dic / open-jtalk / naist-jdic / installiert.

Einrichtung der Audiodatei

Sprachdaten werden von MMDAgent umgeleitet. MMDAgent_Example-1.6.zip hat 11MB.

Terminal


$ wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.6/MMDAgent_Example-1.6.zip/download -O MMDAgent_Example-1.6.zip

Extrahieren Sie dann die Datei ".htsvoice"

Terminal


$ unzip MMDAgent_Example-1.6.zip MMDAgent_Example-1.6/Voice/*

Kopieren Sie die Datei an denselben Speicherort wie hts-voice-nitech

Terminal


$ sudo cp -r MMDAgent_Example-1.6/Voice/mei/ /usr/share/hts-voice

Wiedergabe mit Python

http://raspi.seesaa.net/article/415530289.html Ich durfte mich beziehen.

Speichern Sie den folgenden Code als "jtalk.py" in einer Datei.

jtalk.py


#coding: utf-8
import subprocess
from datetime import datetime

def jtalk(t):
    open_jtalk=['open_jtalk']
    mech=['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
    htsvoice=['-m','/usr/share/hts-voice/mei/mei_normal.htsvoice']
    speed=['-r','1.0']
    outwav=['-ow','open_jtalk.wav']
    cmd=open_jtalk+mech+htsvoice+speed+outwav
    c = subprocess.Popen(cmd,stdin=subprocess.PIPE)
    c.stdin.write(t.encode())
    c.stdin.close()
    c.wait()
    aplay = ['aplay','-q','open_jtalk.wav']
    wr = subprocess.Popen(aplay)
    
def say_datetime():
    d = datetime.now()
    text = '%s Monat%s Tag,%s Zeit%s Minuten%s Sekunden' % (d.month, d.day, d.hour, d.minute, d.second)
    jtalk(text)

if __name__ == '__main__':
    say_datetime()

Im Ausführungstest

Terminal


$ python jtalk.py

Hoffentlich sprechen Sie die aktuelle Zeit Bei Verwendung von anderen Modulen

from_module_1.py


#coding: utf-8
import jtalk

jtalk.jtalk('Erzähle mir etwas')

Richten Sie Open JTalk unter Windows ein

Unter Ubuntu können Sie es problemlos installieren, wenn Sie "apt-get" verwenden. Unter Windows erstellen Sie es selbst.

Den Quellcode erhalten

Holen Sie sich OpenJTalk 1.09 von http://open-jtalk.sourceforge.net/

Laden Sie die für die Kompilierung erforderliche Sprachsynthesebibliothek hts_engineAPI von http://hts-engine.sourceforge.net/ herunter.

Wenn Sie open_jtalk-1.09.tar.gz auf c: \ temp \ open_jtalk-1.09 erweitern, ist hts_engine_API-1.10.tar.gz`` c: \ temp \ open_jtalk-1.09 \ hts_engine_API- Wenn Sie auf 1.10 erweitern, werden Probleme beim Kompilieren reduziert.

Kompilieren Sie in Visual Studio

Starten Sie das Visual Studio-Befehlstool. Geben Sie "nmake" ein, um sicherzustellen, dass es funktioniert.

Kompilieren Sie zunächst aus hts_engine_API-1.10.

cmd


cd c:\temp\open_jtalk-1.09\hts_engine_API-1.10
nmake /f Makefile.mak
nmake /f Makefile.mak install

Wenn es erfolgreich kompiliert wurde, wird eine Datei in c: \ hts_engine_API erstellt.

Kompilieren Sie als Nächstes open_jtalk.

cmd


cd c:\temp\open_jtalk-1.09
nmake /f Makefile.mak
nmake /f Makefile.mak install

Wenn die Zeichenfolge zum Konvertieren des Wörterbuchs gegen Ende angezeigt wird, werden die Zeichen verstümmelt Ich bin neugierig, aber wenn Sie sich Sorgen machen, hat Open JTalk ein vorgefertigtes Wörterbuch Sie können es auch verwenden.

Dies erzeugt c: \ open_jtalk \ bin \ open_jtalk.exe.

Sprachdaten abrufen

Von MMDAgent https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.6/ Laden Sie MMDAgent_Example-1.6.zip von herunter und kopieren Sie Voice / mei / *. Htvoice nach c: \ open_jtalk \ bin .

Ausführungstest

Angenommen, eine Datei mit japanischer Eingabe wurde als input.txt in c: \ open_jtalk \ bin erstellt

cmd


c:\open\jtalk\bin
open_jtalk -m mei_normal.htsvoice -x ../dic -ow output.wav input.txt

Ich werde versuchen, auszuführen. Wenn jetzt output.wav im selben Ordner erstellt wird, Doppelklicken Sie im Explorer, um zu sehen, ob es abgespielt wird.

Führen Sie OpenJTalk mit Python unter Windows aus

In Ubuntu habe ich den Befehl aplay verwendet, um die Datei abzuspielen. Unter Windows Verwenden Sie das Winsound-Modul. Da die Wörterbuchgenerierung in dieser Kompilierung unter Windows Shift-Jis war, ist es auch erforderlich, die Codierung von der internen Codierung von Python zu konvertieren, wenn sie an stdin übergeben wird.

Speichern Sie das Beispielprogramm unten als jtalk.py in c: \ open_jtalk \ bin.

jtalk.py


#coding: utf-8
# call OpenJTalk for windows
import subprocess
import winsound
from datetime import datetime


def jtalk(t):
    # depend on your install folder 
    OPENJTALK_BINPATH = 'c:/open_jtalk/bin'
    OPENJTALK_DICPATH = 'c:/open_jtalk/dic'
    OPENJTALK_VOICEPATH = 'c:/open_jtalk/bin/mei_normal.htsvoice'
    open_jtalk=[OPENJTALK_BINPATH + '/open_jtalk.exe']
    mech=['-x',OPENJTALK_DICPATH]
    htsvoice=['-m',OPENJTALK_VOICEPATH]
    speed=['-r','1.0']
    outwav=['-ow','open_jtalk.wav']
    cmd=open_jtalk+mech+htsvoice+speed+outwav
    c = subprocess.Popen(cmd,stdin=subprocess.PIPE)

    # convert text encoding from utf-8 to shitf-jis
    c.stdin.write(t.encode('shift-jis'))
    c.stdin.close()
    c.wait()

    # play wav audio file with winsound module
    winsound.PlaySound('open_jtalk.wav', winsound.SND_FILENAME)

    
def say_datetime():
    d = datetime.now()
    text = '%s Monat%s Tag,%s Zeit%s Minuten%s Sekunden' % (d.month, d.day, d.hour, d.minute, d.second)
    print(text)
    jtalk(text)

if __name__ == '__main__':
    say_datetime()

Mach das. Ich habe Anaconda Python installiert, also

cmd


python jtalk.py

Sprechen Sie dann das aktuelle Datum und die aktuelle Uhrzeit.

Bei Verwendung als Python-Modul

jtalk.py wird in utf-8-Codierung gespeichert. Wenn Sie Python über die Eingabeaufforderung ausführen, ist die japanische Zeichenfolge immer noch Shift-JIS oder nicht einheitlich.

Fügen Sie daher bei der Eingabe von Japanisch am Anfang "u" mit "u" und "u" hinzu, um anzuzeigen, dass es sich um utf-8 handelt.

from_module_2.py


import jtalk

jtalk.jtalk(u'Ich werde Japanisch sprechen') 

Recommended Posts

Sprechen Sie japanischen Text mit OpenJTalk + Python
OpenJTalk unter Windows 10 (Sprechen Sie Japanisch mit Python aus der Umgebungskonstruktion)
Mit OpenJtalk auf Japanisch sprechen
Mit OpenJtalk auf Japanisch sprechen (Textdatei lesen)
Python: Japanischer Text: Morphologische Analyse
Japanische morphologische Analyse mit Python
GOTO in Python mit erhabenem Text 3
Textextraktion mit AWS Textract (Python3.6)
Text Mining mit Python ① Morphologische Analyse
Aktivieren Sie Python raw_input mit Sublime Text 3
Extrahieren Sie Text aus [python] pdf und lesen Sie Zeichen mit Open-Jtalk vor
Englische Spracherkennung mit Python [Rede zu Text]
Generieren Sie japanische Testdaten mit Python faker
Verwenden Sie OpenJtalk, damit Raspberry Pi Japanisch spricht
Hinweise zur japanischen OCR mit Python
Extrahieren Sie japanischen Text aus PDF mit PDFMiner
So zeigen Sie Python-Japanisch mit Lolipop an
[Python] Lassen Sie uns matplotlib mit Japanisch kompatibel machen
Wie man mit Python-Flüchen Japanisch eingibt
Text Mining mit Python ② Visualisierung mit Word Cloud
Lesen von Zeichen in Bildern mit Python OCR
Statistik mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Japanisch mit Matplotlib
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Textextraktion mit GCP Cloud Vision API (Python3.6)
Probieren Sie es mit Word Cloud Japanese Python JupyterLab.
Mit gTTS auf Japanisch sprechen (Textdatei lesen)
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Behandeln Sie Zip-Dateien mit japanischen Dateinamen in Python 3
Erstellen Sie ein Bild mit Zeichen mit Python (Japanisch)
Zip mit Python extrahieren (unterstützt japanische Dateinamen)
[Python] Umgang mit japanischen Zeichen mit openCV
Clustertext in Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Scraping in Python (Vorbereitung)
Text Mining mit Python ① Morphologische Analyse (re: Linux-Version)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Serielle Kommunikation mit Python
Python lernen mit ChemTHEATER 05-1