Zapisi in dokumenti iz področja prava, človekovih pravic in tehnologije.

Ali je mogoča namestitev OS X El Capitan v VirtualBox na Ubuntu?

Virtualizacijsko orodje VirtualBox že nekaj časa ponuja možnosti za poganjanje OS X v svojih virtualnih strojih. Na spletu je mogoče najti vodiče za namestitev virtualnega računalnika z OS X v VirtualBox, ki teče na fizičnem Mac računalniku ter v okolju Windows (za to je na voljo celo več vodičev). Bi šlo tudi na Ubuntu Linuxu?

V tokratnem prispevku si bomo torej ogledali kako bi bilo mogoče namestiti Macov OS X (El Capitan, 10.11) na virtualni računalnik, ki teče v okolju VirtualBox na operacijskem sistemu Ubuntu Linux, oziroma, kako bi lahko naredili svoj virtualni Hackintosh. Več o tem, zakaj opisanih postopkov ni priporočljivo izvajati si lahko preberete na dnu tega prispevka.

Zahteve

Za projekt bi potrebovali:

  • Ubuntu računalnik na Intel arhitekturi z 4 ali več procesorskimi jedri (vsaj 2 jedri bomo namenili OS X);
  • vsaj 4Gb pomnilnika RAM (vsaj 2Gb bomo namenili OS X);
  • trdi disk (za OS X bomo namenili vsaj 15 do 40 Gb prostora);
  • Oraclov VirtualBox 5 (uporabili smo različico 5.0.18) nameščen na Ubuntu računalnik;
  • namestitveni paket za OS X El Capitan.

Priprava namestitvenega DVD-ja

Na Mac računalniku iz App Store prenesemo (“download“, ne “install“) aplikacijo “Install OS X El Capitan.app“. Ko se aplikacija prenese (velika je okrog 7,1 Gb) jo najdemo v mapi /Applications. Seveda pri tem ni odveč poudariti, da to lahko naredimo samo, če si legalno lastimo Mac računalnik.

Na Mac računalniku odpremo terminal in ustvarimo datoteko ECISO.tool:

nano ECISO.tool

Vanjo skopiramo naslednje ukaze:

#!/bin/bash

# Mount the Installer image
hdiutil attach /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/SharedSupport/InstallESD.dmg -noverify -nobrowse -mountpoint /Volumes/install_app

# Create El Capitan sparseimage of 7316mb with a Single Partition - Apple Partition Map
hdiutil create -o /tmp/ElCapitan -size 7316m -layout SPUD -fs HFS+J -type SPARSE

# Mount the El Capitan sparseimage
hdiutil attach /tmp/ElCapitan.sparseimage -noverify -nobrowse -mountpoint /Volumes/install_build

# Restore the Base System into the El Capitan Blank sparseimage
asr restore -source /Volumes/install_app/BaseSystem.dmg -target /Volumes/install_build -noprompt -noverify -erase

# Remove Packages link and replace with actual files
rm /Volumes/OS\ X\ Base\ System/System/Installation/Packages
cp -rp /Volumes/install_app/Packages /Volumes/OS\ X\ Base\ System/System/Installation/

# Copy El Capitan installer dependencies
cp -rp /Volumes/install_app/BaseSystem.chunklist /Volumes/OS\ X\ Base\ System/BaseSystem.chunklist
cp -rp /Volumes/install_app/BaseSystem.dmg /Volumes/OS\ X\ Base\ System/BaseSystem.dmg

# Unmount the installer image
hdiutil detach /Volumes/install_app

# Unmount the Base System image
hdiutil detach /Volumes/OS\ X\ Base\ System/

# Optimise Sparseimage Size
hdiutil compact /tmp/ElCapitan.sparseimage
hdiutil resize -size min /tmp/ElCapitan.sparseimage

# Convert the ElCapitan spareseimage to ISO/CD master
hdiutil convert /tmp/ElCapitan.sparseimage -format UDTO -o /tmp/ElCapitan.iso

# Move ElCapitan ISO image to the desktop
mv /tmp/ElCapitan.iso.cdr ~/Desktop/'ElCapitan.iso'

# Delete ElCapitan.sparseimage file
rm -f /tmp/ElCapitan.sparseimage

Nastavimo, da je datoteka izvršilna in jo zaženemo:

chmod +x ECISO.tool
./ECISO.tool

Zagon in izvajanje skripte traja nekaj časa, na disku pa potrebujemo okrog 16 Gb prostora. Ko se skripta izvede, se na našem namizju znajde datoteka ElCapitan.iso – gre za ISO sliko namestitvenega DVDja OS X El Capitan, ki ga lahko uporabimo za nameščanje OS X na Mac računalnikih, ki nimajo dostopa do interneta.

Priprava virtualnega stroja

Na Ubuntu računalniku v VirtualBoxu ustvarimo virtualni stroj, ki ga poimenujemo “Rain Coat”:

  1. V VirtualBoxu kliknemo na gumb “New/Nov” (čarovnik za ustvarjanje novega virtualnega stroja).
  2. Določimo ime stroja (npr. “Rain Coat”), vrsto (Mac OS X) in različico (Mac OS X 10.11 El Capitan (64 -bit)).
  3. V naslednjem koraku virtualnemu stroju določimo vsaj 2048 Mb pomnilnika RAM.
  4. Nato ustvarimo virtualni trdi disk. Kot tip diska izberemo VDI (VirtualBox Disk Image) ali VMDK (tega lahko uporabljamo tudi z VMWare). Določimo, da je disk dinamično dodeljena pomnilniška naprava (ang. Dynamically allocated). To je sicer privzeta vrednost, pomeni pa, da datoteka z vsebino virtualnega diska ne bo zavzela celotne velikosti diska že ob začetku, pač pa bo dinamično rasla skupaj z napolnjenostjo virtualnega diska. Velikost diska naj bo vsaj 15 Gb (za osnovno namestitev), še bolje pa je vsaj 40 Gb (za udobno namestitev).

Virtualni stroj je sedaj ustvarjen. Pred zagonom pa je potrebno nastaviti še nekaj “malenkosti”. Kliknemo gumb z nastavitvami (v glavnem meniju).

  1. Na Sistem – Matična plošča / System – Motherboard v razdelku Vrstni red zagona / Boot Order odstranimo disketo / Floppy Drive.
  2. Na Sistem – Procesor / System – Processor število dodeljenih jeder nastavimo na vsaj 2.
  3. Na Zaslon / Display nastavimo Grafični pomnilnik / Video Memory na 128Mb.
  4. Na Pomnilniške naprave / Storage kliknemo na ikono DVD-ja in izberemo datoteko navideznega optičnega diska / Choose Virtual Optical Disk File.

V naslednjem koraku je potrebno nastaviti še DMI BIOS nastavitve virtualnega stroja. Na Ubuntu sistem odpremo ukazno vrstico in vpisujemo naslednje ukaze. Pred tem zapremo aplikacijo VirtualBox.

Najprej nastavimo tip Mac računalnika.

Primer za Macmini6,2:

VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "Macmini6,2"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "Rain Coatn" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-F65AE981FFA204ED"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

Primer za iMac11,3:

VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-F2238BAE"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

Primer za MacBookPro11,3:

VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro11,3"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-2BD1B31983FE1663"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

V nekaterih primerih (če se pojavi napaka v VirtualBoxu), je potrebno “ponarediti” oz. pravilno emulirati virtualni procesor.

Primer emuliranja procesorja Lynnfield i5 750:

VBoxManage modifyvm "Rain Coat" --cpuidset 00000001 000106e5 06100800 0098e3fd bfebfbff

Primer emuliranja procesorja IvyBridge:

VBoxManage modifyvm "Rain Coat" --cpuidset 00000001 000306a9 04100800 7fbae3ff bfebfbff

ali

VBoxManage modifyvm "Rain Coat" --cpuidset 00000001 000306a9 00020800 80000201 178bfbff

Dodajanje serijskih številk in ostalih SMBIOS podatkov

V ukazno vrstico vpišemo naslednje ukaze (serijske številke – spodaj so zapisane v odebeljeni pisavi – seveda ustrezno spremenimo):

VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" "W8CAFEB0YB6"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiBoardSerial" "W8CAFFEBABE1A"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiSystemVendor" "Apple Inc."
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiSystemFamily" "iMac"
VBoxManage setextradata "Rain Coat" "VBoxInternal/Devices/efi/0/Config/DmiBIOSVersion" "IM112.0057.03B"

Vse dodatne podatke virtualnega stroja sicer lahko pogledamo z ukazom:

VBoxManage getextradata "Rain Coat" enumerate

Namestitev OS X El Capitan

Sedaj lahko zaženemo virtualni stroj. Le-ta bi ob zagonu samodejno zagnal namestitveni ISO DVD. Tega seveda ne bomo storili, saj to ni v skladu z Applovimi splošnimi pogoji uporabe OS X.

Zato si bomo raje ogledali kako OS X namestimo na Mac računalnik z zamenjanim (novim) trdim diskom.

Ko se OS X zažene na računalniku z novim diskom, je potrebno najprej formatirati trdi disk, sicer OS X sistema nanj ni  mogoče namestiti. Iz menija Utilities izberemo Disk Utility, izberemo trdi disk ter ga izbrišemo ter formatiramo. Celotnemu disku določimo en sam razdelek (particijo), in sicer tipa “GUID Mac OS X Extended“. Disk poljubno poimenujemo, npr. “Macintosh HD“.

Disk Utility zapremo in nadaljujemo z namestitvijo na “Macintosh HD“. Celotna namestitev traja med 15 minut do pol ure. Po uspešni namestitvi sistem ponovno zaženemo, pred tem odstranimo DVD.

Sedaj dokončamo OS X namestitev (izberemo državo, tipkovnico, časovni pas,… priporočljivo je, da onemogočimo pošiljanje kakršnihkoli podatkov Applu (location services, diagnostics and usage data,…). Ustvarimo še svoj uporabniški račun. S tem je namestitev v grobem končana.

Optimizacija virtualnega stroja

Optimizacijo virtualnega stroja vedno izvajamo ob ugasnjenem virtualnem stroju.

Nastavitev ustrezne ločljivosti zaslona

Privzeta ločljivost zaslona je 1024 x 768. Le-to lahko (za katerikoli virtualni stroj brez tim. Dodatkov za gosta) spremenimo z naslednjim ukazom:

VBoxManage setextradata "Rain Coat" "VBoxInternal2/EfiGopMode" N

Namesto “N” vpišemo številko od 0 do 5, pri čemer se posamezna številka nanaša na eno izmed možnih ločljivosti zaslona:

  • 0: 640 x 480
  • 1: 800 x 600
  • 2: 1024 x 768
  • 3: 1280 x 1024
  • 4: 1440 x 900
  • 5: 1920 x 1200

Če torej želimo uporabiti ločljivost 1440 x 900 vpišemo ukaz:

VBoxManage setextradata "Rain Coat" "VBoxInternal2/EfiGopMode" 4

Deljenje diska z Ubuntu računalnikom

V VirtualBoxu gremo v nastavitve virtualnega stroja, izberemo Omrežje / Network ter dodamo dodaten omrežni vmesnik. Le-ta naj bo tipa Vmesnik samo za gostitelja / Host-only Adapter. S tem virtualnemu stroju omogočimo dostop do virtualnega omrežja, ki je “povezano” z omrežnim vmesnikom vboxnet0.

Le-ta ima v Ubuntu sistemu najverjetneje IP številko 192.168.56.1. Njegov IP sicer lahko pogledamo z ukazom:

ifconfig vboxnet0

Dobimo približno takle izpis:

vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00 
inet addr:192.168.56.1 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:986 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:0 (0.0 B) TX bytes:218936 (218.9 KB)

Ta virtualni omrežni vmesnik bomo virtualnem stroju sedaj uporabili za povezovanje do gostiteljskega sistema (Ubuntu) preko Samba protokola. Omrežnemu vmesniku v OS X bomo nastavili fiksni IP naslov in sicer 192.168.56.2 (preko System Preferences / Network).

Na Ubuntu sistemu najprej odpremo požarni zid:

sudo ufw allow from 192.168.56.2 to any port 139 proto tcp
sudo ufw allow from 192.168.56.2 to any port 445 proto tcp

Nato nastavimo Samba uporabnika in geslo zanj:

sudo smbpasswd -a matej

Vpišemo geslo:

New SMB password:
Retype new SMB password:
Added user matej.

Omogočimo Samba uporabnika:

sudo smbpasswd -e matej
Enabled user matej.

Sedaj na Ubuntu sistemu izberemo mapo, ki jo želimo dati v skupno rabo, nanjo kliknemo z desnim miškinim gumbom ter v zavihku Lastnosti – Souporaba krajevnega omrežja, mapo damo v souporabo.

V OS X (ki ima v tem primeru dva omrežna vmesnika!) preko System PreferencesNetwork, drugemu omrežnemu vmesniku določimo fiksni IP (“Manually“) 192.168.56.2.

Nato v Finderju izberemo Go – Connect to Server in izberemo mesto “smb://192.168.56.1“. Vpišemo Samba uporabniško ime in geslo (lahko tudi nastavimo, da si ga sistem shrani v Keychain-u oz. si ga zapomni) in iz OS X imamo dostop do skupne deljene mape na Ubuntu računalniku.

Seveda je potrebno poudariti, da opisani postopek deljenja diska deluje tudi kadar uporabljamo dva fizična računalnika (Mac in Ubuntu) na istem omrežju in nikakor ni uporaben samo pri virtualizaciji.

Optimizacija tipkovnice

Mac računalniki uporabljajo svojo tipkovnico, ki je uporabniki Linux in Windows sistemov niso najbolj vajeni. Navadno težavo predstavljajo nekateri “posebni” znaki, kot na primer “afna” (znak @). Le-ta je v OS X s slovensko tipkovnico dosegljiva preko pritiskov na gumbe Shift-Alt-2.

Na srečo je preslikava tipkovnice precej enostavna. Najprej v OS X izberemo slovensko tipkovnico. V System Preferences – Keyboard – Input sources dodamo “slovenian keyboard“. Nato v OS X namestimo brezplačno aplikacijo Karabiner.

Karabiner v OS X.

Karabiner v OS X.

Po namestitvi aplikacije med nastavitvami vključimo spremembo QWERTY v QWERTZ razporeditev ter preslikavo najpomembnejših znakov za slovensko tipkovnico.

Postopek lahko uporabimo predvsem takrat, kadar fizično Mac tipkovnico zamenjamo s PC tipkovnico.

Nekatere zaključne nastavitve OS X

Za lažje upravljanje Mac računalnika se splača omogočiti oddaljeno upravljanje preko SSH, če želimo pa tudi preko VNC. To nam omogoča, da se na Mac računalnik iz Ubuntu sistema povežemo na OS X preko ukaza:

ssh uporabnik@192.168.56.2

Iz ukazne vrstice v OS X lahko postorimo marsikaj, na hitro si bomo samo ogledali, kako nastavimo ime računalnika:

sudo scutil --set ComputerName "ElCapitan"
sudo scutil --set LocalHostName "ElCapitan"
sudo scutil --set HostName "ElCapitan"
dscacheutil -flushcache

Zaradi težav s spanjem računalnika v VirtualBoxu (prihaja do sesutja sistema), se v OS X tudi splača nastaviti, naj računalnik nikoli ne gre v spanje (System Preferences – Energy Saver – Computer sleep: never).

Ali je torej mogoče?

Namestitev virtualnega stroja z OS X na Ubuntu sistem bi bila torej mogoča, res pa je, da bi bila v tem primeru integracija obeh sistemov nekoliko pomanjkljiva. Po pričevanjih se tipično pojavljajo težave z zvokom (je popačen), seveda ne deluje tudi deljenje odložišča (ang. clipboard), saj za OS X ni na voljo VirtualBoxovih Dodatkov za gosta.

Razlog je v tem, da Apple ne dovoljuje nameščanja OS X na strojno opremo drugih proizvajalcev (uporaba piratskega OS X pa seveda sploh ni dovoljena). Postopek izdelave fizičnega ali virtualnega Hackintosha zato ni povsem legalen oziroma je v nasprotju z Applovimi splošnimi pogoji. Pa čeprav Oracle v VirtualBoxu ponuja možnost nameščanja OS X gostov.

Je pa po drugi strani res, da OS X gosta lahko povsem legalno namestimo na VirtualBox, ki teče na fizičnem Mac računalniku (torej uporabljamo virtualni Mac znotraj fizičnega Maca). Tam bi bili vsi opisani postopki povsem zakoniti.

Zato izvajanja opisanih postopkov nikakor ne priporočamo. Opisani postopki so nastali na podlagi informacij iz interneta ter ob našem poznavanju Linux in OS X sistemov ter internega delovanja VirtualBoxa. Zato ob preskušanju opisanih postopkov kakšna podrobnost morda ne bo delovala. Opisanega početja se torej lotevate izključno na lastno odgovornost.

Konec koncev pa se je potrebno vprašati zakaj sploh potrebujemo virtualni OS X, ko vendar že imamo povsem delujoč Ubuntu, ki je veliko bolj odprt, nastavljiv, povezljiv, hitrejši, varnejši in konec koncev bolj uporaben kot Mac (razen za kakšne res specifične naloge).

Hmm, morda pa zato, ker se ob pogledu na konkurenco vedno lahko razveselimo vrnitve nazaj na Ubuntu Linux… 🙂

Prepoznavanje govora na Raspberry Pi

Eden izmed najbolj znanih in najbolj razvitih sistemov za prepoznavo govora je CMU Sphinx. Gre za skupek orodij za prepoznavanje govora, ki so jih razvili na Carnegie Mellon University, od leta 2000 pa so njihovo programsko kodo odprli jo dali na uporabo skupnosti. Ena izmed komponent je tudi PocketSphinx – gre za orodje, ki je namenjeno poganjanju na tim. namenskih sistemih (zlasti tistih, ki jih poganjajo ARM procesorji). V tokratnem prispevku si bomo pogledali, kako Sphinx namestimo na Raspberry Pi 3.

Predpriprava sistema

Raspberry Pi sicer vsebuje vgrajeno zvočno kartico , vendar samo izhodno, ne zna pa zajemati zvoka (npr. preko mikrofona). Zato moramo na RPi najprej priključiti USB mikrofon. Kupimo ga lahko že za nekaj EUR.

USB mikrofon na Raspberry Pi.

USB mikrofon na Raspberry Pi.

Ko USB mikrofon priključimo, se v sistemu pojavi nova zvočna kartica. Pogledamo jo z ukazom:

cat /proc/asound/cards

Označena je s številko 1:

0 [ALSA ]: bcm2835 - bcm2835 ALSA
bcm2835 ALSA
1 [Device ]: USB-Audio - USB PnP Sound Device
C-Media Electronics Inc. USB PnP Sound Device at usb-3f980000.usb-1.4, full speed

Sedaj na računalnik namestimo ustrezna orodja za prevajanje Sphinxa:

sudo apt-get install bison libasound2-dev swig python-dev mplayer
sudo apt-get install subversion

Prevajanje Sphinxbase

Sphinxbase najprej prenesemo iz SVN skladišča, nato pa ga prevedemo:

cd ~/
cd speech/
svn checkout svn://svn.code.sf.net/p/cmusphinx/code/trunk/sphinxbase
cd sphinxbase/
./autogen.sh
make clean all
make check
sudo make install

Prevajanje PocketSphinx

PocketSphinx najprej prenesemo iz SVN skladišča, nato pa ga prevedemo:

cd ~/
cd speech/
svn checkout svn://svn.code.sf.net/p/cmusphinx/code/trunk/pocketsphinx
cd pocketsphinx/
./autogen.sh
make clean all
make check
sudo make install

Sedaj sta oba programska paketa nameščena. Pregled možnosti si lahko na hitro ogledamo z ukazom:

man pocketsphinx_continuous

Priprava jezikovnih datotek

Sedaj pripravimo jezikovne datoteke. Najprej v navadno tekstovno datoteko napišemo seznam besed, ki jih bo Raspberry Pi prepoznaval. Npr.:

Okay Pi
Open
Garage
Start
Translator
Shutdown
Reboot
Go left
Go right
Stop
Turn around
What is the time
weather
in
is
Ljubljana
Kranj
London
Linux
cool

To datoteko preko spletnega vmesnika naložimo v spletno orodje Sphinx Knowledge Base Tool. Gre za orodje, ki na podlagi seznama besed ustvari ustrezno prilagojen slovar izgovorjave (ang. pronunciation dictionary) ter jezikovni model (ang. language model). To orodje je sicer optimizirano za angleški jezik oziroma ameriški dialekt angleškega jezika.

Mimogrede, Sphinx sicer ni omejen na točno določen jezik (gre za tim. jezikovno agnostičen sistem), je pa potrebno za vsak posamezen jezik uporabiti ustrezen jezikovni model. Iz spleta si je sicer mogoče prenesti nekaj jezikovnih in akustičnih modelov, a slovenščina žal (še?) ni podprta. Si pa lahko jezikovni model zgradimo sami.

Ko orodje zgradi ustrezne datoteke, si jih prenesemo na Raspberry Pi. Prenesemo datoteki .dic in .lm (povezava do datotek čez nekaj časa poteče):

cd ~/speech
wget http://www.speech.cs.cmu.edu/tools/product/1461057180_32726/2956.dic
wget http://www.speech.cs.cmu.edu/tools/product/1461057180_32726/2956.lm

Zagon aplikacije za prepoznavo govora

Sedaj iz imenika speech, kjer se nahajata obe jezikovni datoteki, poženemo PocketSphinx:

pocketsphinx_continuous -adcdev plughw:1 -hmm /usr/local/share/pocketsphinx/model/en-us/en-us -lm 2956.lm -dict 2956.dic -samprate 16000/8000/48000 -inmic yes -logfn /dev/null

Kratka razlaga parametrov:

-adcdev plughw:1
Aplikaciji povemo, naj za zajem zvoka uporabi zvočni vir št. 1 (USB mikrofon, zvočni vir št. 0 je vgrajena zvočna kartica, ki pa kot rečeno nima zvočnega vhoda). Uporabimo tim. “plugin” ALSA napravo, saj osnovna “strojna” ALSA naprava morda ne zna pretvarjati tim. vzorčne hitrosti (ang. sample rate conversion).

-hmm
Jezikovno-akustični model (privzeti je angleško-ameriški)

-lm, -dict
Pot do .lm in .dic jezikovnih in akustičnih datotek.

-inmic yes
Zajem zvoka poteka iz mikrofona (mogoč je tudi zajem iz datoteke)

-logfn /dev/null
Aplikacija ne izpisuje logov (ne izpisuje poteka prepoznave), pač pa samo prepoznane besede. Pri testiranju se splača ta parameter izpustiti.

V praksi prepoznavanje govora na Raspberry Pi izgleda takole:

Kot je videti iz posnetka, se Sphinx občasno zmede in prepoznava ne deluje vedno optimalno. Predvsem ga motijo različni šumi, kar pa je mogoče rešiti z nastavitvijo občutljivosti mikrofona (uporabimo ukaz alsamixer).

Takole pa je videti prepoznava govora brez parametra “-logfn /dev/null“, torej z izpisovanjem poteka prepoznave:

INFO: ngram_search_fwdflat.c(952): 43615 channels searched (157/fr)
INFO: ngram_search_fwdflat.c(954): 3050 words searched (11/fr)
INFO: ngram_search_fwdflat.c(957): 1313 word transitions (4/fr)
INFO: ngram_search_fwdflat.c(960): fwdflat 0.40 CPU 0.144 xRT
INFO: ngram_search_fwdflat.c(963): fwdflat 0.40 wall 0.145 xRT
INFO: ngram_search.c(1253): lattice start node <s>.0 end node </s>.125
INFO: ngram_search.c(1279): Eliminated 1 nodes before end node
INFO: ngram_search.c(1384): Lattice has 381 nodes, 352 links
INFO: ps_lattice.c(1380): Bestpath score: -4061
INFO: ps_lattice.c(1384): Normalizer P(O) = alpha(</s>:125:275) = -313651
INFO: ps_lattice.c(1441): Joint P(O,S) = -331931 P(S|O) = -18280
INFO: ngram_search.c(875): bestpath 0.00 CPU 0.000 xRT
INFO: ngram_search.c(878): bestpath 0.00 wall 0.001 xRT
TURN AROUND

* * *

Kot smo torej videli, je Raspberry Pi dovolj zmogljiv tudi za osnovno prepoznavanje govora To odpira možnosti za izgradnjo kakšnega sistema za glasovno upravljanje. Ob tem ne smemo pozabiti, da Sphinx vsebuje tudi orodja za trening, kar pomeni da lahko prepoznavo govora optimiziramo za konkretnega končnega uporabnika.

GSM monitor na konferenci Hek.si

Na konferenci etičnega hekanja Hek.si sem imel predavanje na temo monitoringa GSM omrežja. Na predavanju je bilo predstavljeno orodje gr-gsm.

GSM Monitor.

Prosojnice so na voljo v PDF obliki.