[PYTHON] Utilisez raspberryPi et Julius (reconnaissance vocale). ④ L Chika

Article associé

Utilisez raspberryPi et julus (reconnaissance vocale). ① Mike Utilisez julius (reconnaissance vocale) avec raspberryPi. ② Installation Utilisez Raspberry Pi et Julius (reconnaissance vocale). ③ Création du dictionnaire Utilisez raspberryPi et Julius (reconnaissance vocale). ④ L Chika Utilisez raspberryPi et Julius (reconnaissance vocale). ⑤i2c Character Display Edition

Quoi utiliser

raspberryPi 3B+ Microphone USB LED Résistance 220Ω Deux fils de liaison (mâle-femelle)

Essayez d'exécuter Julius en mode module

Accédez au répertoire dans lequel vous souhaitez l'enregistrer et préparez le code pour la communication socket avec python.

$ sudo vim testnet001.py

testnet001.py



import socket
import time

HOST = '127.0.0.1'   #Adresse IP du serveur Julius
PORT = 10500         #port d'écoute du serveur julius
DATESIZE = 1024     #Nombre d'octets de données reçus

class Julius:

    def __init__(self):

        self.sock = None

    def run(self):

        #Connectez-vous au serveur Julius avec communication par socket
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as self.sock:
            self.sock.connect((HOST, PORT))

            strTemp = "" #Variables qui stockent les mots prononcés
            fin_flag = False #Drapeau de fin d'histoire

            while True:

                #Recevoir les données du serveur Julius
                data = self.sock.recv(DATESIZE).decode('utf-8')

                for line in data.split('\n'):
                    #À partir des données reçues<WORD>Extrayez les mots écrits après et stockez-les dans une variable.
                    # <WORD>Après, les mots prononcés sont répertoriés.
                    index = line.find('WORD="')
                    if index != -1:
                        #Stocker les mots prononcés dans strTemp
                        strTemp = strTemp + line[index+6:line.find('"',index+6)]
                        
                    #Pour les données reçues</RECOGOUT>'Si tel est le cas, l'histoire se termine ⇒ Réglez le drapeau sur True
                    if '</RECOGOUT>' in line:
                        fin_flag = True

                #Exécuter une instruction d'impression pour chaque mot prononcé
                if fin_flag == True:
                    if 'Je vous remercie' in strTemp:
                        print("Je vous en prie")
                    elif 'Bonjour' in strTemp:
                        print("Bonsoir")
                    else:
                        print("Mots parlés:" + strTemp)
                    
                    fin_flag = False
                    strTemp = ""

if __name__ == "__main__":

    julius = Julius()
    julius.run()

Quittez l'éditeur après l'avoir créé. Appelez votre propre dictionnaire en mode module.

$ cd
$ julius -C ~/julius/julius-4.6/julius-kit/dictation-kit-4.5/am-gmm.jconf -nostrip -gram ~/julius/dict/test -input mic -module

image.png Julius attend en mode module, alors laissez-le tel quel et lancez un autre terminal.

$répertoire de destination du code Python cd
$ sudo python3 testnet001.py

image.png

Si vous parlez et répondez, la communication avec le socket est terminée.

Faire briller la LED coincée dans la broche 18 ### Arrangement d'épingles à tarte Razz (j'ai emprunté une image facile à comprendre) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/ad493a34-ceea-203e-0565-72bcf136d1a4.png)

Si vous vérifiez le câblage des LED, l'article de quelqu'un sortira, alors omettez-le. La broche utilise GPIO18.

testnet002.py


import RPi.GPIO as GPIO
import time
import socket
import string


def main():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(18, GPIO.OUT)
    for i in range(5):
        GPIO.output(18, True)
        time.sleep(0.1)
        GPIO.output(18, False)
        time.sleep(0.1)
        GPIO.output(18, GPIO.LOW)

HOST = '127.0.0.1'   #Adresse IP du serveur Julius
PORT = 10500         #port d'écoute du serveur julius
DATESIZE = 1024     #Nombre d'octets de données reçus

class Julius:

    def __init__(self):

        self.sock = None

    def run(self):

        #Connectez-vous au serveur Julius avec communication par socket
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as self.sock:
            self.sock.connect((HOST, PORT))

            strTemp = "" #Variables qui stockent les mots prononcés
            fin_flag = False #Drapeau de fin d'histoire

            while True:

                #Recevoir les données du serveur Julius
                data = self.sock.recv(DATESIZE).decode('utf-8')

                for line in data.split('\n'):
                    #À partir des données reçues<WORD>Extrayez les mots écrits après et stockez-les dans une variable.
                    # <WORD>Après, les mots prononcés sont répertoriés.
                    index = line.find('WORD="')
                    if index != -1:
                        #Stocker les mots prononcés dans strTemp
                        strTemp = strTemp + line[index+6:line.find('"',index+6)]
                        
                    #Pour les données reçues</RECOGOUT>'Si tel est le cas, l'histoire se termine ⇒ Réglez le drapeau sur True
                    if '</RECOGOUT>' in line:
                        fin_flag = True

                #Exécuter une instruction d'impression pour chaque mot prononcé
                if fin_flag == True:
                    if 'Je vous remercie' in strTemp:
                        print("Je vous en prie")
                        main()
                    elif 'Bonjour' in strTemp:
                        print("Bonsoir")
                    else:
                        print("Mots parlés:" + strTemp)
                    
                    fin_flag = False
                    strTemp = ""

if __name__ == "__main__":

    julius = Julius()
    julius.run()


Il s'allume lorsqu'il est appelé en mode module et le code ci-dessus est exécuté dans un autre terminal.

L Chika complété par la reconnaissance vocale

J'ai pu exécuter Julius en mode module. Ensuite, reconnaissez les mots et accédez à l'édition d'affichage i2c. Utilisez raspberryPi et Julius (reconnaissance vocale). ⑤i2c Character Display Edition

Référence [Démarrez julius en mode module et obtenez les mots prononcés en python](https://www.raspberrypirulo.net/entry/julius-python) [Faites fonctionner l'appareil photo comme un haut-parleur intelligent avec Raspberry Pi x Julius et Python](https://www.pc-koubou.jp/magazine/20637) [How to resolve that error“:TypeError: can only concatenate str (not ”bytes“) to str”](https://stackoverflow.com/questions/61962436/how-to-resolve-that-errortypeerror-can-only-concatenate-str-not-bytes-to) [Essayez d'utiliser la reconnaissance vocale avec Razzpie](https://ueqareer.net/2463)

Recommended Posts

Utilisez raspberryPi et Julius (reconnaissance vocale). ④ L Chika
Utilisez raspberryPi et julius (reconnaissance vocale). ① Mike
Utilisez raspberryPi et Julius (reconnaissance vocale). ⑤i2c édition d'affichage des caractères
Utilisez raspberryPi et Julius (reconnaissance vocale). ③ Création de dictionnaire
RaspberryPi L Chika avec Python et C #
Synthèse vocale et reconnaissance vocale par Microsoft Project Oxford
Installation de Docker sur Raspberry Pi et L Chika