Audiosisällön luominen Azure AI Speech -palvelun avulla

Onko organisaatiollasi sisältöjä, joiden tarjoaminen niiden kuluttajalle, olisi järkevämpää audiomuodossa? Esimerkiksi sisällön esteettömyyden parantamiseksi, sen kuluttamistapojen monipuolistamiseksi, sisällön kuluttajan ajan säästämiseksi tai jotta se voisi paremmin tukea erilaisia oppijoita?

Loin hiljattain ensimmäisen äänikirjani Azure AI Speech -palvelua käyttäen ja tässä blogipostauksessa jaan nyt kokemuksiani prosessista. Näin alkuun voin jo kertoa, että lopputulos ei vielä vastannut sitä tasoa, jota omaan fiktioteokseeni olisin kaivannut, mutta kehitys kehittyy tällä hetkellä joka sekunti, joten omiin tarpeisiin kannattaa aloittaa testaaminen ajoissa. Esimerkiksi erilaiset tekstin käyttötarkoitukset määrittävät sitä, mitä odotat lopputulokselta. Syvemmälle siihen, kuinka työstin äänikirjaani voit sukeltaa omassa blogissani.

Ideasta kohti äänikirjaa

Kaikki alkoi siitä kun elokuussa 2024 aloimme neljän ystäväni kanssa pelata Dungeons and Dragons: Descent into Avernus -kampanjaa. Jos et tunne Dungeons and Dragonsia, se on fantasiapöytäroolipeli, jonka on kehittänyt ja julkaissut Wizards of the Coast. Olen myös kuullut sitä kuvailtavan yhteistyöhön perustuvaksi tarinankerrontapeliksi, mikä on mielestäni varsin sopiva termi.

Pelin johtaja, Dungeon Master, lukee saatavilla olevan kampanjamateriaalin (kirjan), luo puitteet ja kuvailee pelaajien kohtaamia tilanteita. Jokainen pelaaja luo oman hahmonsa D&D-sääntökirjan sekä mielikuvituksensa avulla ja kertoo sitten pelin aikana, mitä heidän hahmonsa tekee kussakin tilanteessa. Vaikka kampanjamateriaali on aina sama, jokainen peli on lopulta kuitenkin hyvin erilainen, koska pelaajat, hahmot ja heidän tekemänsä päätökset ovat niin erilaisia.

Kun loin omaa hahmoani, kirjoitin kymmenen sivun mittaisen Word-dokumentin hahmoni taustatarinasta. Koska pidin kirjoittamista melko hauskana hommana, aloin tehdä muistiinpanoja pelisessioidemme aikana ja kirjoittaa fantasiaromaanityylisiä ”yhteenvetoja” muistiinpanojen pohjalta. Näitä yhteenvetoja on tähän mennessä kertynyt yhteensä jo noin 150 sivun verran.

Halusin muuntaa kirjoitukset äänimuotoon, jotta kanssapelaajani voisivat halutessaan kuunnella edellisten tapahtumien yhteenvedon sen lukemisen sijaan valmistautuessaan seuraavaan pelisessioon. Tästä syystä aloin tutkia, saisinko valjastettua Azure AI Speech -palvelun käyttötarkoitukseeni.

Tekstin muuttaminen puheeksi Azure AI Speech -palvelun avulla

Teksti voidaan muuntaa puheeksi kahdella eri tavalla hyödynnettäessä Azure AI Speech -palvelua. Molemmissa tapauksissa tekstisyötteiden on oltava joko pelkkää tekstiä tai SSML (Speech Synthesis Markup Language) -muodossa. Suosittelen jälkimmäistä äänikirjoille, koska silloin voit säätää muun muassa puherytmiä.

Aivan ensimmäiseksi sinun on päätettävä käytettävä ääni. Ääniä on kahdenlaisia: neural ja neural HD. Microsoftin mukaan ”High Definition -äänet tarjoavat paremman laadun monipuolisempiin skenaarioihin.” Ääniä voit selata ja testata Voice Galleryssa ja myös Microsoftin dokumentaatiosta löydät käytettävissä olevat äänikoodit sekä HD-äänikoodit.

Toinen asia, jota voit säätää, on ”lämpötila”, joka vaikuttaa tuotoksen satunnaisuuteen. Matalampi lämpötila johtaa pienempään satunnaisuuteen, mikä johtaa ennustettavampiin ja tasapaksumpiin tuloksiin, kun taas korkeampi lämpötila lisää satunnaisuutta, mikä antaa tekoälylle vapaammat kädet käyttää luovuutta—vaihtelevalla menestyksellä.

Voit myös muokata sitä, kuinka syötetty teksti puhutaan lisäämällä sisältöön SSML-elementtejä. Henkilökohtaisesti pidin kappaleiden välistä oletushiljaisuutta liian lyhyenä, joten lisäsin ylimääräisen tauon jokaisen kappaleen jälkeen. Huomaa, että kaikki SSML-elementit eivät ole yhteensopivia HD-äänien kanssa, joten muista tarkistaa tuettujen elementtien luettelo.

Teksti-ääni -muunnoksen luominen

Kokeilin ensin käyttää Azure AI Speech SDK:n (Software Development Kit) SpeechSynthesizer -ominaisuutta muunnoksen tekoon, mutta reaaliaikainen muunnos sen avulla on rajoitettu 10 minuuttiin ääntä. Lisäksi tulos toistetaan ärsyttävästi kaiuttimien kautta muunnoksen tapahtuessa, joten nämä asiat huomioon ottaen se ei mielestäni sovi äänikirjojen tekoon.

Ominaisuutta kannattaa tällä hetkellä käyttää ennemmin muihin käyttötarkoituksiin, joissa reaaliaikainen muunnos tekstistä ääneksi pienellä viiveellä on olennaista, ja pidemmille äänitiedostoille, joita on tarkoitus kuunnella myöhemmin, seuraava kokeilemani keino sopii paremmin.

Vaihtoehtona SpeechSynthesizer-ominaisuudelle on asynkroninen Batch synthesis API -rajapinta, jota voidaan käyttää yli 10 minuutin pituisten äänitiedostojen, kuten äänikirjojen, luomiseen. Asynkroniseen muunnokseen liittyvä viive ei ole tässä tilanteessa ongelma, koska meidän ei tarvitse toistaa muunnoksen tuotosta välittömästi. Lisäpisteitä rajapinta saa siitä, että tuotettua puhetta ei tarvitse kuunnella tietokoneen kaiuttimien kautta muuntamisen aikana tai edes välttämättä pitää tietokoneen virtaa päällä, koska muunnos tapahtuu Azuressa, ei koodia ajavalla koneella.

Olin aluksi erittäin innoissani tästä rajapinnasta, kunnes muunnos sen avulla epäonnistui toistuvasti, kun yritin muuntaa ”suuria” (50 kilotavun) SSML-tiedostoja ääneksi. Palvelu ei palauttanut virheilmoitusta, joka olisi selittänyt, miksi muunnos epäonnistui.
Aloin tutkia, oliko syötteenä annetussa SSML-tiedostossa ongelmia. Jaoin sisällön pienempiin SSML-tiedostoihin ja lähetin jokaisen niistä palvelulle. Kaikki ne muunnettiin onnistuneesti.

Tein lisää testejä ja niiden perusteella ongelma oli sisällön pituudessa. Onnistumisen ja epäonnistumisen välinen raja näyttää olevan jossain 25000-30000 merkin paikkeilla (mukaan lukien SSML-elementit). Tästä johtuen minun piti kaikesta huolimatta laittaa koodi ensin jakamaan SSML-sisältö osiin, pyytämään rajapintaa tekemään muunnos näissä erissä ja lopuksi yhdistämään palvelun tuottamat äänitiedostot, vaikka palvelun olisi pitänyt kyetä tuottamaan pitkiä äänitiedostoja yhdellä kertaa.

Sisällön jakamisessa pienempiin osiin on kuitenkin hyväkin puoli: se mahdollistaa eri osien rinnakkaisen muunnoksen, mikä vähentää muuntamiseen kuluvaa kokonaisaikaa.

Arvio lopputuloksesta

Olenko tyytyväinen siihen, miten tekoäly puhuu kirjoittamani tarinan? Valitettavasti en. Äänen välittämä tunne ja puherytmi harvoin vastaavat hyvin kuvailtua tilannetta. Toki näitä voi yrittää säätää paremmaksi muokkaamalla SSML-tiedostoa ja lisäämällä käsin uusia elementtejä ja ominaisuuksia, joiden arvolla voi hallinnoida puhetyyliä, –rytmiä ja puhujan roolia, mutta tällaiseen muokkaukseen menisi paljon enemmän aikaa kuin mitä olen valmis tämän harrastusprojektin puitteissa käyttämään.

Aion edelleen muuntaa tarinat äänimuotoon kanssapelaajilleni, mutta tällä hetkellä suosittelen, että he lukevat alkuperäisen tekstin. Tarinan tunnelma yksinkertaisesti välittyy paljon paremmin luettuna.

Jatkan myös tekstistä puheeksi -ominaisuuksien kokeilua. Saavutimme pelissämme vasta tason 5, ja seikkailu vie meidät ilmeisesti tasolle 13, joten pelaamme kampanjaa todennäköisesti vielä 1-2 vuotta. Azure AI Speech -palvelulla on siis vielä paljon mahdollisuuksia parantaa sen tarinankerrontakykyä.

Tutustu palveluihimme ja koulutuksiimme

Azuressa on koko joukko palveluja, joiden avulla sovelluksiin ja datan käsittelyyn sekä analysointiin voidaan liittää erilaisia tekoälyyn ja koneoppimiseen liittyviä toimintoja. Me voimme auttaa organisaatiotasi miettimään, miten tekoälyyn ja koneoppimiseen liittyviä palveluja voidaan hyödyntää osana organisaation sovelluksia ja palveluja.

Löydät meiltä myös kattavan määrän tekoäly-aiheisia koulutuksia kuten IT-ammattilaisen Azure AI -kurssit sekä datalähtöiset koneoppimisen tekoälykurssit. 

Laura Kokkarinen

Consulting & Training

Laura is a software architect and developer passionate about application security and software development best practices on the Microsoft Cloud platform. She has been doing full-stack software development with Microsoft technologies professionally since 2011 and has focused entirely on Microsoft cloud services since 2017. She has a Bachelor’s and a Master’s in Computer Science (grad 2012). In addition to designing software architectures, writing code, and performing tasks related to application security, Laura blogs about technologies related to her work at https://laurakokkarinen.com and regularly speaks at international conferences. Sharing her knowledge comes naturally to her, and Laura has received the Microsoft Most Valuable Professional (MVP) award annually since 2019.
Laura on ohjelmistoarkkitehti ja kehittäjä, joka on intohimoinen sovellusten tietoturvan ja ohjelmistokehityksen parhaiden käytäntöjen suhteen Microsoftin pilvialustalla. Hän on tehnyt full-stack-ohjelmistokehitystä Microsoftin teknologioilla ammatillisesti vuodesta 2011 lähtien ja keskittynyt täysin Microsoftin pilvipalveluihin vuodesta 2017. Lauralla on on korkeakoulututkinto tietojenkäsittelytieteestä (valmistunut 2012). Ohjelmistoarkkitehtuurien suunnittelun, koodin kirjoittamisen ja sovellusten tietoturvaan liittyvien tehtävien lisäksi Laura kirjoittaa blogia työhönsä liittyvistä teknologioista osoitteessa https://laurakokkarinen.com ja puhuu säännöllisesti kansainvälisissä konferensseissa. Tiedon jakaminen on hänelle luontaista, ja Laura on saanut Microsoftin Most Valuable Professional (MVP) -palkinnon vuosittain vuodesta 2019 lähtien.