Recunoastere vocala/Speech Recognition cu Cubieboard

For an English version please click here.

Am achizitionat in urma cu ceva timp niste placute Cubieboard (doua Cubieboard 1 si una Cubieboard 2). Una dintre ele ruleaza o versiune de Fedora de cateva luni si face ceva la o anumita ora in fiecare zi, scutindu-ma de o sarcina plictisitoare (pe care o puteam automatiza si altfel, e drept). Cu celelalte doua am incercat diverse lucruri, nimic insa deosebit de interesant sau cu rezultate spectaculoase.

Motivat de postarea de aici, care prezinta o metoda de a implementa recunoasterea vocala pe Raspberry Pi, m-am gandit sa incerc ceva similar pe Cubieboard.
Cubieboard

Ca si in articolul mentionat, am folosit un webcam (foarte ieftin, luat de la Carrefour cu 40 de lei) cu microfon integrat. Se pare ca pe eMag as fi gasit chiar si mai ieftin, insa modelul pe care il am (CNR-FWC113) functioneaza perfect. Trebuie sa mentionez pentru exactitate ca placuta Cubieboard are o intrare de tip line-in, care probabil poate fi folosita, impreuna cu un preamplificator si un microfon obisnuit.

Din (restransa) mea experienta cu Cubieboard, am ajuns la concluzia ca e foarte important sistemul de operare folosit. Exista o multitudine de imagini, dintre cele mai diverse, de la distributii comune pana le unele mai exotice, insa multe dintre ele nu sunt destul de mature pentru a fi folosite fara probleme. Pentru acest proiect am folosit cu succes Cubian. Imaginea Cubian pentru SD-card poate fi descarcata aici: http://cubian.org/downloads/. Am folosit ultima versiune disponibila, care in momentul in care scriu aceste randuri este Cubian-base-r7-arm-a10.img.7z.

Imaginea se instaleaza pe SD-card la fel ca orice alta imagine pentru Cubieboard sau Raspberry Pi. Pasii care trebuie urmati sunt disponibili aici: https://github.com/cubieplayer/cubian/wiki/Install-Cubian. Personal am folosit Win32 Disk Imager in loc de Image Writer, dar presupun ca Image Writer este la fel de bun.

Pentru aceasta distributie, portul SSH este 36000, numele de utilizator cubie si parola cubie.

Puteti verifica daca webcam-ul este recunoscut folosind comanda:

arecord -L [enter]

Ar trebui sa obtineti ceva similar cu:

null
    Discard all samples (playback) or generate zero samples (capture)
default:CARD=sunxicodec
    sunxi-CODEC, sunxi PCM
    Default Audio Device
sysdefault:CARD=sunxicodec
    sunxi-CODEC, sunxi PCM
    Default Audio Device
default:CARD=Camera
    USB 2.0 Camera, USB Audio
    Default Audio Device
sysdefault:CARD=Camera
    USB 2.0 Camera, USB Audio
    Default Audio Device
front:CARD=Camera,DEV=0
    USB 2.0 Camera, USB Audio
    Front speakers
surround40:CARD=Camera,DEV=0
    USB 2.0 Camera, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Camera,DEV=0
    USB 2.0 Camera, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Camera,DEV=0
    USB 2.0 Camera, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Camera,DEV=0
    USB 2.0 Camera, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Camera,DEV=0
    USB 2.0 Camera, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Camera,DEV=0
    USB 2.0 Camera, USB Audio
    IEC958 (S/PDIF) Digital Audio Output

La fel ca in tutorialul pentru Raspberry Pi, am folosit functiile de recunoastere vocala puse la dispozitie de Google. Mai intai e nevoie sa instalam ffmpeg folosind:

sudo apt-get install ffmpeg [enter]

Scriptul folosit pe Raspberry Pi functioneaza fara modificari pe Cubieboard:

#!/bin/bash
 
echo "Recording... Press Ctrl+C to Stop."
arecord -D "plughw:1,0" -q -f cd -t wav | ffmpeg -loglevel panic -y -i - -ar 16000 -acodec flac file.flac  > /dev/null 2>&1
echo "Processing..."
wget -q -U "Mozilla/5.0" --post-file file.flac --header "Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=ro-ro&client=chromium" | cut -d\" -$
echo -n "You Said: "
cat stt.txt
rm file.flac  > /dev/null 2>&1

sursa script — am modificat numai parametrul lang din en-us in ro-ro

Script-ul trebuie salvat intr-un fisier (ex. stt.sh) si facut ulterior executabil cu comanda:

chmod +x stt.sh [enter]

Apoi trebuie pornit si urmate instructiunile de pe ecran:

./stt.sh [enter]

Daca totul functioneaza corect, ar trebui sa obtineti ceva similar cu imaginea urmatoare:
Cubieboard Voice

Mie mi se pare ca functioneaza uimitor de bine pentru limba romana, nu stiam ca recunoastrea vocala este acum atat de precisa si de accesibila. Tutorialul pentru Raspberry Pi merge si mai departe, integrand niste “inteligenta” si un motor text to speech, astfel ca sistemul sa si raspunda, cu voce umana. Eu nu am testat si functiile astea dar sunt sigur ca functioneaza.

O varianta in engleza a acestui articol a fost publicata aici.

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>