Building Vaani (वाणी) - Minimalna, privatna, univerzalna aplikacija za stol za govor u tekst
Prije nekoliko dana, religiozno sam gledao najnoviji video od Andrej Karpathy gdje je uveo Vibe Coding.
Već neko vrijeme koristim pomoćnike kodiranja AI-a, ali još uvijek sam vrlo uključen u proces kodiranja. AI uglavnom djeluje kao pametno automatsko dopunjavanje, preuzimajući dosadne stvari na bojlerplate, pisanje dokstringa ili povremeno objašnjavajući kod koji sam jučer napisao i prikladno zaboravio. kodiranje Vibe zvučalo je više kao što je diplomiranje od autocomplete do stvarnog suotvorenja - promjena od AI-a kao asistenta do AI-a kao stvarnog partnera kodiranja.
Intrigiran ovom potencijalnom promjenom paradigme, odlučio sam to iskusiti iz prve ruke. U istom videu, Andrej je podijelio da on koristi glas kao primarni unos otprilike 50% vremena jer je to intuitivnije i učinkovitije. On je predložio neke opcije za Mac koji djeluju kao univerzalni govor-to-tekst alat koji radi preko više aplikacija. Ja uglavnom radim na Windowsu za interakciju s aplikacijama i Linuxom preko zapovjedne linije.Voice Accessšto je super sporo), odlučio sam izgraditi jedan za sebe. imala sam nekoliko drugih potencijalnih ideja, ali se dogovorila za ovo kao što sam htjela izgraditi
- Svijet
- Programski jezik koji dobro poznajem - Python Svijet
- nešto s čime sam konceptualno nepoznat - snimanje i obrada zvuka, prirodni UI Svijet
- alat koji bih stvarno koristio, a ne samo igračka Svijet
- nešto korisno za zajednicu koju mogu otvoriti Svijet
- Naučite nešto novo na putu Svijet
Cilj -Izgradite minimalnu, privatnu, univerzalnu govorno-tekstnu desktop aplikaciju
- Svijet
- Minimalno - čini jednu stvar stvarno dobro - govor do teksta Svijet
- Privatno - ništa ne napušta moju mašinu, sve offline Svijet
- Universal - Trebalo bi raditi s bilo kojom Windows aplikacijom Svijet
- Krstarenje - dobro je imati Svijet
Ja to zovemVanić (वाणी), što znači "govor" ili "glas" uSanskrit. u
VanićSanskrit
GitHub
https://github.com/webstruck/vaani-speech-to-text
instalacija
pip install vaani-speech-to-text
Demo
Ovaj članak kronizira putovanje građevineVaaniTo je praktično istraživanje onoga što vibe kodiranje zapravo osjeća - uzbudljivu brzinu, neočekivane blokade, trenutke istinskog uvida i lekcije naučene kada intenzivno surađujete s AI-om.Claude Sonnet 3.7, najbolji (ponovo, na temelju opće vibe) dostupni pomoćnik kodiranja u to vrijeme.Sljedeći članakGoogle Gemini 2.5 ProBio je objavljen i odlučio sam ga koristiti kao preglednik koda.
BTW, ovaj članak je uglavnom diktiran korištenjemVaani😊
Idemo na vibe.
Nastava
AI DeveloperClaude Sonnet 3.7
AI Code ReviewerPrethodni članak: Gemini 2.5 Pro Preview 03-25
AI Developer i AI Code Reviewer uvijek su imali potpuni kod kao kontekst za svaki poziv. Počeo sam novi razgovor kada se postigne određeni cilj, npr. pogreška je popravljena ili funkcija je implementirana i radi uspješno.Predsjednik DesktopiGoogle AI studijTakođer sam izbjegao bilo kakve ručne promjene koda s namjerom da oslobodim kôd otvorenog koda za reviziju zajednice.
The Initial Spark: Od nule do Scaffolding u sekundi
Dakle, gdje da počnemo? Tradicionalno, to uključuje meticulo planiranje. Na primjer, oslikavanje komponenti, dizajniranje sučelja, odabir knjižnica i postavljanje strukture projekta. Umjesto toga, odlučio sam početi s lijenim pozivom kao što je prikazano u nastavku.
SvijetŽelim izgraditi laganu govornu aplikaciju za tekst u Pythonu za korisnike sustava Windows. Ideja je pomoći korisnicima sustava Windows da brzo pišu stvari pomoću glasa u bilo kojoj aplikaciji npr. riječ, powerpoint, preglednik itd. Aplikacija bi trebala raditi lokalno bez interneta za privatnost.
Svijet
I want to build a lightweight speech to text app in Python for Windows users. The idea is to help Windows users write things quickly using voice in any application e.g. word, powerpoint, browser etc. The app should work locally without the internet for privacy. Should activate using hot key or hot word.
i vjeru u njezinu vjeru,Claude Sonnet 3.7To je generirao sveobuhvatnu strukturu aplikacije gotovo odmah, kompletna s:
- Svijet
- Integriranje tray sustava pomoću Tkintera Svijet
- Globalno otkrivanje ključeva pomoću tipkovnice Svijet
- Indikator vizualne povratne informacije Svijet
- Nastavak upornosti UI
- Govor u tekst pomoću voska Svijet
- Osnovni audio menadžer Svijet
- Glavna ulazna točka Svijet
- Pakiranje pomoću Pyinstaller Svijet
Početna faza savršeno je uhvatila privlačnost kodiranja vibe: zaobilazeći satima dizajna i temeljnog kodiranja, krećući se izravno od ideje do opipljivog (iako buggy) aplikacijskog skeletona.
Sljedeći članakRiding the Waves: The Core Iteration Loop
S osnovnim komponentama na mjestu, pravi razvoj je započeo uspostavljanjem posebnog ritma - ključni krug kodiranja vibe pomoću AI-a:
- Svijet
- Zahtjev za značajke / izvješće o pogreškama: Opisao bih željenu značajku ("Dajemo detekciju vrućih riječi") ili prijavio problem ("Rezultati transkripcije se ne pojavljuju!"). Često izvješća o pogreškama uključuju dnevnike pogrešaka ili screenshots.
- Generacija AI koda: AI bi obrađivao zahtjev i generirao snipete koda, ponekad mijenjajući postojeće funkcije, ponekad dodajući potpuno nove module. Svijet
- Integracija i testiranje: Integrirao bih kod AI-a u aplikaciju i ručno testirao funkcionalnost. Svijet
- Ako ne (što je često!), Vratio bih se na korak 1, pružajući više specifičnih detalja o pogrešci ili opisivanjem neželjenog ponašanja. Svijet
Ovaj krug je bio nevjerojatno brz, ali i teškoReaktivniNismo slijedili veliki dizajn; mi smo navigaciju kroz vid, popravljajući samo probleme.NakonKljučni izazovi pojavili su se brzo:
- Svijet
- Callback Conundrums: početni pokušaji povezivanja različitih dijelova aplikacije (kao što je audio ulaz u transkripcijski motor) jednostavno nisu uspjeli ispravno komunicirati. Svijet
- Integracija zadataka u pozadini (kao što je kontinuirana obrada zvuka) s UI-om dovela je do "klasičnih" problema istovremenosti - neuspjeha ili zavjesa povezanih s pristupom zajedničkim resursima ili ažuriranjem UI-a iz pogrešne niti. Svijet
- UI State Persistence: Dobivanje prozora postavki za pouzdano čuvanje i učitavanje korisničkih preferencija pokazalo se iznenađujuće teško. Svijet
- Kontinuirano obrađivanje govora: Kada je zatraženo da se izgradi kontinuirani sustav za obradu govora, AI je došao s prekomjerno sofisticiranim rješenjem koje je uključivalo kontinuirano hvatanje, raspodjelu segmenta, paralelnu obradu, uredno umetanje, kontekstnu svijest i tako dalje. Svijet
Ova faza je istaknula sirovu moć AI-a za iteraciju, ali i potencijalni haos debugging koda generiranog od strane drugog entiteta, oslanjajući se na AI da popravi vlastite pogreške na temelju vaših promatranja.
"Čekaj, zašto to radimo?" - ključne stvari i potrebne provjere stvarnosti
dokClaudePokazao je impresivne sposobnosti kodiranja, dobivajući većinu stvari ispravno na prvi potez, nije bio neometan.KlodovaNeki prijedloziClaudeČini se da je želio prekomjerno inženjerizirati rješenja, čineći ih iznimno složenima u pokušaju da ih učine generičkim.ClaudePredložio je sofisticiranu klasu buffiranja podataka. Djelovao je, ali se osjećao prekomjerno složenim. Kada sam dovodio u pitanje potrebu za ovom složenosti, to je priznao i mi smo se okrenuli mnogo jednostavnijoj izravnoj provedbi otkrivanjem prirodnih pauza.
Drugi primjer bio je kada smo implementirali audio kalibraciju i nastavili (nakon što je Gemini ispravno ukazao na problem učinkovitosti) u postavkama.ClaudePrvo je predloženo pohranjivanje postavki kalibracijepo uređaju, ali obvezan s jednostavnijim rješenjem: samo recalibrate ako se ulazni uređaj mijenja.Opet, uzimajući u obzir praktični kontekst uporabe (većina korisnika vjerojatno neće često mijenjati ulazne uređaje), odabir da nastavi audio kalibraciju za samo 1 uređaj je imao smisla.
Ovi trenuci naglašavaju da učinkovito kodiranje vibe nije pasivno prihvaćanje; to je aktivan dijalog u kojem programer vodi, postavlja pitanja, a ponekad i ispravlja trajektoriju AI-a.Svijet
SvijetOvi trenuci naglašavaju da učinkovito kodiranje vibe nije pasivno prihvaćanje; to je aktivan dijalog u kojem programer vodi, postavlja pitanja, a ponekad i ispravlja trajektoriju AI-a.
Svijet
Ovi trenuci naglašavaju da učinkovito kodiranje vibe nije pasivno prihvaćanje; to je aktivan dijalog u kojem programer vodi, postavlja pitanja, a ponekad i ispravlja trajektoriju AI-a.
Definicija "Vibe": Kako je Vaani utjelovio ovaj pristup
Razmišljajući oVaaniRazvojno putovanje, pokazalo je glavne karakteristike koje su često povezane s kodiranjem vibe:
- Svijet
- Minimalna prethodna specifikacija: Počelo s ciljem, a ne detaljnim planom. Svijet
- AI kao primarni implementator: AI je napisao ogromnu većinu početnog koda i naknadnih značajki / popravaka. Svijet
- Prefinjenosti utemeljene na intuiciji: Promjene su često bile pokrenute subjektivnim testiranjem ("kvalitet se osjeća loše", "elemenat UI bi trebao biti pokretljiv") umjesto formalnih zahtjeva. Svijet
- Novi dizajn: Arhitektura i funkcije aplikacije evoluirale su organski i reaktivno, na primjer, pojednostavljivanje osnovne audio cjevovode i dodavanje simultane kontrole kasnije ili zamjena Tkintera s PySide6 za pojednostavnjenje i moderni izgled. Svijet
- Debugging delegacija: Moja uloga u ispravljanju bugova često je bila prijavljivanje simptoma točno tako da AI može generirati lijek. Svijet
To se dobro slaže s trenutnom raspravom o definiciji vibe kodiranja svojom brzinom, ovisnošću o prirodnom jeziku, a ponekad i manjim stupnjem razmatranja programera.SpektardokVaaniPočevši blizu kraja "čiste vibe", projekt se prirodno pomaknuo prema više strukture (zahtijevajući modularizaciju i preglede koda) kako je sazreo i približio se oslobađanju.
Beyond the Hype: Noveljski uvid iz trenča
Rad tako blisko s AI-om na potpunom projektu donio je uvid koji prelazi tipičnu narativ "AI je brz, ali čini pogreške".
- Svijet
- AI ima tendenciju pretjeranog inženjeringa: Ponekad je prvo rješenje AI-a bilo složenije nego što je potrebno (npr. početna arhitektura, buffiranje teksta, rukovanje konfiguracijama). Svijet
- Razvijatelj kao esencijalni filter i validator: Ovo nije bilo samo pasivno kodiranje. Moja se uloga razvila u ulogu kritičnog validatora, provjeritelja stvarnosti i filtera složenosti. Upitanje AI-a zašto je ova arhitektura bila važna kao i traženje novih značajki. Svijet
- Neizbježna promjena u smjeru strukture: Pure vibe kodiranje je projekt izvuklo iz zemlje nevjerojatno brzo. Međutim, da bi Vaani bio održiv i spreman za izdavanje (osobito za open source) bila je potrebna svjesna promjena. Izričito traženje modularizacije, analiza kvalitete koda i refaktoring postali su ključni u kasnijim fazama. Vibe kodiranje može biti korak jedan, ali tradicionalni inženjerski principi još uvijek su potrebni za robusni softver koji se može održavati. Svijet
- Implicitno učenje vs. duboko razumijevanje: Mnogo sam naučio debugiranjem koda AI-a. međutim, budući da je AI često pružio ispravke izravno, nisam uvijek trebao postići najdužu razinu razumijevanja zašto su se pojavili određeni složeni problemi (kao što su suptilni uvjeti utrke ili specifične mreže UI-a). Svijet
Dvostruki mač: ponderiranje prednosti i mane
Pros:
- Svijet
- Blazing Speed: Prototyping i početna implementacija značajki su zapanjujuće brži. Svijet
- Rješavanje složenosti: umjetna inteligencija može brzo generirati kod za složene zadatke (integriranje knjižnica, rješavanje konkurentnosti), smanjujući barijeru za ulazak. Svijet
- Boilerplate Buster: Teška postavka i ponavljajući se kod se automatski rješavaju. Svijet
- Prisilno učenje (poput debugiranja): Ispravljanje AI pogrešaka često prisiljava na razumijevanje problemske domene, neizravno potičući učenje. Svijet
Cons:
- Svijet
- Visoki rizik od suptilnih pogrešaka: Brza generacija i reaktivno rješavanje problema lako mogu propustiti prednje slučajeve, uvjete utrke ili dublje logičke pogreške. Svijet
- Potencijali za lošu arhitekturu: početni dizajnerski izbori AI-a mogu biti suboptimalni ili prekomjerno složeni ako ih programer ne ocijeni kritički. Svijet
- Teški ciklusi debugiranja: Ispravljanje koda koji niste napisali, pogotovo kada se AI bori s temeljnim problemom (kao što je složeno stanje ili istodobno), može biti frustrirajuće i vremenski zahtjevno. Svijet
- Zabrinutosti o održivosti: Organski uzgojeni, AI generirani kod može postati zbunjen i teško razumjeti bez namjernog preoblikovanja i strukturiranja. Svijet
- Potencijal erozije vještina: Prekomjerna ovisnost može ometati razvoj temeljnog dizajna, debugiranja, arhitektonskih vještina i, što je najvažnije, ljudske intuicije. Svijet
- Nefunkcionalni zahtjevi Zanemarivanje: Sigurnost, performanse, upravljanje resursima i sveobuhvatno rješavanje problema lako se mogu zanemariti u žurbi za funkcionalnošću. Svijet
Uklanjanje vibracije: preporuke za učinkovitu suradnju
Vibe kodiranje je nesumnjivo moćan alat, ali zahtijeva vještine za učinkovito rukovanje. Ako ste iskusni programer i razmatrate ovaj pristup, ovdje su moje opće preporuke na temelju mog iskustva u izgradnjiVaani.
- Svijet
- Validirajte, ne samo prihvatite: tretirajte AI kod kao nacrt. Upitajte njegove arhitektonske izbore ("Zašto ovaj uzorak? je li prikladan ovdje?"). Svijet
- Djelujte kao filter složenosti: Ako se AI rješenje čini previše složenim ili koristi nejasne obrasce bez dobrog razloga, vratite se. Svijet
- Plan za strukturu: Prepoznajte da će početni prototip s kodiranjem vibe vjerojatno trebati rafiniranje.Budžetno vrijeme za refaktoring – poboljšanje modularnosti, dodavanje jasne dokumentacije (komentari, READMEs) i poboljšanje kvalitete koda prije razmatranja projekta stabilnog ili spremnog za izdavanje. Svijet
- Usredotočite se na razumijevanje: Ne samo kopirajte AI kod. Koristite AI kao učitelja. Kada pruža popravak ili složen komad koda, zamolite ga da objasni razmatranje iza njega. Razumijevanje "zašto" je ključno. Svijet
- Iskorištavanje uspostavljenih alata i praksi: Kako umjetna inteligencija ubrzava iteraciju, održavanje kvalitete softvera postaje još važnije. Prihvaćanje automatiziranog testiranja u ranoj fazi – testovi jedinice i integracije pružaju bitne sigurnosne mreže protiv regresije. Usporedite to s alatima za kvalitetu koda i statičke analize (kao što su linteri i analizatori) kako biste uhvatili bugove, probleme sa stilom i anti-patterne koji mogu promašiti ljude i AI. Svijet
Zaključak: Vibe kodiranje - moćan partner, a ne zamjena
My journey building VaaniPotvrdio je da je AI-pomoćno "vibe kodiranje" više od samo hype. To u osnovi mijenja tijek rada razvoja, nudeći neviđenu brzinu pri prevođenju ideja u funkcionalni kod. To mi je omogućilo, jedan programer, da izgradim prilično složenu aplikaciju u frakciji vremena (~ 15 sati) što bi tradicionalno moglo biti potrebno.
Vanić
Međutim, to nije čarobna čarolija. To je suradnja koja zahtijeva komunikaciju, kritičko razmišljanje i nadzor. AI djeluje kao nevjerojatno brz, pouzdan, ali ponekad prekomjerno entuzijazan asistent. Može generirati složenu logiku u sekundi, ali može propustiti najjednostavnije rješenje ili zanemariti stvarne ograničenja ili praktičnost.
Prava snaga pojavljuje se kada se programer aktivno uključi - usmjerava AI, dovodi u pitanje njegove pretpostavke, potvrđuje njegovu proizvodnju i primjenjuje temeljna načela softverskog inženjeringa. Vibe kodiranje ne zamjenjuje vještine programera; to ga preusmjerava prema arhitekturi, validaciji, učinkovitom promptingu i kritičkoj integraciji. To je uzbudljiv, moćan i ponekad izazovni novi način izgradnje, nudeći uvid u budućnost u kojoj ljudska kreativnost i umjetna inteligencija rade ruku pod ruku, vođeni dobrim inženjerskim presudom.