Affiche la méthode sur Ubuntu et Windows. Je suis désolé que Mac n'ait pas d'environnement.
Installez open-jtalk (1.07) avec ʻapt-get`.
Terminal
$ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
Le dictionnaire mecab
est installé dans / var / lib / mecab / dic / open-jtalk / naist-jdic /
.
Les données vocales sont détournées de MMDAgent. MMDAgent_Example-1.6.zip
a 11 Mo.
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
Puis extrayez le fichier .htsvoice
Terminal
$ unzip MMDAgent_Example-1.6.zip MMDAgent_Example-1.6/Voice/*
Copiez le fichier au même emplacement que hts-voice-nitech
Terminal
$ sudo cp -r MMDAgent_Example-1.6/Voice/mei/ /usr/share/hts-voice
http://raspi.seesaa.net/article/415530289.html J'ai été autorisé à faire référence.
Enregistrez le code suivant sous «jtalk.py» dans un fichier.
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 mois%jour de s,%s temps%s minutes%s secondes' % (d.month, d.day, d.hour, d.minute, d.second)
jtalk(text)
if __name__ == '__main__':
say_datetime()
Dans le test d'exécution
Terminal
$ python jtalk.py
J'espère parler de l'heure actuelle Lors de l'utilisation à partir d'autres modules
from_module_1.py
#coding: utf-8
import jtalk
jtalk.jtalk('Dis moi quelque chose')
Sur Ubuntu, je pourrais l'installer en douceur en faisant ʻapt-get`, Sous Windows, vous le construisez vous-même.
Obtenez OpenJTalk 1.09 sur http://open-jtalk.sourceforge.net/
Téléchargez la bibliothèque de synthèse vocale hts_engineAPI requise pour la compilation sur http://hts-engine.sourceforge.net/
Si vous développez ʻopen_jtalk-1.09.tar.gz vers
c: \ temp \ open_jtalk-1.09, alors
hts_engine_API-1.10.tar.gz est
c: \ temp \ open_jtalk-1.09 \ hts_engine_API- L'extension à 1.10` réduira les problèmes lors de la compilation.
Lancez l'outil de commande Visual Studio. Tapez «nmake» pour vous assurer que cela fonctionne.
Commencez par compiler à partir de 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
S'il se compile correctement, un fichier sera créé dans c: \ hts_engine_API
.
Ensuite, compilez open_jtalk.
cmd
cd c:\temp\open_jtalk-1.09
nmake /f Makefile.mak
nmake /f Makefile.mak install
Lorsque la chaîne de caractères pour convertir le dictionnaire est affichée vers la fin, les caractères sont déformés Je suis curieux, mais si vous êtes inquiet, Open JTalk a un dictionnaire prédéfini, donc Vous pouvez également l'utiliser.
Cela générera c: \ open_jtalk \ bin \ open_jtalk.exe
.
Chez MMDAgent https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.6/ Téléchargez MMDAgent_Example-1.6.zip depuis et copiez Voice / mei / *. Htvoice dans c: \ open_jtalk \ bin .
En supposant qu'un fichier avec une entrée japonaise a été créé en tant que input.txt dans c: \ open_jtalk \ bin
cmd
c:\open\jtalk\bin
open_jtalk -m mei_normal.htsvoice -x ../dic -ow output.wav input.txt
J'essaierai d'exécuter. Maintenant, si output.wav est créé dans le même dossier, Double-cliquez depuis l'Explorateur pour voir s'il joue.
Dans ubuntu, j'ai utilisé la commande aplay pour lire le fichier. Sous Windows Utilisez le module Winsound. De plus, étant donné que la génération du dictionnaire dans cette compilation sous Windows était shift-jis, il est nécessaire de convertir le codage du codage interne de python lors du passage à stdin.
Ci-dessous, enregistrez l'exemple de programme sous jtalk.py dans 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 mois%jour de s,%s temps%s minutes%s secondes' % (d.month, d.day, d.hour, d.minute, d.second)
print(text)
jtalk(text)
if __name__ == '__main__':
say_datetime()
Faites ceci. J'ai installé anaconda python, donc
cmd
python jtalk.py
Ensuite, énoncez la date et l'heure actuelles.
jtalk.py
est enregistré dans le codage utf-8.
Lors de l'exécution de python à partir de l'invite de commande, la chaîne de caractères japonais est toujours Shift-JIS ou n'est pas unifiée.
Par conséquent, lors de la saisie du japonais, ajoutez ʻu "Nihongo" et ʻu
pour indiquer qu'il s'agit de utf-8.
from_module_2.py
import jtalk
jtalk.jtalk(u'Je parlerai japonais')
Recommended Posts