Innehållsförteckning:

Ett röststyrt mönster av punktskriftstyp: 4 steg (med bilder)
Ett röststyrt mönster av punktskriftstyp: 4 steg (med bilder)

Video: Ett röststyrt mönster av punktskriftstyp: 4 steg (med bilder)

Video: Ett röststyrt mönster av punktskriftstyp: 4 steg (med bilder)
Video: Медведь-убийца Кесагаке. Кровавый пожиратель женщин и детей 2024, November
Anonim
En röststyrd, punktskriftsmönster semafor
En röststyrd, punktskriftsmönster semafor
En röststyrd, punktskriftsmönster semafor
En röststyrd, punktskriftsmönster semafor
En röststyrd, punktskriftsmönster semafor
En röststyrd, punktskriftsmönster semafor
En röststyrd, punktskriftsmönster semafor
En röststyrd, punktskriftsmönster semafor

"Lord Vetinari stod vid sitt fönster och tittade på semafortornet på andra sidan floden. Alla åtta av de stora fönsterluckorna mot honom blinkade rasande - svart, vitt, svart, vitt, svart, vitt … Information flög ut i luften. Tjugo mil bakom honom, på ett annat torn på Sto Lat, tittade någon genom ett teleskop och skrek ut siffror. Hur snabbt framtiden kommer över oss, tänkte han. " T. Pratchett, Den femte elefanten

Efter att ha byggt ett röststyrt hoppjack baserat på AIY-röstsatsen, hade jag idén att bygga en röststyrd semafor, som sammanför det senaste inom IT-teknik med början på telekommunikation och dataöverföring.

Först hade jag idén att replikera det franska semaforsystemet av Chappe, som var det första kända systemet för rikstäckande telekommunikation med hjälp av ett semaforsystem. Men det visade sig vara lite för komplicerat för att förverkligas med vanliga servon inom en dag. Mitt nästa mål var något liknande det clacksystem som beskrivs av Terry Pratchett, t.ex. i "Going Postal", som ett 2x4 slutare semaforesystem (inte som 4x4 -matrisen som visas i filmen). Tyvärr kunde jag inte hitta för mycket tekniska detaljer tillgängliga på detta system. Så jag slutade med 2x3 matris -semaforesystemet utvecklat av Lord Murray, som hade använts av den brittiska marinen ett tag. Dessutom passar ett sex slutar/bit -system bra till de sex servokontakterna som finns på AIY -rösthatten. Men eftersom jag inte hade sex servon till hands mellan åren bestämde jag mig slutligen för att först bygga en simulator gjord av lysdioder.

När det gäller koden som visas kan man använda Murray -systemet, men återigen var informationen jag hade tillgänglig om den ganska begränsad, så att inga siffror och symboler kunde visas. Så jag kom till punkten för att använda punktskriftssystemet istället, som också använder en 2x3 -matris för att visa bokstäver, siffror och andra tecken. Punktskriftssystemet är den internationella standarden för att skriva ut texter som är läsbara för blinda. Det är också ett markeringsspråk, som använder en sifferindikator för att definiera att siffror ska visas nästa, och indikatorer för att definiera att en eller flera av följande bokstäver skrivs som versaler. Jag bestämde mig därför för att inrätta ett något förenklat system, med siffror och några tecken definierade av Nemeth -förlängningen av punktsystemet i stället, och bara använda stora bokstäver, åtminstone i början. Detta gör det möjligt att ha unika mönster för varje bokstav, siffra eller tecken som ska visas i min specialapplikation, och att utelämna den textanalys som krävs för verklig punktskrift.

Den sista enheten gör det möjligt att tala ett ord eller en mening i AIY -röstigenkänningssystemet, sedan skickas röstmönsterdata via WLAN och internet till någon Google -avdelare i USA, avkodas där och åtminstone i mitt fall tolkas data skickas tillbaka till Europa, där jag äntligen får den igenkända meningen att visas som en textsträng. Denna textsträng bryts sedan av Python -skriptet till de enskilda bokstäverna, och nu, i jämförelse med en ordlista som definierar motsvarande mönster, återskapas mönsterinformationen och mönstren visas på en 2x3 LED -matris. Ta en titt på den medföljande videon.

Jag har ställt in visningshastigheten till ett tecken per sekund, vilket bör vara tillräckligt länge för att en utbildad person ska kunna identifiera och översätta mönstret. Ett möjligt nästa steg skulle vara att använda en mönsterigenkänningsanordning som AIY vision HAT (hittills inte tillgänglig i Europa) för att läsa och tolka mönstren automatiskt, så att stänga cirkeln.

Ytterligare begrepp för förbättringar, några med mer verklig relevans, diskuteras i "outlook" -delen av denna instruerbara.

Steg 1: Material som används

Material som används
Material som används
Material som används
Material som används

Raspberry Pi 3

AIY röst HAT

Åtta vita lysdioder, 5 mm diameter. Dessa körs på 3V, så ett motstånd behövs.

100kOhm motstånd. Kanske inte den perfekta lösningen, men var till hands.

Startkablar

En kort tråd

Brödbräda, valfritt för att testa installationen.

En plastlåda för visitkort.

Två bitar av 4 mm plastskum, en del kvar skräp.

Någon bit plastmembran, som diffusor, som ovan.

Lödkolv och löd, en kniv.

Steg 2: Installation och användning

Installation och användning
Installation och användning
Installation och användning
Installation och användning
Installation och användning
Installation och användning

Konfigurera Raspberry Pi och AIY HAT som anges i AIY rösthattmanualen. Jag skulle rekommendera att löda rubriker åtminstone till servoportarna innan du monterar Pi och HAT, eftersom detta gör att du enkelt kan ansluta servon, en brödbräda eller lysdioder.

Displaylådan hade byggts av locket på en plastlåda för visitkort, två skumbitar som passade in i lådan och en liknande storlek på ett förpackningsmembran som diffusor. I en av skumdelarna pressades sex hål och lysdioderna placerades i dem. Lysdiodernas kortare fötter (undersidan) var anslutna med varandra med en kabel, sedan tillsattes ett motstånd och en bygelkabel löddes till den senare. Till de andra fötterna (plussidan) på LED: s bygelkablar löddes.

Dessa anslöts sedan till servoportarna på AIY -rösthatten via förlängningskablar, den positiva sidan till de (yttre) "P in" -pinnarna, den negativa kontakten till en av (inre) jord/minus -stiften. Ta en titt på det bifogade schemat.

Jag rekommenderar starkt att testa installationen på en brödbräda före lödning.

Nu placerades membranet, LED -plattan och tätningsskiktet i plastlådan.

Placera Braille_LED_1.py -skriptet i src -mappen. I så fall kan du behöva göra skriptet körbart först.

Nu använder Dev -terminalen (!) Programmet Braille_LED_1.py. Ange 'src/Braille_LED_1.py' och tryck på 'Enter'.

Du kommer nu att bli ombedd att trycka på knappen i AIY -rutan och säga ditt ord eller din mening. Med en viss fördröjning kommer systemet att upprepa det som hade förståtts och visa det på skärmen samt bokstav för bokstav på den sex LED -displayen.

Om du anger sökordet "adjö" istället för en mening, kommer systemet att säga adjö och programmet stängs.

Steg 3: Koden

Koden
Koden

Nedan hittar du koden som låter dig tala till AIY-röstenheten och få den igenkända meningen att visas bokstav för bokstav på en liten 2x3-LED 'semafor' eller punktskriftsmatris.

Koden är ett derivat av skriptet jag använde för ett tidigare projekt med AIY -rösthatten, som är ett derivat av servo_demo.py -exemplet som beskrivs i AIY -rösthattmanualen.

Du kan också hitta en ordbok med den del av Murray -koden som jag hade hittat på internet, som textfil. Den innehåller varken siffror och utelämnar några bokstäver, vilket skulle ge ett problem här.

En begränsning av programmet i dess nuvarande tillstånd är att om ett tecken inte ingår i ordlistan skulle det krascha programmet. Dessutom är det inte en representation av hela punktskriftskoden som ett markeringsspråk. Som du kan se i manuset nedan är Nemeth -koden för siffror överflödig med några tecken i standard punktskrift, men det borde inte ge problem för vår specifika applikation.

#!/usr/bin/env python3

# Detta skript är en anpassning av servo_demo.py -skriptet för AIY -rösthatten, # optimerad för AIY -baserad Baille -typsymbolvisning import aiy.audioimport aiy.cloudspeech import aiy.voicehat från gpiozero import LED #frå gpiozero importknapp från tid importera sömn # Ordbok: ett artificiellt modifierat punktskriftalfabet, # siffror och några symboler hämtade från Nemeth -förlängningen av punktskrift Braille_6A = {"": "123456", # mellanslag "A": "1", "B": "12 "," C ":" 14 "," D ":" 145 "," E ":" 15 "," F ":" 124 "," G ":" 1245 "," H ":" 125 ", "I": "24", "J": "245", "K": "13", "L": "123", "M": "134", "N": "1345", "O ":" 135 "," P ":" 1234 "," Q ":" 12345 "," R ":" 1235 "," S ":" 234 "," T ":" 2345 "," U ": "136", "V": "1236", "X": "1346", "Y": "13456", "Z": "1356", "W": "2456", "#": "3456 ", # Nummerprefix, dvs nästa tecken är siffror", ":" 2 ",". ": "256", # Punkt, slut på mening (GB) "?": "236", "!": "235", "'": "3", "-": "24", ";": "23", "Cap": "6", # Nästa bokstav finns i versaler; Nummerstopp? "": "", # Nemeth Braille-kod är en matematisk expansion för 6-punkts punktskrift # se: https://en.wikipedia.org/wiki/Nemeth_Braille "1": "2", # Nemeth Code '1', Punktskrift "komma" "2": "23", "3": "25", "4": "256", "5": "26", "6": "235", # Nemeth '6', Punktskrift '!' "7": "2356", "8": "236", # Nemeth '8', punktskrift '?' "9": "35", "0": "356", "+": "346", "-": "36", "/": "34", "(": "12356", ") ":" 23456 ","*":" 1346 " # '*' är en tvåmönstersymbol i Nemeth, här ersatt med ett 'x' för att utelämna krascher}" "" av enkelhetsskäl, standardmönstret med punktskriftstal anges nedan ersattes med motsvarande Nemeth-koder "1": "1", "2": "12", "3": "14", "4": "145", "5": "15", " 6 ":" 124 "," 8 ":" 1245 "," 9 ":" 24 "," 0 ":" 245 "," "" #Text = "rbhTZkl 9t64+34 #!" # Sampletext, för felsökningsändamål def main (): igenkänare = aiy.cloudspeech.get_recognizer () igenkänna.förvänta_fras ('adjö') # sökord, avslutar programknappen = aiy.voicehat.get_button () # AIY Knappstatus ledd = aiy.voicehat.get_led () # AIY Knapp-LED-status aiy.audio.get_recorder (). start () led_1 = LED (26) # 1: a kontakt, servo0, GPIO 26 # övre vänster led_2 = LED (6) # 2: a kontakt, servo1, GPIO 06 # mitten vänster led_3 = LED (13) # 3: e kontakt, servo2, GPIO 13 # nedre vänster led_4 = LED (5) # 4: a kontakt, servo3, GPIO 05 # övre högra led_5 = LED (12) # 5: e kontakt, servo4, GPIO 12 # mitten höger led_6 = LED (24) # 4: e kontakt, servo3, GPIO 13 # nedre högra # avstånd = Knapp (5) # avståndssensor ansluten till servo3/GPIO 05, används inte här aiy.audio.say ("Hej!",) Aiy.audio.say ("För att börja, tryck på knappen",) aiy.audio.say ("Om du säger hejdå, jag avslutar programmet",) medan True: # startar loop led.set_state (aiy.voicehat. LED. BLINK) print ("För att aktivera röstigenkänning n, tryck på den blå knappen och tala sedan ") print () button.wait_for_press () print ('Listening …') aiy.audio.say (" I listen ",) led.set_state (aiy.voicehat. LED. BLINK_3) text = igenkännare.igenkänna () # textsträng för den igenkända meningen led.set_state (aiy.voicehat. LED. OFF) om texten är Ingen: aiy.audio.say ('Tyvärr, jag hörde dig inte.',) elif 'farväl' i text: aiy.audio.say ("Goodbye",) aiy.audio.say ('Arrivederci',) aiy.audio.say ('Auf Wiedersehen',) sleep (3) print ('bye! ') break # stops loop och avslutar programmet annars: print (' You said "', text,'" ') # Låter dig kontrollera systemtolkningen, inklusive captialization aiy.audio.say (' I guess you said ',) aiy.audio.say (text,) # akustisk verifiering Text_up = text.upper () # överför allt till stora bokstäver (Text_up) Text_Len = len (Text_up) print (Text_Len) för i i intervall (Text_Len): Lett = Text_up # Välj en enda bokstav, som börjar med första, dvs [0] print ("Letter =", Lett) Lett_B = Braille_6A [Lett] # Plockar motsvarande kod från ordbok. Ett tecken som saknas kommer att bryta koden! print (Lett_B) if ("1" i Lett_B): print ("LED 1") led_1.on () # aktiverar LED vid servo0 "om" 2 "i Lett_B: print (" LED 2 ") led_2.on () om "3" i Lett_B: print ("LED 3") led_3.on () if "4" i Lett_B: print ("LED 4") led_4.on () if "5" i Lett_B: print ("LED 5 ") led_5.on () om" 6 "i Lett_B: print (" LED 6 ") led_6.on () sleep (1) # visningsmönster för en andra utskrift () led_1.off () # inaktivera alla lysdioder på servos0 -5n led_2.off () led_3.off () led_4.off () led_5.off () led_6.off () sömn (0,3) # en kort mörk paus, för att ange slutet på bokstaven om _namn_ == '_ huvud_ ': main ()

Steg 4: Outlook och anmärkningar

Så vad kan vara nästa?

Förutom det meta-skämtet med AIY-videosatsen eller ett annat automatiskt bildigenkänningssystem som nämns i inledningen, kan det finnas andra alternativ för att utöka konceptet som beskrivs i denna instruerbara. Några av dem kan till och med vara till verklig användning. Dessa kan vara:

- förbättrad programmering, så att texten överförs till standard punktskriftskod, med alla markeringar och komprimeringar. Det borde inte vara mycket ansträngningar för en skicklig pythonprogrammerare, vilket jag inte är, så all hjälp skulle vara välkommen.

- utöka systemet till en 2x4 -matris. Bör också vara möjligt och skulle hjälpa till att använda motsvarande 8-punkts punktskriftskoder, som används av elektroniska punktskriftsskärmar. Ovanför detta skulle det vara lite närmare Dearheart -klacksystemet.

- konstruera en riktig 2x3 eller 2x4 punktskriftskärm. Bör vara möjligt med antingen en uppsättning servon eller en uppsättning 5V minisolenoider. Den främsta utmaningen skulle vara att standardavståndet mellan taktila punkter är 2,45 mm, eller 1/10 tum, på elektroniska displayer, så vissa växlar och mekanik kan behövas. Den andra utmaningen kan vara att exakt reglera trycklängden.

En sådan enkel och billig lösning kan vara av intresse för en större allmänhet, eftersom kommersiella punktskriftskärmar är ganska dyra. Det kan vara en fördel för blindskriftselever som använder ett sådant röststyrt system. Eftersom de verbalt kan skriva in en (engelsk) mening efter eget val och få texten, bokstäverna och tecknen som visas på fingrarna.

- konstruera ett mekaniskt slutarsystem som liknar Murray- eller Dearheart -systemen. Att använda servon bör inte vara för komplicerat och kan beskrivas i en annan instruerbar. Eller kan vara ett trevligt skolprojekt. Någon intresserad?

–――――

Några kommentarer och länkar av intresse:

- Det finns en instruerbar beskrivning av en "DIY semaforlykta", en 2x4 LED -matris, baserad på någon Propeller -demokort. Jag gillar layouten, men programmeringen ser lite komplicerad ut för mig. Var snäll och titta själv.

- Jag hittade nu ett pythonprogram för att generera Fully Contracted (Grade 2) punktskrift. Tyvärr är den begränsad till python 2 och den amerikanska engelska versionen 2002:

- ett mer komplett program verkar vara liblouis, https://github.com/liblouis/liblouis, men jag har ingen aning om hur jag ska integrera detta i den här lösningen.

- en intressant pythonlösning verkar komma från Grekland, https://github.com/ant0nisk/pybrl kan integrera flera språk och generera punkt 2 -punktskrift.

- Jag är varken en programmerare, eller en elektronikkille, och jag hade inte så mycket kunskap om punktskrift för några dagar sedan.

Så om du ser några fel, utelämnanden eller om du har några idéer för projektet, vänligen meddela mig.

- Om du gillar det här instruerbart, vänligen rösta på det!

Rekommenderad: