Përmbajtje:
- Pra, si është e mundur e gjithë kjo?
- Çfarë kërkohet?
- Hapi 1: Formatimi i kartës SD
- Hapi 2: Përgatitja e kartës SD
- Hapi 3: Ndizeni atë Pi
- Hapi 4: Konfigurimi fillestar
- Hapi 5: Përditësimi i instalimit
- Hapi 6: Përgatitja e skedarëve të konfigurimit
- Hapi 7: Vendosja e fjalës së nxehtë
- Hapi 8: Konfigurimi i audios (Pjesa 1)
- Hapi 9: Konfigurimi i audios (Pjesa 2)
- Hapi 10: Testimi i audios
- Hapi 11: Lidhja me Cloud
- Hapi 12: Testimi përfundimtar
- Hapi 13: Konfigurimi i Google Assistant në fillimin
- Hapi 14: Linja e përfundimit
Video: Hands Free Assistant i Google për Raspberry Pi: 14 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
Përshëndetje dhe mirëseardhje në Instructable tim të parë!
Në këtë udhëzues do t'ju tregoj atë që unë konsideroj se është mënyra më e lehtë për të instaluar një Asistent Google të kënduar, të gjithë duke vallëzuar në Raspberry Pi tuaj. Ajo është plotësisht pa duar me komandën OK Google dhe fillon automatikisht kur nisni Pi tuaj. Ajo është super e lezetshme dhe seriozisht e lehtë për tu vendosur!
Pra, si është e mundur e gjithë kjo?
Pak kohë më parë Google lëshoi një çantë AI të bërë vetë me numrin #57 të The Magpi. Kjo e bëri jashtëzakonisht të lehtë krijimin e asistentit tuaj Google, megjithatë marrja e pajisjes së zërit ishte pak më e vështirë dhe në shumë vende u shit brenda orëve.
Për fat të mirë, Google i bëri të gjithë programet në dispozicion në internet të kompletuar me udhëzime të plota. Kjo do të thoshte se ne nuk kishim nevojë për një kopje të The Magpi për të përfituar nga gjithë ajo punë e vështirë.
Përkundër kësaj, nuk duket të ketë ndonjë udhëzim të qartë në internet për përdorimin e kompletit të zërit pa një kopje të revistës ose pa pajisjen që u dërgua me të. Në vend të kësaj, shumica e mësimeve përpiqen të instalojnë gjithçka nga e para shpesh duke rezultuar në rrëmujë të kodit që është e pamundur të ndiqet për jo-koduesit si unë.
Dhe ja ku vjen ky Instructable. Isshtë rezultat i një pune të palodhur 2 -ditore duke parë qindra mësime, video dhe postime në internet. Rezultati është një Asistent i qëndrueshëm i Google i cili funksionon gjatë fillimit dhe aktivizohet me zë me fjalën e nxehtë 'OK Google'.
Çfarë kërkohet?
Për të përfunduar me sukses këtë Udhëzues do t'ju duhet sa vijon:
- Një Raspberry Pi 3 (me kartën e zakonshme microSD dhe kordonin e energjisë). * Faleminderit MichaelW142 i cili ka konfirmuar se kjo funksionon edhe me Raspberry Pi 2.
- Një altoparlant bazë me një lidhje aux 3.5 mm
- Një mikrofon USB
- Një mi dhe tastierë
Hapi 1: Formatimi i kartës SD
Gjëja e parë që duhet të bëjmë është të formatojmë kartën tonë SD. Le të përdorim Mjetin e Formatimit të Shoqatës SD i cili rekomandohet nga Fondacioni zyrtar Raspberry Pi.
Pasi të jetë instaluar, nisni aplikacionin dhe klikoni 'Opsion' Ju duhet të ndryshoni opsionin për 'FORMAT SIZE ADJUSTMENT' në 'ON'.
Tani klikoni 'OK' dhe kontrolloni dy herë që po formatojmë diskun e duhur, pastaj klikoni 'Format'. Kjo nuk duhet të zgjasë shumë, vetëm prisni konfirmimin se disku është formatuar me sukses para se të kaloni në hapin tjetër.
Hapi 2: Përgatitja e kartës SD
Tjetra ne duhet të shkarkojmë imazhin e kartës microSD Voice Kit për Raspberry Pi. Mund ta shkarkoni imazhin nga Google Drive im.
Për të transferuar imazhin që sapo kemi shkarkuar në kartën tonë SD ne do të përdorim një program të quajtur Etcher.io. Freeshtë falas, me burim të hapur dhe nuk kërkon instalim.
Pasi të keni shkarkuar Etcher, ekzekutoni programin dhe duhet të shihni një ekran si ai më sipër. Mund të duhen një ose dy minuta për t'u ngarkuar, kështu që nëse nuk ngarkohet menjëherë, jini të durueshëm.
Klikoni "Zgjidh imazhin" dhe lundroni te imazhi i kompletit të zërit që sapo kemi shkarkuar (aiyprojects-2017-05-03.img). Pasi të keni zgjedhur, kontrolloni dy herë që po i shkruani përmbajtjet në diskun e duhur. Duke supozuar se kemi zgjedhur diskun e duhur, atëherë klikoni ‘Flash!’.
Mund të duhen rreth 20 minuta ose më shumë për të shkruar imazhin në kartën tuaj SD kështu që mos ngurroni të shkoni dhe bëni një filxhan çaj të mirë dhe do t'ju shoh përsëri këtu pak!
Hapi 3: Ndizeni atë Pi
Sapo karta SD të jetë gati, ne mund ta vendosim kartën microSD në Raspberry Pi tonë. Në këtë pikë ne gjithashtu duhet të lidhim prizën tonë të energjisë, kabllon HDMI, tastierën, miun, monitorin, altoparlantin dhe mikrofonin USB. Shpresoj që konfigurimi juaj të duket diçka si e imja.
Unë jam duke përdorur një tastierë dhe miun pa tel, kështu që mos u shqetësoni nëse përfundoni me disa kabllo shtesë me konfigurimin tuaj!
Me kabllon e energjisë të kyçur, lejoni që Raspberry Pi juaj të fillojë dhe së shpejti do të prezantoheni me desktopin standard Pixel.
Hapi 4: Konfigurimi fillestar
Merrni kursorin tuaj dhe lundroni te logoja Raspberry Pi në pjesën e sipërme të majtë të ekranit tuaj. Nga lista zbritëse zgjidhni "Preferencat" dhe më pas "Konfigurimi i Raspberry Pi".
Tjetra, shkoni te "Ndërfaqet" dhe aktivizoni "SSH".
Tani klikoni në logon WiFi në të djathtën e sipërme të ekranit dhe zgjidhni rrjetin tuaj WiFi. Nëse WiFi juaj është i mbrojtur me fjalëkalim, do t'ju kërkohet ta futni atë. Kutia jeshile konfirmon që ne u lidhëm me sukses dhe jemi gati të kalojmë në hapin tjetër.
Hapi 5: Përditësimi i instalimit
Kjo është po aq e avancuar sa merr ky tutorial. Ne do të përdorim terminalin dev për të azhurnuar SDK të Asistentit të Google, Kit Kit dhe varësitë për të siguruar që kemi versionet më të fundit. Mos u frikësoni nëse asgjë nga këto nuk ka shumë kuptim për ju, por është thelbësore që ne të mos e kalojmë këtë hap. Thjesht bëni saktësisht siç thotë ky udhëzues duke qenë të kujdesshëm për të mos bërë gabime shtypi dhe gjithçka do të funksionojë mirë.
Pra, paniku, le të fillojmë! Klikoni dy herë mbi emrin e ikonës së desktopit ‘Start dev terminal’.
Ju duhet të shihni një dritare të frikshme të terminalit dev si ajo e mësipërme.
Tjetra shtypni komandat e mëposhtme në terminal saktësisht siç shfaqen më poshtë. Ka 9 komanda këtu dhe secila duhet të futet veçmas në rendin në të cilin shfaqen. Pas shtypjes së secilës komandë, goditni "Enter" në tastierën tuaj para se të kaloni në tjetrën. Disa prej komandave do të duhen disa sekonda për tu përfunduar, kështu që jini të durueshëm duke pritur që secili të përfundojë para se të kaloni në tjetrin.
cd ~/asistent-sdk-python
mjeshtër git arkë
git pull master origjinës
cd ~/zë-njohës-raspi
mjeshtër git arkë
git pull master origjinës
cd ~/zë-njohës-raspi
rm -rf env
skriptet/install-deps.sh
Hapi 6: Përgatitja e skedarëve të konfigurimit
Tjetra ne duhet të kopjojmë skedarët tanë të konfigurimit ekzistues dhe të sjellim versionet më të reja që sapo janë përditësuar. Këtu keni 4 komanda të tjera për ta bërë atë. Këto mund të bëhen në të njëjtin terminal dev që ne sapo përdorëm. Edhe një herë, ato duhet të bëhen në këtë mënyrë dhe duhet të shtypen saktësisht siç shfaqen më poshtë:
cp ~/.config/status-led.ini/.config/status-led.ini
cp ~/.config/voice-njohës.ini ~/.config/voice-njohës.ini
cp ~/voice-njohës-raspi/config/status-led.ini.default ~/.config/status-led.ini
cp ~/voice-njohës-raspi/config/voice-njohës.ini.default ~/.config/zë-njohës.ini
Hapi 7: Vendosja e fjalës së nxehtë
Punë e mrekullueshme deri tani! Tani po i afrohemi vërtet kështu që rrini aty.
Ne tani duhet të ndryshojmë shkasin për kompletin tonë të projektit Google AIY në mënyrë që ai t'i përgjigjet zërit tonë kur flasim fjalët "OK Google".
Shkruani komandën e mëposhtme në terminalin dev:
nano/.config/zë-njohës.ini
Kjo do të prodhojë këtë dritare edhe më të frikshme.
Brenda kësaj dritareje të re, kërkoni kodin e mëposhtëm:
# Zgjidhni shkaktarin: gpio (parazgjedhje), duartrokitje, ok-google.
# shkas = duartrokitje
Ne duhet ta ndryshojmë këtë kod në:
# Zgjidhni shkaktarin: gpio (parazgjedhje), duartrokitje, ok-google.
shkas = ok-google
Nëse përdorni tastet e shigjetave në tastierën tuaj, do të vini re se shfaqet një kursor. Duke përdorur çelësat e shigjetave, ulni kursorin në rreshtin e tekstit që ne po përpiqemi të ndryshojmë. Duke përdorur çelësin backspace në tastierën tuaj fshini rreshtin e tekstit që ne po përpiqemi ta ndryshojmë dhe e rishkruajmë ashtu si shembulli i mësipërm.
Vini re se unë kam hequr gjithashtu simbolin #, është e rëndësishme që ne të mos e përfshijmë # në këtë rresht të ri të tekstit.
Unë kam bashkangjitur një pamje para dhe pas ekranit se si duhet të duket e gjithë kjo (mbylle të kam humbur atje).
Duke supozuar se dritarja juaj duket tamam si e imja, ne mund t'i mbyllim dhe t'i ruajmë ndryshimet. Mbajeni ‘Ctrl’ në tastierën tuaj dhe shtypni ‘X’ për të mbyllur dritaren. Atëherë do të na kërkohet të ruajmë ndryshimet që kemi bërë, shtypni ‘Y’ dhe më pas goditni ‘Enter’ në tastierën tuaj. Tani dritarja do të mbyllet dhe ndryshimet janë ruajtur.
Për të siguruar që ndryshimet kanë ndikuar ne duhet të rindezim shërbimin. Shkruani komandën e mëposhtme në dritaren e terminalit dhe shtypni "Enter":
sudo systemctl rinis zërin-njohës.shërbim
Hapi 8: Konfigurimi i audios (Pjesa 1)
Tani për tani Google Assistant pak a shumë i gjallë dhe gati për të shërbyer.. Urime!
Sidoqoftë, para se të emocionoheni shumë, nuk mund ta dëgjoni njëri -tjetrin. Kjo sepse Imazhi i Projektit Google AIY ishte konfiguruar për të punuar me pajisjen që ishte dërguar me kompletin. Meqenëse ne po përdorim një altoparlant standard aux dhe një mikrofon usb, ne duhet të ndryshojmë disa nga konfigurimet.
Edhe një herë ne do të përdorim të njëjtën dritare të terminalit dev, këtë lloj kohe:
fletë sudo /boot/config.txt
Kjo do të hapë një dritare teksti. Shkoni në fund të dokumentit dhe hiqni # para vijës dtparam = audio = on dhe futni një # para dy rreshtave poshtë tij.
Pasi të keni bërë këto ndryshime, duhet të jetë pikërisht kështu:
# Aktivizo zërin (ngarkon snd_bcm2835)
dtparam = audio = në #dtoverlay = i2s-mmap #dtoverlay = googlevoicehat-karta zanore
Unë gjithashtu kam bashkangjitur një pamje të ekranit për t'ju treguar se si do të duket kjo.
Shkoni te "Skedari" dhe klikoni "Ruaj. Tani mund ta mbyllni dokumentin.
Hapi 9: Konfigurimi i audios (Pjesa 2)
Kthehuni përsëri në terminalin dev, shkruani:
fletë sudo suedeze /etj/asound.conf
Kur shtypni "Enter" do të hapet një dokument i ri teksti. Këtë herë fshini të gjithë tekstin brenda dokumentit dhe zëvendësojeni atë me sa vijon:
pcm.! default {type asym capture.pcm "mic" playback.pcm "speaker"} pcm.mic {type plug slave {pcm "hw: 1, 0"}} pcm.sopaker {type plug rob {pcm "hw: 0, 0 "}}
Përsëri kam bashkangjitur një screenshot që ju tregon se si do të duket kjo.
Ruani dhe mbyllni edhe një herë dokumentin.
Tani është koha për të rindezur Raspberry Pi tuaj. Klikoni në logon e Raspberry Pi në pjesën e sipërme të majtë të ekranit tuaj dhe klikoni në "Shutdown" pastaj "Rinisni".
Pasi të keni rindezur Pi ne kemi vetëm një rregullim më shumë për të bërë. Klikoni dy herë në ikonën ‘Fillo terminalin dev’ edhe një herë dhe shkruani sa vijon:
fletëpalosje/shtëpi/pi/voice-recognizer-raspi/checkpoints/check_audio.py
Në këtë dokument përfundimtar ju duhet të gjeni vijën e kodit që lexon:
VOICEHAT_ID = 'googlevoicehat'
Ndryshoje këtë në:
VOICEHAT_ID = 'bcm2835'
Pasi të keni bërë këto ndryshime, ashtu siç bëmë më parë, ruani, pastaj mbyllni këtë dokument.
Hapi 10: Testimi i audios
Në desktop ka një skedar të quajtur "Kontrollo zërin". Klikoni dy herë mbi këtë dhe ndiqni udhëzimet për të siguruar që të dyja të folurit dhe mikrofoni po punojnë.
Nëse e keni ndjekur këtë Udhëzues në mënyrë korrekte, nuk duhet të ketë probleme. Sidoqoftë, nëse nuk mund të dëgjoni asgjë, kontrolloni dy herë që volumi është rritur dhe se Raspberry Pi juaj po përdor "Analog" për daljen e zërit. Ju mund ta bëni këtë duke klikuar me të djathtën në ikonën e zërit në krye të ekranit. "Analog" duhet të shënohet ashtu si shembulli në pamjen e ekranit.
Duke supozuar se keni kaluar kontrollin audio, ne mund të kalojmë në hapin tjetër.
Hapi 11: Lidhja me Cloud
Para se Google Assistant të na japë përgjigje për pyetjet djegëse të jetës, ne kemi nevojë ta lidhim atë me Shërbimet Cloud të Google.
Kjo është e lehtë për tu bërë, por nëse nuk keni qenë në re më parë atëherë mund të duket pak e frikshme në fillim.
Ja çfarë duhet të bëjmë:
1) Në Raspberry Pi hapni shfletuesin e internetit Chrome dhe shkoni te Cloud Console:
2) Hyni me një llogari ekzistuese të Google ose regjistrohuni nëse nuk e keni një të tillë.
3) Krijoni një projekt të ri dhe jepini një emër. Unë e quaj timen ‘Google Pi’
4) Duke përdorur shiritin e kërkimit filloni të shtypni ‘Google Assistant’ dhe duhet të shihni ‘API të Google Assistant’. Klikoni mbi të dhe pastaj kur faqja tjetër të ngarkohet klikoni ‘Enable’ për të aktivizuar API.
5) Shkoni te 'API Manager' pastaj 'Credentials' dhe krijoni një 'OAuth 2.0 klient'.
6) Klikoni 'Krijo letrat kredenciale' dhe zgjidhni 'ID e klientit OAuth'. Nëse nuk keni qenë kurrë në cloud më parë, tani do t'ju kërkohet të konfiguroni ekranin e pëlqimit tuaj. Ju do të duhet të emërtoni aplikacionin tuaj, unë e quaj timen "Raspberry Pi". Të gjitha fushat e tjera mund të lihen bosh.
7) Në listën e Kredencialeve, gjeni kredencialet tuaja të reja dhe klikoni ikonën e shkarkimit në të djathtë.
8) Shfletuesi i kromit tani do të shkarkojë një skedar të vogël JSON me të gjitha kredencialet tuaja të ruajtura në mënyrë të sigurt brenda. Gjeni këtë skedar dhe riemëroni atë në 'ndihmës.json', pastaj zhvendoseni në /home/pi/assistant.json.
9) Së fundi, shkoni te faqja e Kontrolleve të Aktivitetit: https://myaccount.google.com/activitycontrols dhe aktivizoni shërbimet e mëposhtme: Aktiviteti në ueb dhe aplikacione, Historiku i vendndodhjes, Informacioni i pajisjes, Voice dhe aktiviteti audio. Sigurohuni që të regjistroheni me të njëjtën llogari Google si më parë!
Nëse keni ngecur në çdo moment gjatë kësaj faze, mos u tronditni, Google ka bërë një punë të shkëlqyeshme në dokumentimin e këtij procesi me pamje të ekranit për çdo hap në faqen e internetit të Google AIY Kit.
Hapi 12: Testimi përfundimtar
Nëse gjithçka ishte konfiguruar saktë në re, tani jemi gati të flasim me Google. Duke përdorur përsëri dritaren e komandës "Fillo terminalin dev", shkruani sa vijon:
src/main.py
Kjo do të zgjojë asistentin tonë, por meqenëse kjo është hera e parë që ne po lidhemi me Shërbimet e Google, një shfletues uebi do të hapet dhe do t'ju duhet të identifikoheni në Google për të dhënë lejen që Raspberry Pi të ketë qasje në API të Google Assistant. Përsëri duke u siguruar që përdorni të njëjtat hyrje në llogarinë Google si më parë.
Pasi të keni hyrë me sukses dhe të keni dhënë lejen, do t'ju kërkohet të mbyllni dritaren. Dritarja e komandës tani do të duket si pamja e bashkangjitur e ekranit duke konfirmuar që gjithçka ishte konfiguruar në mënyrë korrekte.
Shkoni përpara, bëni një pyetje, ajo po dëgjon!
Megjithatë, para se të emocionoheni shumë, ne nuk kemi përfunduar fare. Kur të keni mbaruar së luajtur, mbyllni dritaren, për ta bërë këtë thjesht përdorni kryqin e bardhë në pjesën e sipërme të djathtë të dritares.
Hapi 13: Konfigurimi i Google Assistant në fillimin
Ju premtova se Asistenti ynë Google do të fillonte automatikisht kur të ndezim Raspberry Pi. Për ta bërë këtë, hapni një dritare të re komande duke përdorur ikonën "Fillo terminalin dev" në desktop. Shkruani rreshtin e mëposhtëm të kodit në dritaren tuaj të terminalit dhe shtypni "Enter" në tastierën tuaj:
sudo systemctl aktivizoni njohësin e zërit
Ne sapo konfiguruam fillimin automatik të Asistentit tonë Google me një linjë kodi.. Sa e lehtë ishte kjo !!
Hapi 14: Linja e përfundimit
Tani që keni përfunduar të gjitha hapat, vazhdoni dhe rindizni Raspberry Pi tuaj. Nëse i keni ndjekur me kujdes të gjitha këto udhëzime, atëherë Google Assistant duhet të funksionojë në sfond kur Pi ngarkohet. Provojeni, thoni OK Google ta zgjojë dhe t'i kërkojë çfarëdo që ju pëlqen!
Unë me të vërtetë shpresoj se ju ka pëlqyer kjo Instructable. Shtë rezultat i 2 ditëve punë të palodhur dhe shumë leximeve në internet. Unë definitivisht nuk jam një kodues kështu që jam përpjekur të gjej mënyrën më të lehtë dhe më logjike për të marrë një Asistent Google që punon në një Raspberry Pi dhe besoj se kjo është ajo.
Nëse keni ndonjë pyetje ose sugjerim në lidhje me këtë Udhëzues, ju lutem më tregoni në komentet më poshtë. Unë gjithashtu do të doja të dëgjoja se si doli juaji.
Kam lexuar shumë mësime, postime në blog dhe hyrje në forum, por përparimet e mia më të mëdha me këtë projekt erdhën nga 2 postime në internet që të dy po përpiqeshin të kryenin detyra të ngjashme: https://eduncan911.com/stem/embedded/aiy-google-assistant -përmirësimet-maj-2017.html dhe https://www.androidauthority.com/build-google-assistant-raspberry-pi-770296/. Ky udhëzues është rezultat i zbulimit se si t'i bashkoni të dyja në një udhëzues të lehtë dhe të drejtpërdrejtë!
Kredite shtesë
- Google Assistant SDK tashmë ka një numër të madh të veçorive të integruara megjithatë ka shumë 'mod' që mund t'i shtoni në AIY Kit për t'i dhënë atij disa funksionalitete shtesë. Ktinkerer ka një listë të azhurnuar të modaliteteve më të fundit në dispozicion, shikojeni! Faleminderit cyberwolves që e treguat këtë:)
- Po në lidhje me një rrethues altoparlantësh për AI -në tuaj të re të çuditshme? Shikoni këtë nga adylinn.
Nëse mund të mendoni për ndonjë gjë tjetër për t'i shtuar këtij Udhëzuesi, ju lutemi kontaktoni:)
Vrapues në konkursin e autorit për herë të parë
Recommended:
Mur për mur për IPad si Paneli i Kontrollit të Automatizimit në shtëpi, duke përdorur magnet të kontrolluar me servo për të aktivizuar ekranin: 4 hapa (me fotografi)
Muri i Murit për IPad Si Paneli i Kontrollit të Automatizimit të Shtëpisë, Duke përdorur Magnetin e kontrolluar me Servo për të Aktivizuar Ekranin: Kohët e fundit kam kaluar mjaft kohë duke automatizuar gjërat brenda dhe rreth shtëpisë sime. Unë jam duke përdorur Domoticz si aplikacionin tim për Automatizimin e Shtëpisë, shihni www.domoticz.com për detaje. Në kërkimin tim për një aplikacion pulti që tregon të gjithë informacionin e Domoticz të ndryshojë
Google Glass/Ndihmë për të varfërit për ata me vizion tuneli: 5 hapa (me fotografi)
Google Glass/Ndihma e të varfërve për Google me vizion tuneli: Abstrakt: Ky projekt transmeton video të drejtpërdrejta nga një aparat fotografik me sy peshku në një ekran të veshur me kokë. Rezultati është një fushëpamje më e gjerë brenda një zone më të vogël (ekrani është i krahasueshëm me një 4 "ekran 12" larg syrit tuaj dhe daljet në 720
Krijoni veprime të personalizuara për Google Assistant: 12 hapa
Krijoni veprime të personalizuara për Google Assistant: Duke parë potencialin e Google Assistant siç u prezantua në Google I/O 18 si dhe Volvo Cars në sistemin e tyre të infotainment, nuk mund të rezistoja ta provoja. Ripërdor një nga projektet e mia më të vjetra, VasttraPi dhe e ndërhyra me Google Assistant.
Google Assistant për PC/Mac/Linux: 5 hapa
Google Assistant për PC/Mac/Linux: Google Assistant është përgjigjja e Google për asistentin e zgjuar të shtëpisë Alexa të Amazon. Fillimisht i disponueshëm vetëm me funksionalitet të kufizuar në aplikacionin Google Allo, Google Assistant më vonë u shfaq me telefonat inteligjentë Google Home dhe Pixel
Trekëmbëshi i kamerës së biçikletës Hands Free: 6 hapa (me fotografi)
Trekëmbëshi i kamerës së biçikletës Hands Free: Më pëlqen të ngas biçikletën time. Më pëlqen edhe fotografia. Kombinimi i fotografisë dhe biçikletave nuk funksionon gjithmonë. Nëse nuk keni xhepa të mëdhenj në veshje, keni problem të ruani aparatin tuaj kur nuk jeni duke bërë fotografi.