Tekoäly lukee ääneen WordPressiä

You are currently viewing Tekoäly lukee ääneen WordPressiä

Katiska on koira-aiheinen asiasivusto. Sisällön suhteen tuli kerran pyyntö, että voisivatko artikkelit on audiona. Aika ajoin kun olisi helpompi kuunnella kuin lukea. Tervetuloa podcastien ja äänikirjojen aikakaudella.

Minulla ei ollut sinällään mitään tuota vastaan. Googlehan ei pysty indeksoimaan ääntä, joka on podcastien perusongelma, mutta siitähän nyt ei ollut kyse. Ensin oli sana, ja sanan kylkeen tulisi MP3.

Se saattaisi jopa vaikuttaa saavutettavuuteen, vaikkakin näköongelmaisilla lienee paremmatkin työkalut — tosin en ole ihan varma kuinka hyvin sivustoni sopivat siihen. En ole koskaan pääsyt testaamaan sitä. Kysyin aiheesta kerran näkövammaisilta, mutta en saanut ainuttakaan vastausta. Joten johtopäätökseni oli, että asia ei ole ilmeisesti kovinkaan tärkeä.

Tosin hieman ihmettelin vaitioloa, koska selväkielisen sisällön suhteen sain vinkkejä. Mutta ilmeisesti silloin kysyin asiaa sopivalta aktiivilta.

Kokeilin lukea audioksi omia tekstejäni. Pyöritän monologi-podcasteja, mutta valmiin tekstin lukeminen oli minulle suunnattoman työlästä. Lopputulos oli monotonista virkamieslukemista. En ole todellakaan ääninäyttelijä.

Joten lopetin moisten tuottamisen. Oli sille toinenkin syy: niitä ei kuunneltu. Joten kysyntä ei ollut suurta, ja minulla oli siksi motivaatiopula uhrata elämästäni pari tuntia per artikkeli lukemiseen ja editointiin.

Tuosta on muutama vuosi aikaa. Nyt tuli uudestaan sama pyyntö. Lukemaan en ala vieläkään, mutta tekniikka on muuttunut tässä välissä. Silloin ei ollut tekoälytyökaluja, nyt on.

Tiesin, että (ainakin) OpenAI:lla on mahdollisuus muuttaa teksti puheeksi. Aloin penkomaan sitä vaihtoehtoa ja eteninkin jonkun matkaa. Hidasteeksi nousi OpenAI:n 4096 merkin raja, joka on aika tiukka. Tuohon määrään ei kummoistakaan artikkelia saa mahtumaan — tai ainakaan minä en saa.

Se oli kierrettävissä sillä, että pilkoin tekstit sopiviin lohkoihin, kierrätin ne OpenAI:n kautta ja sitten liimasin MP3-tiedostot taas yhteen. Tipautin samalla hieman bitratea, koska OpenAI tuottaa elvistellessään aivan liian hyvää äänenlaatua tekoälyn puheelle.

Tiedostot tallennan Hetznerin S3:een säästäkseni hieman VPS:n levytilaa.

Gistissä on python-scriptin lopputulos. Joku oikeasti koodaavaa olisi taatusti tehnyt kauniimpaa ja tehokkaampaa, mutta tuokin hoitaa työnsä.

https://gist.github.com/eksiscloud/751218b5576c2f8256abd23db70a2411

Scriptin vaatimat API-tiedot ja hakemistot kerrotaan config.ini tiedostossa, joka on samassa hakemistossa itse scriptin kanssa. Joten kannattanee asentaa nuo vaikka omaan kotihakemistoon ja antaa asetustiedostolle esimerkiksi chmod 600.

[openai]
api_key = sk-proj-<very-long-API>

[s3]
bucket = <very first directory>
access_key = <Hetzner API key>
secret_key = <Hetzner API token>
endpoint_url = https://your-storage.hel1.your-objectstorage.com
folder = <sub directory if in use>

[wordpress]
api_url = https://www.example.com/wp-json/wp/v2
username = User
app_password = TakeSpacesAway
  • WordPressin application password tehdään omassa profiilissa. Se annetaan merkkiryhminä, joten muokkaa tiedostossa välilyönnit pois

Scripti hakee WordPressistä ID:n mukaan tekstin. Siitä siivotaan ylimääräisiä pois. Sitten se pilkotaan sopivan pieniksi lohkoiksi ja lähtetään OpenAI:lle prosessoitavaksi. Palautetut MP3-tiedostot liitetään yhteen, heikennetään bitratea ja siirretään Hetznerille. Lopuksi näytetään Hetznerin URL, jonka saa liitettyä WordPressiin halutulla tavalla. Itse laitan ne podcasteina maailmalle Seriously Simple Podcasting pluginin avustuksella. Joten mediasoitin näkyy aina artikkelin yhteydessä.

Jakke Lehtonen

Teen B2B-markkinoille sisällöntuottoa sekä UX-testauksia. Samaan liittyy myös koulutukset yrityksille ja webmaailman kanssa muutoin painiville. Serverien sielunelämää on joutunut ohessa opettelmaan. Toinen puoli toiminnasta on koirien ravitsemuksen ja ruokinnan suunnittelua sekä varsinkin omistajien kouluttamista hoitamaan koiriaan oikein ja vielä paremmin. Profiili: Jakke Lehtonen

Foorumin keskustelu

  1. Olihan tuon jutun tekemisestä kulunut jo muutama päivä… Piti tehdä yksi audio lisää ajankuluksi, mutta enhän minä enää muistanut kuinka tuota käytin. Joten itselleni muistiin:

    cd ~/audio-articles

    ./generate_audio_article.py <ID>

    Lopputulos on tällainen:

Jatka keskustelua foorumilla Katiskan foorumi

Osallistujat

Avatar for Jagster

WordPressin kommentit: