Rozpoznawanie mowy w Python - własny Jarvis do kopii zapasowej

in #polish7 years ago

Rozpoznawanie mowy w Python - własny Jarvis do kopii zapasowej

code-1084923_1280.png

Inspiracja


Siedziałem ostatnio tworząc sobie narzędzie do automatyzacji kopiowania na wirtualny dysk moich projektów i uznałem, że fajnie byłoby zautomatyzować to jeszcze bardziej. Męczyło mnie, że po zamknięciu wszystkich programów, które używam do tworzenia mojego oprogramowania muszę odpalać kolejny, który zrobi mi kopię. Niby wysiłek nie duży, ale kiedy kończysz swoją pracę, to można powiedzieć odrywa cię od poczucia, że skończyłeś. W końcu jeszcze musisz zrobić jakiś backup. Ech... A gdyby tak rzucać na koniec pracy jedno słowo i żeby komputer sam się tym zajął?

Rozpoznawanie mowy w Python


No to zaczynamy. Google i inne mądre strony mówią, że mogę użyć "Speech Recognition". A mianowicie tego: https://github.com/Uberi/speech_recognition Tak więc tworzymy plik o dumnej nazwie jarvis.py. I piszemy taki kod, który za chwilę omówię chociaż jest bardzo prosty:

# -*- coding: utf-8 -*-
import pyaudio,os
import speech_recognition as sr
import platform
import subprocess
import sys

def mainfunction(source):
    audio = r.listen(source)
    user = r.recognize_sphinx(audio)
    print user
    if user == "secure system" or user == "security system" or user == "secure":
        os.system("python backup.py")

if __name__ == "__main__":
    neuralNetwork.init()
    r = sr.Recognizer()
    with sr.Microphone() as source:
        while 1:
            mainfunction(source)

 

Omówienie kodu


Zaczynając od góry definiujemy kodowanie pliku na utf-8 (wtedy bez problemu polskie znaczki będą działać jeśli ich użyjemy np do jakiegoś print'a). Następnie importujemy wszystkie potrzebne nam moduły. Dalej zrobiłem sobie funkcję mainfunction, która odpowiada za wszystko co się dzieje w programie. Za argument bierze źródło dźwięku, czyli nasz mikrofon. Musimy teraz rozpoznać naszą mowę. Zlecamy to naszej bibliotece, którą zaimportowaliśmy wcześniej. Dla pewności wypiszmy sobie co użytkownik powiedział. Przyda się do testowania co komputer rozpoznaje w naszych słowach. Teraz instrukcja warunkowa porównuje to co powiedzieliśmy z tym co chcemy mieć jako komendę.

W moim przypadku po wielu, ale to wielu próbach i wykrzyczanych do komputera słów, słowa "secure" i "system" były najlepiej rozpoznawalne. Niestety często zdarza się, że komputer bierze słowa zbliżone do tego co chcemy powiedzieć. Może to wynika z akcentu? Sam nie wiem. Dla przykładu kiedy mówiłem "backup" to program rozpoznawał to jako "that up". Dlatego uznałem, że słowa "secure system" będą równie odpowiednie.

Dalej uruchamiam mój program do backup'u http://blog.patys.pl/2017/03/15/automatyczny-backup-moich-projektow-google-drive-python/

Następnie tworzę funkcję główną i przekazuję jej mikrofon jako źródło dźwięku. Wszystko jest w pętli while, dzięki czemu program nasłuchuje nas nawet w tle. I w sumie to tyle.

Można też dodać sobie w harmonogramie zadań, aby program się uruchamiał wraz z systemem. Jeśli dodamy kolejne komendy możemy bardzo szybko zrobić tak, aby system dało się obsługiwać tylko za pomocą głosu.

Sort:  

Chętnie sprawdzę jak wrócę, bo może da się coś fajnego z tym zrobić (o ile umiesz to i będziemy mogli pogadać na ten temat)

Jasne, programistą pythona może nie jestem ale lubię się pobawić takimi elementami. To było o tyle fajne że po prostu mówiłem do komputera po zakończonej pracy a on robił resztę mi. Brakowało mi możliwości mówienia po Polsku. Więc wywalczyłem najlepiej brzmiącą i najlepiej rozpoznwalną wersję.

backup ciągle rozpoznawał jako that, thumb itd, więc albo ja mam naprawdę słaby akcent albo to wina rozpozawania z tego programu :)

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63914.63
ETH 2664.93
USDT 1.00
SBD 2.77