Windows10 war es, OpenJTalk zu testen, aber die notwendige Umgebung, um für jeden geeignet zu sein, da es von Grund auf neu zugeschnitten wurde. Machen Sie sich eine Notiz. Wie der Titel schon sagt, werde ich vom Aufbau der Umgebung bis zum Sprechen von Japanisch in Python erklären.
Unter Windows müssen Sie es selbst erstellen, um OpenJTalk auszuführen. Bereiten Sie also die Umgebung vor.
Dies ist nicht das Hauptthema, daher werde ich es speichern.
Starten Sie die Eingabeaufforderung und führen Sie die folgenden beiden Befehle aus.
cd C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build
vcvarsall.bat x64
Wenn Sie versuchen, den Befehl "nmake" an der Eingabeaufforderung auszuführen und eine Fehlermeldung erhalten, dass der Befehl nicht ausgeführt werden kann (ein Fehler, dass der Befehl nicht erkannt wird), müssen Sie den Pfad "nmake.exe" in die Umgebungsvariable einfügen. (Ich musste es bestehen)
Ich konnte den folgenden Pass machen.
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x64
Von hier aus habe ich auf die Website von [hier] verwiesen (https://qiita.com/kkoba84/items/b828229c374a249965a9). Vielen Dank.
Holen Sie sich zuerst OpenJTalk 1.09. Wählen Sie aus hier, aber es wird sofort unter dem folgenden Link heruntergeladen.
http://downloads.sourceforge.net/open-jtalk/open_jtalk-1.09.tar.gz
Wählen Sie die für die Kompilierung erforderliche hts_engine-API für die Sprachsynthese unter hier aus. Wie OpenJTalk wird sie jedoch sofort über den folgenden Link heruntergeladen.
http://downloads.sourceforge.net/hts-engine/hts_engine_API-1.10.tar.gz
Extrahieren Sie das heruntergeladene open_jtalk-1.09.tar.gz
Setzen Sie es auf "c: \ temp \ open_jtalk-1.09". Wenn die hts_engineAPI auf "c: \ temp \ open_jtalk-1.09 \ hts_engine_API-1.10" erweitert wird, werden Probleme beim Kompilieren reduziert.
Jetzt, da Sie "nmake" an der Eingabeaufforderung verwenden können, kompilieren Sie es.
Beginnen Sie zunächst mit hts_engine_API-1.10 und führen Sie die folgenden drei Befehle aus. Nach Abschluss wird eine Datei in c: \ hts_engine_API erstellt.
cd c:\temp\open_jtalk-1.09\hts_engine_API-1.10
nmake /f Makefile.mak
nmake /f Makefile.mak install
Kompilieren Sie als Nächstes open_jtalk-1.09. Führen Sie die folgenden drei Befehle aus. Nach Abschluss wird eine Datei in c: \ open_jtalk erstellt.
cd c:\temp\open_jtalk-1.09
nmake /f Makefile.mak
nmake /f Makefile.mak install
Gegen Ende wird eine verstümmelte Zeichenfolge angezeigt, aber Sie müssen sich vorerst keine Sorgen machen. Klicken Sie hier für Details (https://qiita.com/kkoba84/items/b828229c374a249965a9)
Dadurch wird c: \ open_jtalk \ bin \ open_jtalk.exe generiert.
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 . Es sind die Daten von vier Emotionen eines Mädchens namens Mei.
Damit ist die Vorbereitung abgeschlossen.
Angenommen, eine Datei mit japanischer Eingabe wurde als input.txt in c: \ open_jtalk \ bin erstellt , Führen Sie den folgenden Befehl aus.
cd c:\open\jtalk\bin
open_jtalk -m mei_normal.htsvoice -x ../dic -ow output.wav input.txt
Wenn output.wav im selben Verzeichnis erstellt wird, ist dies erfolgreich. Doppelklicken Sie darauf, um festzustellen, ob es abgespielt wird. Zu diesem Zeitpunkt funktioniert es aufgrund des Einflusses der Codierung möglicherweise nicht auf Japanisch. Eigentlich habe ich nicht gearbeitet.
Verwenden Sie das Winsound-Modul, um OpenJTalk unter Python unter Windows auszuführen. Da das Wörterbuch dieses Mal durch Kompilieren unter Windows generiert wurde, war es Shift-Jis. Daher muss die Codierung konvertiert werden, wenn von der internen Codierung von Python zu STDIN übergegangen wird.
jtalk.py
#coding: utf-8
import subprocess
from datetime import datetime
import winsound
def jtalk(t):
# depend on your install folder
OPENJTALK_BINPATH = 'c:/open_jtalk/bin'
OPENJTALK_DICPATH = 'c:/open_jtalk/dic'
# VOICEPATH -> can change mei voice
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():
# get datetime and call jtalk
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()
Legen Sie es in ein beliebiges Verzeichnis und starten Sie es mit Python jtalk.py
. Natürlich ist die Startmethode kostenlos. Es ist ein Erfolg, wenn der Computer Datum und Uhrzeit spricht.
Rufen Sie die obige Datei (jtalk in jtalk.py) aus demselben Verzeichnis auf (auch hier kostenlos). Da das Argument das Zeichen ist, das Sie sprechen möchten, geben Sie es an. u''
gibt auch die Codierung an.
test.py
import jtalk
jtalk.jtalk(u'Das ist es')
das ist alles. Es ist lange her, aber danke!
https://qiita.com/Gaccho/items/f748f59784ff68d7a474 https://qiita.com/kkoba84/items/b828229c374a249965a9
Recommended Posts