1 (edytowany przez wabikboy 2012-07-03 09:24:15)

Temat: Sterowanie głosowe

Witam w kolejnym HOWTO serii jak ułatwić sobie życie smile

Jak zwykle podziękowania dla Cezarego smile

Tym razem opiszę sposób jak dodać sobie sterowanie głosem w OpenWRT
dzięki wykorzystaniu usługi w Google

A więc co potrzebujemy?

- extroot
- zainstalowana karta dźwiękowa ze sterownikiem alsa polecam tę
- mikrofon
- dostęp do internetu smile

Na początek pobieramy:

ffmpeg

opkg update
opkg install ffmpeg
opkg install libffmpeg-full

i jeśli nie mamy pełnej wersji wget to pobieramy gdyż domyślna może nie mieć opcji --post-file

opkg install wget-nossl

teraz tworzymy plik np: voicecommand.sh

touch /voicecommand.sh
chmod 755 /voicecommand.sh

z taką zawartością

#!/bin/sh
 
arecord -f S16_LE -d 2 -r 8000 /message.wav        # -d x ustawić długość nagrania
ffmpeg -i /message.wav -ar 16000 /message.flac     
wget -q -U "Mozilla/5.0" --post-file /message.flac --header="Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=pl-pl&client=chromium" > /message.ret
tekst=$(cat /message.ret | sed 's/.*utterance":"//' | sed 's/","confidence.*//')
echo "$tekst" > /wynik.txt  # można zostawić aby sprawdzić co nam zwruciło
rm /message.wav
rm /message.flac
rm /message.ret

if [ "$tekst" == "słowo" ]; then          # za "słowo" podstawić wyraz po którym ma się wykonać polecenie
     "komenda_do_wykonania"
fi

Prędkość wykonania komendy zależy od długości nagrania i prędkości łącza, więc najlepiej ustawić  na 2 - 3 sek.
co w zupełności wystarcza na wypowiedzenie komendy.

można wykorzystać pilota ( instalacja ) do wykonania skryptu i dodać do samego skryptu linijkę odtwarzająca sygnał dźwiękowy po którym rozpocznie się nagranie próbki.

pozdrawiam
wabikboy

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

2

Odp: Sterowanie głosowe

1. W jakim pakiecie znajdę "arecord"?
2. libffmpeg-full już nie jest dostępny?

3

Odp: Sterowanie głosowe

1. alsa-utils
2. jest normalnie w repo openwrt.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

4

Odp: Sterowanie głosowe

Cezary czy w openwrt dało by radę skompilować program flac ?

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

5

Odp: Sterowanie głosowe

Fizycznie w pakietu wywalone jest budowanie binarki flac z jakiegoś powodu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: Sterowanie głosowe

Jak działa to sterowanie głosowe.

Czy najpierw tworzę bazę nagrań - głosów, i po wydaniu polecenia głosowego jest ono weryfikowane i w przypadku zgodności wykonywane, czy może bez względu na to kto wyda polecenie głosowe, zostanie ono wykonane ?

Krynio

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

7 (edytowany przez kamillo 2014-02-23 21:04:08)

Odp: Sterowanie głosowe

masz bazę słów/komend zapisanych w systemie jako tekst i skrpyt używając aplikacji google rozpoznaje Twój głos i sprawdza czy takie komendy są w twoim systemie. Do działania sterowania niezbędne połączenie z internetem oczywiście smile

8 (edytowany przez krynio 2014-02-23 21:16:36)

Odp: Sterowanie głosowe

Dzięki, a jak to działa w praktyce, trzeba mówić do mikrofonu, a może całość jest na tyle czuła że wystarczy mówić w obrębie mikrofonu, załóżmy że w pomieszczeniu gdzie jest mikrofon.

Jak wpływają zakłócenia w postaci, np. z normalną głośnością telewizor gra, polecenia głosowe działają ?

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

9

Odp: Sterowanie głosowe

Działają. "... wiesz, wczoraj była taka impreza że kompletny reboot zaliczyłem" w tv, no i router co robi?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: Sterowanie głosowe

Cezary napisał/a:

Działają. "... wiesz, wczoraj była taka impreza że kompletny reboot zaliczyłem" w tv, no i router co robi?

Imprezę?

WYPRZEDAJO SPRZĘT WIFI!
Modyfikacja U-Boot dla routerów (obrazy)

Naprawię routery, wymienię RAM i FLASH na większy

11

Odp: Sterowanie głosowe

hehe tak mogłem mówić gdzieś 18 lat temu smile, a swoją drogą chcę się upewnić:

wykonywane będą tylko polecenia głosowe wcześniej zdefiniowane np. przeze mnie słowo "reboot". Jeśli ktoś obcy wyda polecenie głosowe "reboot" to nie będzie ono wykonane ?

Tak rozglądam się za kartą dźwiękową poleconą w tym temacie i widzę że jest ich trochę, różnią się firmą i nieco napisami, która z nich będzie dobra, zgodna z tym poradnikiem ?

a) http://www.hurt.com.pl/karta-muzyczna-a … wgod0AkABg
b) http://www.electro.pl/Karta_dzwiekowa_D … wgodL3UA1g
c) http://www.conrad.pl/Zewn%C4%99trzna-ka … ;pi=871260

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

12

Odp: Sterowanie głosowe

krynio napisał/a:

wykonywane będą tylko polecenia głosowe wcześniej zdefiniowane np. przeze mnie słowo "reboot". Jeśli ktoś obcy wyda polecenie głosowe "reboot" to nie będzie ono wykonane ?

Będzie...

WYPRZEDAJO SPRZĘT WIFI!
Modyfikacja U-Boot dla routerów (obrazy)

Naprawię routery, wymienię RAM i FLASH na większy

13

Odp: Sterowanie głosowe

Ja kupiłem tego "najtańszego szmelca" z allegro za 3zł i nie poczułem różnicy w dźwięku. Spięte mam to ze wzmacniaczem Audiona i gra naprawdę fajnie.

14

Odp: Sterowanie głosowe

@krynio wytłumaczę Ci to inaczej bo widzę do końca nie rozumiesz idei. Sterowanie głosowe działa dokładnie tak samo jak wyszukiwanie głosowe w google, tylko tu masz wykonywanie jakiejś akcji a tam po prostu google coś Ci znajdzie. Przyjżyj się skryptowi voicecommand.sh w pierwszym poście, tam widać że używa on aplikacji google. Włącz sobie google wyszukiwanie głosowe i potestuj czy działa z Twoim głosem czy z głosami wszystkich domowników big_smile szczerze to różnie z tym rozpoznawaniem głosu bywa bo możesz mieć problemy np z rozpoznawaniem polskich znaków.

15

Odp: Sterowanie głosowe

@kamillo, dziękuję, teraz nie mam wątpliwości.

Szkoda że głos nie jest weryfikowany i wykonywane są polecenia tylko "właściciela", wtedy taka usługa miałaby bardziej racjonalne zastosowanie np. do sterowania urządzeniami w połączeniu USB Relay.

Krynio

TP-Link TL-WDR4300 Mod, CPU 700MHz, Flash 16 MB, Gargoyle 1.5.11.4, extroot + dysk zewnętrzny Samsung (S2), kamerka MS LifeCam HD-5000
TP-Link TL-WR1043ND Mod, RAM 64 MB, chłodzenie pasywne, Gargoyle 1.5.10.14, extroot, kamerka Logitech HD Webcam C270

16 (edytowany przez wabikboy 2014-02-24 08:16:11)

Odp: Sterowanie głosowe

Ostatnio trochę przerabiałem ten skrypt  aby reagował na słowo klucz czyli np. "komputer która godzina" lub " komputer podaj datę" gdzie słowem klucz jest "komputer". Skrypt działa sobie w tle cały czas, (nie na routerze)  aby działało bardziej dokładnie to wstawiłem kilka podobnych poleceń np: podaj datę, podaj date, podaj data, gdyż czasem przetłumaczy źle jedną literę i nie zadziała polecenie, pozwala to trochę swobodniej mówić a nie sztywno tak aby dobrze się nagrało.
@krynio w obrębie mikrofonu wystarczy mówić jeśli masz dobry mikrofon i ustawienia czułości,

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

17

Odp: Sterowanie głosowe

Zrób  żeby reagował na "ok google" i konkurencję glass zrobisz...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

18

Odp: Sterowanie głosowe

Czesc, wabikboy - czy mozesz pokazac ten nowy skrypt reagujacy na slowo klucz ?:D
bede bardzo wdzieczny.

19 (edytowany przez wabikboy 2014-06-20 14:58:56)

Odp: Sterowanie głosowe

Proszę bardzo:

#!/bin/bash

dir=$(dirname $0)
flaga=0
tirec=2

continue_ask() {

arecord -D plughw:1,0 -c 1 -f S16_LE -r 16000 -d "$tirec" -q /fff.wav
flac /fff.wav -f --best --sample-rate 16000 -o ./message.flac 1>/dev/null 2>/dev/null


tekst=$(wget -O - -o /dev/null --post-file ./message.flac --header="Content-Type: audio/x-flac; rate=16000" http://www.google.com/speech-api/v1/recognize?lang=pl | sed -e 's/[{}]/''/g'| awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]; exit }' | awk -F: 'NR==3 { print $3; exit }' | sed 's/"//g')


if [ "$flaga" = "0" ] ; then
    if [ "$tekst" = "komputer" ] ; then         
        flaga=1
        tirec=3
       echo "słucham"
        continue_ask
    else
        flaga=0
        tirec=2
        continue_ask
    fi
else
    if [ -n "$tekst" ]; then
        flaga=0
        tirec=2
        sprawdz
    else
        tirec=3
        continue_ask
    fi
fi
}

sprawdz() {

#.... polecenia do wykonania odczytane ze zmiennej  $tekst

# np:

case $tekst in
"która godzina") date +%T ;;
esac


continue_ask
}

continue_ask
TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile