Visi projektai

Voice

macOS meniu juostos diktavimas su vietiniu Whisper — kalba į tekstą bet kur, įrenginyje.

SwiftWhispermacOS
WebEdge Voice logotipasDev-story
01

Iššūkis

OS ar debesų diktavimas siunčia balsą už įrenginio ribų ir dažnai nepataiko techninių terminų; norėjome greito, privataus diktavimo bet kurioje programoje.

02

Ką darėme

WebEdge Voice — Swift macOS meniu juostos programa, paleidžianti Whisper vietoje: pasirenki mikrofoną ir kalbą, paspaudi spartųjį klavišą diktuoti, o transkribuotas tekstas įterpiamas ten, kur rašai — niekas nesiunčiama į serverį.

03

Rezultatas

Kalba į tekstą bet kur Mac'e, įrenginyje ir privačiai, su kalbos bei mikrofono nustatymais tiesiai iš meniu juostos.

Dev-story straipsnis

Kaip buvo kuriamas projektas: Voice

Debesijos diktavimas greitas, bet siunčia jūsų balsą už kompiuterio ribų; vietinis diktavimas išlaiko privatumą, bet dažniausiai būna toks lėtas, kad atrodo sugedęs. Ši programa renkasi antrąjį kelią ir atsisako lėtumo: paspaudžiate spartųjį klavišą, kalbate, ir transkripcija atsiranda tame lauke, kuris yra aktyvus, o Whisper dekodavimą atlieka tame pačiame Mac. Didžioji inžinerijos dalis yra ne pati transkripcija, o milisekundės aplink ją ir macOS mechanizmas, leidžiantis įklijuotam tekstui pasiekti kitas programas.

Skyriai

05

Moduliai

05

Stackas

Swift + Whisper

01

Kodėl projektas atsirado

OS ar debesų diktavimas siunčia balsą už įrenginio ribų ir dažnai nepataiko techninių terminų; norėjome greito, privataus diktavimo bet kurioje programoje.

Debesijos diktavimas greitas, bet siunčia jūsų balsą už kompiuterio ribų; vietinis diktavimas išlaiko privatumą, bet dažniausiai būna toks lėtas, kad atrodo sugedęs. Ši programa renkasi antrąjį kelią ir atsisako lėtumo: paspaudžiate spartųjį klavišą, kalbate, ir transkripcija atsiranda tame lauke, kuris yra aktyvus, o Whisper dekodavimą atlieka tame pačiame Mac. Didžioji inžinerijos dalis yra ne pati transkripcija, o milisekundės aplink ją ir macOS mechanizmas, leidžiantis įklijuotam tekstui pasiekti kitas programas.

02

Ką sukūrėme

WebEdge Voice — Swift macOS meniu juostos programa, paleidžianti Whisper vietoje: pasirenki mikrofoną ir kalbą, paspaudi spartųjį klavišą diktuoti, o transkribuotas tekstas įterpiamas ten, kur rašai — niekas nesiunčiama į serverį.

macOS 14+ meniu juostos diktavimo programa Apple Silicon procesoriams, sukurta ant whisper.cpp su Metal, paleidžiama Ctrl+Shift+Space. Whisper modelis nėra įtrauktas - jį pasirenkate pirmą kartą paleidę kaip atskirą ~1,6 GB atsisiuntimą - ir viskas nuo mikrofono įrašymo iki dekodavimo ir įterpimo veikia vietoje. Ji pateikiama sąmoningai tik rusų kalbai, o ne apsimeta aptarnaujanti kalbas, kurias modelis transkribuoja prastai.

03

Pagrindiniai moduliai ir vartotojo kelias

M01

Įšildantis dekodavimas paleidžiant: pirmasis diktavimas kainuodavo 407 ms kuriant Metal konvejerius ir skaičiavimo grafą, todėl vienos sekundės tylus dekodavimas paleidimo užduotyje perkelia šią kainą nuo pirmųjų vartotojo žodžių, sumažindamas pirmąjį diktavimą iki ~104 ms.

M02

Įklijavimo kelio atblokavimas: insertText du kartus miegojo pagrindinėje gijoje (~56 ms realios kainos); iškarpinės atkūrimas perkeltas į asyncAfter su changeCount apsauga, kad antras diktavimas neužterštų pirmojo, ir įklijavimas dabar trunka 1-6 ms.

M03

Prieinamumo leidimo pasirašymo istorija: macOS susieja Prieinamumo leidimą su programos kodo pasirašymo identifikatoriumi ir cdhash, todėl ad-hoc pasirašytos naujos versijos atrodė kaip nauja programa ir kaskart prarasdavo leidimą - išspręsta persignuojant fiksuotu identifikatoriumi ir stabiliu savarankiškai pasirašytu vietiniu sertifikatu, kuris susieja reikalavimą su sertifikatu, o ne su kintančiu dvejetainiu failu.

M04

Haliucinacijų ir tuščio srauto filtravimas: atmesti mikrofono srautus, kurie yra vien nulinė tyla, prieš dekodavimą, pritaikyti audioCtx ir žetonų ribas prie klipo ilgio, kad būtų sustabdytas ilgų klipų nukirpimas ir kartojimosi kilpos, ir po dekodavimo pašalinti žinomus subtitrų korpuso artefaktus (patikrinta 53/53 pagauti, nulis klaidingų teigiamų per 2439 įrašus).

M05

Pasirinktinis Silero VAD, pagal nutylėjimą išjungtas ir sąžiningas dėl to: bevertis trumpiems klipams, kuriems programa skirta (~2 ms sutaupoma), bet ilgo diktavimo metu jis pašalina tylą, kad klipas vėl tilptų į Whisper 30 s langą ir perpus sumažintų enkoderio praėjimus - 92 s įrašas nuo dviejų praėjimų sumažėjo iki vieno.

04

Architektūra ir technologiniai sprendimai

Sukurta su Swift, Whisper, macOS.

Swift su ranka atkurtu tiltu į whisper.cpp (pririštą prie v1.9.1), veikiantį ant Metal, tik Apple Silicon, su teksto įterpimu per Prieinamumo API ir iškarpinę; run.sh tvarko vietinį savarankiško pasirašymo kelią, o notarizuoto DMG leidimo scenarijai skirti platinimui.

05

Rezultatas ir pamokos

Kalba į tekstą bet kur Mac'e, įrenginyje ir privačiai, su kalbos bei mikrofono nustatymais tiesiai iš meniu juostos.

Privatus, vietoje veikiantis diktavimo įrankis, kuriame pats Whisper trunka ~90 ms nuo pradžios iki pabaigos, o kelias nuo paspaudimo iki įklijavimo atrodo momentinis - sąžiningai vienas kompiuteris, vienas modelis, viena kalba, o ne užmaskuota debesijos paslauga.

Toliau skaityti

Šie projektai turi artimų technologinių arba produkto sprendimų, todėl padeda matyti, kaip tas pats principas veikia kitame kontekste.

Turite panašią idėją?

Aptarti projektą