Amiről beszélünk, amikor beszédről beszélünk
Miután beállítottam összes cikkem automatikus fordítását különféle más nyelvekre, elkezdtem gondolkodni azon, hogy milyen következő modern és hasznos funkciót tudnék megvalósítani. Mivel teljesen egyet fog érteni abban, hogy a bejegyzéseim elolvasása az egyik legörömtelibb élmény, úgy gondoltam, hogy egy automatikus beszédszintézis szolgáltatás még tovább javíthatja az UX cikket. Ezért a terv egyszerű volt: a cikk szövege elejére új műveletet fűzök, amely lehetővé teszi a felhasználók számára, hogy a böngésző audiolejátszóján keresztül meghallgassák.
Hogyan: beszédszintézis
Miután megnéztem az aktuális alkalmazás architektúráját, a következő munkafolyamatot valósítottuk meg a PWA javítására automatikus beszédszintézissel és audio lejátszóval:
- a szintézis megvalósítása a GCP szöveg-beszéd-szolgáltatásán keresztül a (sok) pricer WaveNet opció használatával a szokásos helyett
- a létrehozott mp3 fájl tárolása a Firebase Storage alkalmazásban, egy egyszerű fájlrendszer, amelyet a GCP is tárol; a fájl neve a cikk slugjából és a használt területi beállításokból áll, ami implicit azonosítót ad nekem, és elkerüli egy külön dokumentum hozzáadását, amely hivatkozást tart az adott beszéd összes URL-jére
- akkor a fenti két lépést a Vercel szerveren hívom meg egy cikkoldal létrehozásakor vagy frissítésekor, ami jelenleg legfeljebb 24 óránként történik
- lusta betöltés a weblejátszó számára, ha audio URL áll rendelkezésre
Fontos, hogy lusta legyen
Nem akarom bántani a webalkalmazásaim betöltési teljesítményét (és ennek következtében a keresőmotorok rangsorolását), ezért a weblejátszót csak két feltétel teljesülése esetén lehet igény szerint betölteni:
- A cikkhez valóban rendelkezésre áll egy audio URL, amely jelenleg csak az angol nyelvű szövegekre vonatkozik, elsősorban a költségek csökkentése érdekében
- A felhasználó rákattint a lejátszás gombra, jelezve, hogy valóban fel akarja hallgatni a felolvasott cikket
Miért nem minden nyelv (egyelőre)?
A Google WaveNet-jének tényleges beszédszintézis modelljeként történő felhasználása miatt ennek a szolgáltatásnak a költségeit kell fő szempontnak tekintenem. A WaveNet használata a szokásos szintézis modell négyszeresébe kerül. Mégis úgy döntöttem, hogy a WaveNet jelentősen felülmúlja a legtöbb más modellt, nemcsak a Google-től, de például az IBM-től is.
Csak a kezdet
Ez egy gyors áttekintés volt arról, hogyan valósítottam meg a beszédszintézist ennek a PWA-nak az első verziójában. A kódolás ideje csak néhány órát vett igénybe, mivel a beállítások nagy részét már GCP-ügyfélként végeztem el. A generált kimenet hihetetlenül jól hangzik, ami megmutatja a WaveNet és az ML-alapú beszéd-megközelítés erősségeit, valamint a szövegkezelést. Egy későbbi megvalósítás hozzáadhatja a felolvasást az összes támogatott nyelvhez. Az elkövetkező hónapok felhasználása és költségei alapján meghatározom, hogyan tovább ebben az esetben.
Tom