Raspberry pi + python + wit.ai – rozpoznawanie tekstu… i mowy

Jestem wyszukiwaczem/poszukiwaczem/researcherem jak zwał tak zwał.

Szukałem informacji na temat rozpoznawania mowy w raspberry Pi

Pierwsze na co się natknąłem to system rozpoznawania mowy googli (zgrywamy plik na maline wysylamy na serwer googli ktory to przetwarza i zwraca nam tekst który powiedzieliśmy)

Kolejny był offlinowy cmu sphinx który jest przeznaczony na inne rynki niż nasz ojczysty.. walczyłem parę ładnych dni żeby go przystosować do naszej mowy – klęska.

W między czasie trafiłem na ciekawy projekt https://wit.ai ale do końca go nie zrozumiałem i skupiłem się na szukaniu innych, mniej lub bardziej ciekawych programów. Po paru tygodniach przeczytałem że Facebook kupił całego WIT’a więc nie może być tak źle i zacząłem działać.

wit – jest to system rozpoznawania mowy i pisma. Po  zrobieniu małego konfigu na stronie i nauczenie całego systemu tego co mam na myśli i co chce żeby wit robił, system działa i jestem z niego zadowolony.

Opisze szybką instalacje i mniej więcej wykorzystanie mojej aplikacji na malinie albo czym kolwiek z pythonem (skupiam się na raspberry pi 2)

Rejestracji i konfiguracji całości na stronie wit’a nie opisze (może w przyszłości).

W manualu na stronie https://wit.ai/docs/python/1.0.0/quickstart jest dużo przykładów jak co z czym zrobić żeby działało, ja niestety miałem parę problemów (błachych) ale jednak były.

potrzebne będą nam pakiety

 

sudo apt-get install python-dev python-pip libsox-dev libffi-dev
sudo pip install pip --upgrade
sudo pip install 'requests[security]'

Teraz tworzymy plik. WAŻNE !!! Plik nie może nazwywać się wit.py więc u mnie jest to witai.py

a jego zawartość to

import wit
import json
import sys
reload(sys)
sys.setdefaultencoding('UTF8')
wit.init()
response = wit.text_query(sys.argv[1], "ZDHR3SDICNCWG3LRLDV3SPE37L5V7YC5")
z = json.loads(format(response))
wit.close()

wit1

a działa To tak :

wit2

python witai.py „kim był Jan Matejko”

Wysyłamy tekst do wit’a i otrzymujemy odpowiedz w json

[wit] received response: {„_text”:”kim był Jan Matejko”,”msg_id”:”e091c02d-02d1-4502-a7cc-3e69cceb386a”,”outcomes”:[{„_text”:”kim był Jan Matejko”,”confidence”:0.994,”entities”:{},”intent”:”szukaj”}]}

dla nas ważny jest intent – czyli nasz zamiar( nie wiem jak dokładnie to przetłumaczyć)

intent – jest zaprogramowaną opcja dzięki temu możemy zrobić wyszukiwarkę

intent

np:

 

import wit
import json
import sys
import os
import requests
reload(sys)
sys.setdefaultencoding('UTF8')

wit.init()
response = wit.text_query(sys.argv[1], "ZDHR3SDICNCWG3LRLDV3SPE37L5V7YC5")
z = json.loads(format(response))
wit.close()
intent = z["outcomes"][0]["intent"]
dane = z["outcomes"][0]["_text"]
print intent+dane
if intent == "szukaj":
r = requests.get('http://searx.me/?format=json&q=%21go%20' + dane)
z = r.json()
w1 = z["results"][0]["content"]
print w1

wit3

jak widać na powyższym przykładzie. Wit idealnie rozpoznał czy czegoś szukam w połączeniu z searx.me został podany pierwszy wynik z tej wyszukiwarki :-).Rozpoznał że chce usłyszeć kawał – sentencje więc nie wyszukiwał .

Miłej zabawy z IF’ami 🙂

Klucz który jest podany w przykładzie jest publiczny 🙂

i na koniec mała niespodzianka 🙂 jeśli chcecie zobaczyć jak rozpoznaje głos

Wejdźcie na strone

https://labs.wit.ai/speech/index.html

w polu tekstowym wpiszcie klucz

ZDHR3SDICNCWG3LRLDV3SPE37L5V7YC5

Nie zapomnijcie o naciśnięciu save

No i można już naciskać na szary mikrofon, mikrofon zmieni kolor na czerwony w tym czasie należy coś powiedzieć do niego. Jeśli już nie chcemy mówić naciskamy na czerowny mikrofon i czekamy chwile. W okienku powinien nam się pojawić wynik.

Powodzenia!

Dodaj komentarz