[C] [python] Lire avec AquesTalk sous Linux

Dans l'environnement Windows, vous pouvez facilement le lire avec softalk, etc., mais dans l'environnement Linux, vous ne pouvez pas l'exécuter à moins de faire de votre mieux avec wine etc. Il n'y a pas d'autre choix que d'appeler directement AquesTalk, ce que softalk appelle.

Si vous souhaitez simplement synthétiser la voix, il est plus facile d'appeler l'API de synthèse vocale de Google Translate avec gTTS. Lorsque j'essaye d'installer open-jtalk, il entre en conflit dans mon environnement, donc la solution est gênante et je ne l'ai pas essayée.

Choses à faire

Utilisez la bibliothèque AquesTalk2 à partir de code c et python pour synthétiser la voix.

Environnement d'exécution

Installez AquesTalk

Télécharger

Téléchargez la version d'évaluation depuis Download \ | Aquest Co., Ltd.. Cet article utilise AquesTalk2. L'opération avec AquesTalk et AquesTalk10 n'est pas confirmée.

De plus, dans la version d'évaluation, tous les tons de "na line, ma line" seront "nu".

Installation

Installez la bibliothèque conformément au manuel inclus dans le fichier téléchargé. Veuillez lire comme il convient la version de la bibliothèque et s'il faut utiliser lib ou lib64.

$ cd aqtk2-lnx-eva/lib64
$ cp libAquesTalk2Eva.so.2.3 /usr/lib
$ sudo ln -sf /usr/lib/libAquesTalk2Eva.so.2.3 /usr/lib/libAquesTalk2Eva.so.2
$ sudo ln -sf /usr/lib/libAquesTalk2Eva.so.2 /usr/lib/libAquesTalk2Eva.so
$ sudo /sbin/ldconfig -n /usr/lib 

Exécuter l'exemple AquesTalk

Compilez et exécutez ʻaqtk2-lnx-eva / samples / SampleTalk.c`. Vous pouvez suivre le manuel ci-joint.

Modifier l'échantillon pour correspondre à l'encodage

Puisqu'une fonction de synthèse vocale est préparée pour chaque codage, modifiez SampleTalk.c en fonction du codage tel que terminal. Ici, UTF-8 est utilisé. Si la fonction qui correspond à l'encodage n'est pas appelée, elle ne fonctionnera pas correctement.

//	unsigned char *wav = AquesTalk2_Synthe_Euc(str, 100, &size, NULL);
	unsigned char *wav = AquesTalk2_Synthe_Utf8(str, 100, &size, NULL);

compiler

Compilez avec la bibliothèque et le chemin d'en-tête spécifiés.

$ g++ -o SampleTalk samples/SampleTalk.c -lAquesTalk2Eva -Ilib64

Courir

L'exemple prend le texte de l'entrée standard et renvoie les données au format wav vers la sortie standard. Il lira "Ralentissez ** Nu **".

$ echo "Prends ton temps" | ./SampleTalk > sample.wav

Exécuter à partir de python

Chargez et exécutez la bibliothèque avec ctypes. Vous pouvez modifier la qualité de la voix en spécifiant le fichier phont joint à la version d'évaluation. S'il n'est pas spécifié, cela fonctionne par défaut. La valeur par défaut est assez facile à entendre.

from ctypes import *


def synthe_utf8(text, speed=100, file_phont=None):
    if file_phont is not None:
        with open(file_phont, 'rb') as f:
            phont = f.read()
    else:
        phont = None

    aqtk = cdll.LoadLibrary("libAquesTalk2Eva.so")
    aqtk.AquesTalk2_Synthe_Utf8.restype = POINTER(ARRAY(c_ubyte, 0))
    size=c_int(0)
    wav_p = aqtk.AquesTalk2_Synthe_Utf8(text.encode('utf-8'), speed, byref(size), phont)
    if not bool(wav_p):
        print("ERR:", size.value)
        return None
    wav_p = cast(wav_p, POINTER(ARRAY(c_ubyte, size.value)))
    wav = bytearray(wav_p.contents)
    aqtk.AquesTalk2_FreeWave(wav_p)
    return wav


if __name__ == '__main__':
    with open('./default.wav', 'wb') as f:
        wav = synthe_utf8(u"Prends ton temps", speed=100)
        f.write(wav)
    with open('./yukkuri.wav', 'wb') as f:
        wav = synthe_utf8(u"Prends ton temps", speed=100, file_phont='aqtk2-lnx-eva/phont/aq_yukkuri.phont')
        f.write(wav)

** Nu **

Dans la version d'évaluation, "na line, ma line" est "nu", mais il semble que vous ayez besoin d'une licence pour la lire correctement. Pour un usage personnel, vous pouvez obtenir une licence de développement pour moins de 2000 yens. (Au 9 juin 2018) Voir ci-dessous pour des détails tels que les règles de distribution. Licence d'utilisation personnelle \ | Aquest Co., Ltd.

Recommended Posts

[C] [python] Lire avec AquesTalk sous Linux
Assembleur X86 sous Linux (lien avec C)
Lire csv avec des pandas python
Commande Yum pour accéder à MySQL avec Python 3 sous Linux
Faire un point d'arrêt sur la couche c avec python
Lire la tension du noyau sous Linux
Lire des données json avec python
Tester Python avec Miniconda dans un environnement OS X et Linux avec travis-ci
Installez Python Pillow sur Amazon Linux
Résoudre ABC163 A ~ C avec Python
Appeler C depuis Python avec DragonFFI
Créer Awaitable avec l'API Python / C
Résoudre ABC168 A ~ C avec Python
Résolu AtCoder ABC 114 C-755 avec Python3
Résoudre ABC162 A ~ C avec Python
Lire des fichiers en parallèle avec Python
Notes sur l'utilisation de rstrip avec python.
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Premiers pas avec Python 3.8 sous Windows
Présentation de l'environnement Python 3.5.2 sur Amazon Linux
Charger fbx depuis python avec cinema4d
python> os.path.join ('data', 'checkpoint')> 'data / checkpoint' sous linux
Appeler C / C ++ depuis Python sur Mac
[Memo] Tweet sur Twitter avec Python
Énumération de fichiers japonais avec le système Python2 sous Windows (contre-mesure du problème 5C)
Exécutez le servo avec Python sur ESP32 (Windows)
Exécuter du code Python sur C ++ (en utilisant Boost.Python)
Comment lire pydoc sur l'interpréteur python
Lire le fichier CSV avec python (Télécharger et analyser le fichier CSV)
Trouver des fichiers comme Linux Find en Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Carte des informations de location sur une carte avec python
Chase des applications actives sur Mac avec Python
Remarques sur la réalisation de l'OCR japonais avec Python
Lisons le fichier RINEX avec Python ①
Si scipy est python 2.7.8, l'installation de pip trébuche
Télécharger des fichiers sur le Web avec Python
Créer un environnement Python avec Anaconda sur Mac
[Python] Lire des images avec OpenCV (pour les débutants)
[Automation] Lire des documents Word avec Python
Utilisation des fonctions C ++ de python avec pybind11
Installation de PIL avec Python 3.x sur macOS
Installez Python 3.8, Pip 3.8 sur EC2 (Amazon Linux 2)
Exécutez Python en C ++ sur Visual Studio 2017
Lire des caractères dans des images avec Python OCR
RaspberryPi L Chika avec Python et C #
[C, C ++, Python, JavaScript] L Chika avec Edison
[Automation] Lire le courrier (fichier msg) avec Python
Exécutez Linux avec l'architecture ARM à l'aide de QEMU
Communiquez avec les périphériques I2C sous Linux C
Travailler avec le GPS en Python pour Raspberry Pi 3
Mettre la liaison MeCab pour Python sur Windows, Mac et Linux avec pip
Exécuter un lot de Python 2.7 avec nohup sur Amazon Linux AMI sur EC2
Lisez le fichier avec python et supprimez les sauts de ligne [Notes sur la lecture du fichier]