Parlez du texte japonais avec OpenJTalk + python

Affiche la méthode sur Ubuntu et Windows. Je suis désolé que Mac n'ait pas d'environnement.

Parlez avec OpenJTalk + Python sur Ubuntu 14.04 LTS

Ouvrez la configuration JTalk

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 /.

Configuration du fichier audio

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

Lecture par Python

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

Configurer Open JTalk sous Windows

Sur Ubuntu, je pourrais l'installer en douceur en faisant ʻapt-get`, Sous Windows, vous le construisez vous-même.

Obtention du code source

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.

Compiler dans Visual Studio

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.

Obtenir des données vocales

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 .

Test d'exécution

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.

Exécutez OpenJTalk avec Python sur Windows

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.

Lors de l'utilisation en tant que module Python

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

Parlez du texte japonais avec OpenJTalk + python
OpenJTalk sur Windows10 (parler japonais avec Python depuis la construction de l'environnement)
Parler en japonais avec OpenJtalk
Parler en japonais avec OpenJtalk (lire un fichier texte)
Python: texte japonais: analyse morphologique
Analyse morphologique japonaise avec Python
GOTO en Python avec Sublime Text 3
Extraction de texte avec AWS Textract (Python3.6)
Text mining avec Python ① Analyse morphologique
Activer Python raw_input avec Sublime Text 3
Extraire le texte du pdf [python] et lire les caractères à haute voix avec Open-Jtalk
Reconnaissance vocale en anglais avec python [speech to text]
Générer des données de test japonais avec Python Faker
Faire en sorte que Raspberry Pi parle japonais en utilisant OpenJtalk
Remarques sur la réalisation de l'OCR japonais avec Python
Extraire du texte japonais d'un PDF avec PDFMiner
Comment afficher le japonais python avec lolipop
[Python] Rendons matplotlib compatible avec le japonais
Comment entrer le japonais avec les malédictions Python
Text mining avec Python ② Visualisation avec Word Cloud
Lire des caractères dans des images avec Python OCR
Statistiques avec python
Python avec Go
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Japonais avec matplotlib
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Extraction de texte avec l'API GCP Cloud Vision (Python3.6)
Essayez-le avec JupyterLab en Python japonais Word Cloud.
Parler en japonais avec gTTS (lire un fichier texte)
Créer un environnement de construction python3 avec Sublime Text3
Gérer les fichiers zip avec des noms de fichiers japonais dans Python 3
Créer une image avec des caractères avec python (japonais)
Extraire le zip avec Python (prend en charge les noms de fichiers japonais)
[Python] Comment gérer les caractères japonais avec openCV
Texte de cluster en Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Grattage en Python (préparation)
Text mining avec Python ① Analyse morphologique (re: version Linux)
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Communication série avec python
Apprendre Python avec ChemTHEATER 05-1