Zeigt die Methode unter Ubuntu und Windows. Es tut mir leid, dass der Mac keine Umgebung hat.
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.
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
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')
Unter Ubuntu können Sie es problemlos installieren, wenn Sie "apt-get" verwenden. Unter Windows erstellen Sie es selbst.
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.
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
.
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 .
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.
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.
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