[PYTHON] Verwenden Sie raspberryPi und Julius (Spracherkennung). ④ L Chika

In Verbindung stehender Artikel

Verwenden Sie raspberryPi und julus (Spracherkennung). ① Mike Verwenden Sie julius (Spracherkennung) mit raspberryPi. ② Installation Verwenden Sie Himbeer-Pi und Julius (Spracherkennung). ③ Wörterbucherstellung Verwenden Sie raspberryPi und Julius (Spracherkennung). ④ L Chika Verwenden Sie raspberryPi und Julius (Spracherkennung). ⑤i2c Character Display Edition

Was zu verwenden

raspberryPi 3B+ USB-Mikrofon LED Widerstand 220Ω Zwei Überbrückungsdrähte (männlich-weiblich)

Versuchen Sie, Julius im Modulmodus auszuführen

Wechseln Sie in das Verzeichnis, in dem Sie es speichern möchten, und bereiten Sie den Code für die Socket-Kommunikation mit Python vor.

$ sudo vim testnet001.py

testnet001.py



import socket
import time

HOST = '127.0.0.1'   #IP-Adresse des Julius-Servers
PORT = 10500         #Listening-Port des Julius-Servers
DATESIZE = 1024     #Anzahl der empfangenen Datenbytes

class Julius:

    def __init__(self):

        self.sock = None

    def run(self):

        #Stellen Sie über Socket-Kommunikation eine Verbindung zum Julius-Server her
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as self.sock:
            self.sock.connect((HOST, PORT))

            strTemp = "" #Variablen, die gesprochene Wörter speichern
            fin_flag = False #Ende der Geschichte Flagge

            while True:

                #Empfangen Sie Daten vom Julius-Server
                data = self.sock.recv(DATESIZE).decode('utf-8')

                for line in data.split('\n'):
                    #Aus den empfangenen Daten<WORD>Extrahieren Sie die nachgeschriebenen Wörter und speichern Sie sie in einer Variablen.
                    # <WORD>Danach werden die gesprochenen Wörter aufgelistet.
                    index = line.find('WORD="')
                    if index != -1:
                        #Speichern Sie die in strTemp gesprochenen Wörter
                        strTemp = strTemp + line[index+6:line.find('"',index+6)]
                        
                    #Für empfangene Daten</RECOGOUT>'Wenn ja, endet die Geschichte. ⇒ Setzen Sie das Flag auf True
                    if '</RECOGOUT>' in line:
                        fin_flag = True

                #Führen Sie für jedes gesprochene Wort eine Druckanweisung aus
                if fin_flag == True:
                    if 'Vielen Dank' in strTemp:
                        print("Bitte schön")
                    elif 'Hallo' in strTemp:
                        print("Guten Abend")
                    else:
                        print("Gesprochene Worte:" + strTemp)
                    
                    fin_flag = False
                    strTemp = ""

if __name__ == "__main__":

    julius = Julius()
    julius.run()

Beenden Sie den Editor, nachdem Sie ihn erstellt haben. Rufen Sie im Modulmodus Ihr eigenes Wörterbuch auf.

$ 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 wartet im Modulmodus. Lassen Sie es also unverändert und starten Sie ein anderes Terminal.

$cd Python-Code-Zielverzeichnis
$ sudo python3 testnet001.py

image.png

Wenn Sie sprechen und antworten, ist die Socket-Kommunikation abgeschlossen.

Lassen Sie die LED in Pin 18 leuchten ### Razpai-Pin-Anordnung (Ich habe mir ein leicht verständliches Bild geliehen) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504329/ad493a34-ceea-203e-0565-72bcf136d1a4.png)

Wenn Sie die LED-Verkabelung überprüfen, wird ein Artikel von jemandem herauskommen. Lassen Sie ihn daher weg. Der Pin verwendet 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'   #IP-Adresse des Julius-Servers
PORT = 10500         #Listening-Port des Julius-Servers
DATESIZE = 1024     #Anzahl der empfangenen Datenbytes

class Julius:

    def __init__(self):

        self.sock = None

    def run(self):

        #Stellen Sie über Socket-Kommunikation eine Verbindung zum Julius-Server her
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as self.sock:
            self.sock.connect((HOST, PORT))

            strTemp = "" #Variablen, die gesprochene Wörter speichern
            fin_flag = False #Ende der Geschichte Flagge

            while True:

                #Empfangen Sie Daten vom Julius-Server
                data = self.sock.recv(DATESIZE).decode('utf-8')

                for line in data.split('\n'):
                    #Aus den empfangenen Daten<WORD>Extrahieren Sie die nachgeschriebenen Wörter und speichern Sie sie in einer Variablen.
                    # <WORD>Danach werden die gesprochenen Wörter aufgelistet.
                    index = line.find('WORD="')
                    if index != -1:
                        #Speichern Sie die in strTemp gesprochenen Wörter
                        strTemp = strTemp + line[index+6:line.find('"',index+6)]
                        
                    #Für empfangene Daten</RECOGOUT>'Wenn ja, endet die Geschichte. ⇒ Setzen Sie das Flag auf True
                    if '</RECOGOUT>' in line:
                        fin_flag = True

                #Führen Sie für jedes gesprochene Wort eine Druckanweisung aus
                if fin_flag == True:
                    if 'Vielen Dank' in strTemp:
                        print("Bitte schön")
                        main()
                    elif 'Hallo' in strTemp:
                        print("Guten Abend")
                    else:
                        print("Gesprochene Worte:" + strTemp)
                    
                    fin_flag = False
                    strTemp = ""

if __name__ == "__main__":

    julius = Julius()
    julius.run()


Sie leuchtet, wenn sie im Modulmodus aufgerufen wird, und der obige Code wird in einem anderen Terminal ausgeführt.

L Chika durch Spracherkennung vervollständigt

Ich konnte Julius im Modulmodus ausführen. Erkennen Sie als Nächstes die Wörter und rufen Sie die i2c Display Display Edition auf. Verwenden Sie raspberryPi und Julius (Spracherkennung). ⑤i2c Character Display Edition

Referenz [Starten Sie julius im Modulmodus und lassen Sie die Wörter in Python sprechen](https://www.raspberrypirulo.net/entry/julius-python) [Bedienen Sie die Kamera wie einen intelligenten Lautsprecher mit Raspberry Pi x Julius und 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) [Verwenden Sie die Spracherkennung mit Razzpie](https://ueqareer.net/2463)

Recommended Posts

Verwenden Sie raspberryPi und Julius (Spracherkennung). ④ L Chika
Verwenden Sie raspberryPi und julius (Spracherkennung). ① Mike
Verwenden Sie raspberryPi und Julius (Spracherkennung). ⑤i2c Character Display Edition
Verwenden Sie raspberryPi und Julius (Spracherkennung). ③ Wörterbucherstellung
RaspberryPi L Chika mit Python und C #
Sprachsynthese und Spracherkennung durch Microsoft Project Oxford
Installation von Docker auf Raspberry Pi und L Chika