Koneeni on Strix Halo eli kansanmukaisemmin AMD Ryzen Ai Max+ 395, joten konetehoja puheentunnistukseen pitäisi olla riittävästi. KenLM-mallin käyttö kuitenkin lisää vaatimuksia aika paljon.
Common Voice 23 - aineiston testauksen kestosta saa hyvät arviot. Aineisto kestää 2:34 kun taas ajo large-mallin Whisperillä kestää 0:40. KenLM-mallilla ajo vie 1:45. Tästä voi suoraan laskea että normaali-Whisperillä kuormitus on 26% kun taas KenLM-mallilla selkeästi lähempänä rajoja eli 68%.
Common Voicessa keskimääräinen kesto yhdellä lauseella Whisperillä oli 1,3s kun taas KenLM:llä 3,4s. Tuo jälkimmäinen luku onkin sitten se oleellisin kun käytetään Whisper Onlinea, jossa puheentunnistukseen syötetään jatkuvasti uutta puhetta, jota puheentunnistin askel askeleelta käy läpi syntyvää puhetta ja perusajatuksena on että kun puhe päättyy, suurin osa puheesta olisi jo käsitelty.
Joka tapauksessa koodissa on nyt 2 sekunnin puheenpäättymisen tunnistus eli kun tulee hiljaista 2s, tulkitaan se puheen loppumiseksi. Jokaiseen komentoon tulee siis aina automaattisesti se kahden sekunnin viive, koska pitää olla varma ettei komento jatku.
Kun yhdistin KenLM:n koodin Whisper Onlineen, ongelma tulikin nopeasti selväksi. Alkuperäinen koodi vei aina sekunnin pätkiä, joista Whisper onnistui pääsääntöisesti selviämään siinä sekunnissa. KenLM-mallin kanssa jokainen tuotu sekunnin pätkä vei aikaa vähintään sen 3,4s ja kummallakin puheentunnistuksella kesto lisääntyi kun syntyneen tekstin määrä kasvoi. Puhepuskuri tyhjennetään kokonaan vasta noin 20s jälkeen, joten vasta silloin puheentunnistus palautuu alkuperäisen tehokkaaksi.
Kun jokainen sekunnin pätkän käsittely kestikin yli sen 3,4s, se tarkoitti että puhetta kertyi jatkuvasti jonoon. Ensimmäisissä testeissä 7s puheen käsittely kesti puoli minuuttia! Joten ensimmäinen korjaus oli muuttaa koodia niin että kun aiemmin odotettiin että sekunti puhetta tuli täyteen, nyt ei enää oletettu että pitää odottaa, vaan voidaan olla jo jäljessä jolloin käsittelyyn otetaan kaikki se mikä on jo syntynyt. Se tiputti KenLMn viiveet, mutta viivettä silti oli. Toisaalta kävi myös testauksissa ilmi että normi-Whisperkin pitemmällä tekstillä ei pysy perässä, joten koodimuutos auttoi siihenkin. Kaaviossa on kuinka paljon puheentunnistusta piti odottaa jo sen 2s päättymisviiveen jälkeen ylimääräistä eri versioilla. Puhtain paperein selvisi vain Whisper uudella koodiversiolla.
Yksi parannusvaihtoehto on tunnistaa jo ennalta milloin 2s viive alkaa, jolloin
voidaan heti aloittaa loppujen ajo, mutta siinäkin tapauksessa
huonoimmassa vaihtoehdosssa edellinen tunnistus on alkanut juuri ennen
taukoa, eli käynnissä ja sitten vielä loppujen tunnistus,
jolloin ne voivat kestää yhteensä jo 11s eli 9s
ylimääräistä viivettä.
Ensin minun pitäisi siis selvittää miten teknisesti KenLm-koodi Whisperin kanssa toimii ja mistä tuo vakio 3,4s tulee. Tällä hetkellä sen selvittäminen pitää siirtää tulevaisuuteen, koska tiedän että teknisesti se tulisi olemaan haastava homma.
Nykyisellä koodilla KenLM-mallilla syntyy vain vielä ylimääräistä viivettä liikaa, jotta kotiautomation ohjaus toimisi sutjakkaasti.
Comments
Post a Comment