Waaroor ons praat as ons oor spraak praat
Nadat ek die outomatiese vertaling van al my artikels in verskillende tale ingestel het, het ek begin nadink oor die volgende moderne en nuttige funksie wat ek kan implementeer. Aangesien u absoluut saamstem dat die lees van my berigte een van die aangenaamste ervarings is, het ek gedink dat die gebruik van 'n outomatiese spraaksintesediens die artikel UX nog meer kan verbeter. Daarom was die plan eenvoudig: ek sal 'n nuwe handeling byvoeg aan die begin van 'n artikelteks waarmee gebruikers daarna kan luister via die blaaier se klankspeler.
Hoe om: spraaksintese
Nadat ek die argitektuur van die huidige app bekyk het, is die volgende werkstroom geïmplementeer om die PWA met outomatiese spraaksintese en 'n klankspeler te verbeter:
- implementering van die sintese via GCP se teks-na-spraak-diens met behulp van die (veel) pricer WaveNet-opsie in plaas van die standaard een
- stoor die gemaakte mp3-lêer in Firebase Storage, 'n eenvoudige lêerstelsel wat ook in GCP aangebied word; die naam van die lêer bestaan uit die artikel se slak en die gebruikte plek, wat my 'n implisiete ID gee en die toevoeging van 'n aparte dokument vermy wat verwys na al die URL's vir 'n gegewe toespraak
- dan bel ek die twee stappe hierbo op die Vercel-bediener wanneer ek 'n artikelbladsy skep of opdateer, wat tans maksimum elke 24 uur plaasvind
- gebruik lui laai vir die webspeler as 'n klank-URL beskikbaar is
Lui wees is belangrik
Ek wil nie die laai-prestasie van my webtoepassings benadeel nie (en gevolglik die posisie van die soekenjins), en daarom word die webspeler op aanvraag gelaai slegs nadat aan twee voorwaardes voldoen is:
- Daar is eintlik 'n klank-URL vir die artikel beskikbaar, wat tans slegs van toepassing is op Engelse tekste om die koste hoofsaaklik te verlaag
- 'N Gebruiker klik op die speelknop om aan te dui dat hy na die voorgeleesde artikel wil luister
Waarom nie alle tale (vir nou) nie?
Weens die gebruik van Google se WaveNet as die werklike spraaksintese-model, moet ek die koste vir hierdie funksie as 'n belangrike punt beskou. WaveNet-gebruik kos vier keer die standaard sintesemodel. Tog het ek dit gekies aangesien WaveNet baie beter presteer as die meeste ander modelle, nie net van Google self nie, maar ook van IBM, byvoorbeeld.
Net die begin
Dit was 'n vinnige oorsig van hoe ek spraaksintese in 'n eerste weergawe vir hierdie PWA geïmplementeer het. Die tyd om te kodeer het slegs 'n paar uur geduur, want ek het al die meeste opstelling laat doen deur 'n GCP-klant te wees. Die gegenereerde uitvoer klink ongelooflik goed, wat die sterk punte van WaveNet en ML-gebaseerde benaderings tot spraak sowel as tekshantering toon. 'N Toekomstige implementering kan voorgelees word vir alle ondersteunde tale. Op grond van die gebruik en koste in die komende maande, sal ek bepaal hoe u in hierdie geval moet voortgaan.
Tom