BabyTalk gir ESP32 fri talegjenkjenning uten nett, 2 sekunder tale på 0,51 sekunder
lørdag 10. oktober · KI-generert · Kilde: GitHub
Flash BabyTalk på en ESP32-S3 med 16 MB flash og 8 MB PSRAM hvis du vil ha fri talegjenkjenning på engelsk uten internett og uten fast kommandoliste.
0,51 sekunder bruker en ESP32-S3 på å transkribere 2 sekunder tale med BabyTalk, ifølge prosjektets README på GitHub. Biblioteket er laget av Thomas Lackner sammen med Claude Opus 5.5, og kjører NVIDIAs talemodell Citrinet-256 komprimert til 4 bit rett fra flash. En nevral stemme for tekst til tale kan legges på i samme firmware, og alt kalles fra C, MicroPython eller Erlang/Elixir på AtomVM. Lackner viste det fram som Show HN 9. oktober.
De fleste taleprosjekter på ESP32 sender lyden til en skytjeneste, eller kjenner bare igjen en forhåndstrent kommandoliste som Espressifs MultiNet. BabyTalk transkriberer vilkårlige setninger, og vekkeordet er en hvilken som helst frase du skriver inn, uten trening.
«Jeg har lekt med mange enheter til 20 dollar uten tastatur eller skjerm.» — Thomas Lackner, på Hacker News
Farten kommer fra MMRT, en egen inferensmotor. Espressifs ESP-DL brukte 1,33 sekunder per sekund lyd fordi den leste vektene fra flash på nytt for hvert lydframe. MMRT kopierer vektene til intern RAM én gang per lag, fordeler arbeidet på begge kjernene og bruker håndskrevet assembly for vektorinstruksjonene i S3-brikken. Ifølge Lackner er den rundt 13 ganger raskere enn ESP-DL, med identisk output.
Prisen er presisjon. 4-bitsmodellen bommer på 8,2 prosent av ordene på ren opplest engelsk, mot 3,8 prosent for fullpresisjonsmodellen. I opptak med musikk eller motorstøy i bakgrunnen er feilraten 58,1 prosent, og den støytilpassede varianten kutter den til 42,7 prosent på bekostning av ren tale. Det finnes bare engelsk, transkripsjonen starter først når du slutter å snakke, og under MicroPython kan talegjenkjenningen ikke kjøre mens WiFi er på. Koden er MIT-lisensiert, men firmware med tekst til tale bør ifølge README behandles som GPL-3.0, fordi tre filer fra sanoTTS mangler egen lisens.
Hva bør du gjøre?
- Skaff et ESP32-S3-kort med 16 MB flash og 8 MB PSRAM, for eksempel en N16R8-modul. Waveshare ESP32-S3-CAM er referansekortet alle målingene er gjort på.
- Velg AtomVM-firmwaren hvis enheten trenger WiFi samtidig, siden den holder rundt 42 KB intern RAM ledig med WiFi oppe.
- Bruk støymodellen bare der kortet faktisk skal lytte i bråk, og hold deg til standardmodellen ved skrivebordet.