Puheen tekstimuotoisen litteraatin kohdistaminen äänitiedostoon: puoliautomaattinen menetelmä

Alla olevan ohjeen ja siinä mainitun Praat-skriptin avulla voidaan puoliautomaattisesti kohdistaa litteroidun keskustelun puheenvuorot ja/tai yksittäiset puhunnokset niitä vastaaviin kohtiin äänitiedostossa. Puoliautomaattinen kohdistus etenee käyttäjän avustuksella tekstirivi tekstiriviltä, puhunnos puhunnokselta siten, että kone ehdottaa kullekin puheen pätkälle alku- ja loppurajaa äänitteessä, käyttäjä tarkistaa rajauksen signaalikuvaa katsomalla ja näytettä kuuntelemalla, hyväksyy ne ja saa rajausehdotuksen seuraavalle puhunnokselle.

Ennen puoliautomaattiseen kohdistamiseen ryhtymistä kannattaa selvittää, voisiko sittenkin käyttää kokonaan automaattista kohdistusta. Kannattaa tutustua Kielipankissa olevaan automaattiseen Aalto-ASR-työkaluun ja kokeilla, sopisiko siinä oleva kohdistin käsiteltävänä olevalle kielelle.

Aalto-ASR:n kohdistin osaa tällä hetkellä kohdistaa tekstiä vain yhteen annotointikerrokseen, jolloin tarvittaessa puhujien vaihtumiskohdat täytyy lopuksi käsityönä muokata annotaatioon. Puhujien vaihtumisen tunnistaminen eli diarisointi on myöhemmin tulossa myös automaattiseen kohdistimeen. Vielä toistaiseksi puoliautomaattinen kohdistus saattaa kuitenkin olla mm. keskusteluaineistoille sopivin vaihtoehto.

Puoliautomaattinen vs. manuaalinen kohdistus

Tässä kuvattua puoliautomaattista kohdistusmenetelmää voidaan kokeilla, mikäli aineiston sisältämälle kielelle ei ole käytettävissä automaattista kohdistinta tai puheentunnistinta, tai mikäli on huomattu, ettei automaattisen kohdistuksen tarkkuus riitä vaadittuun tarkoitukseen. Puoliautomaattisella kohdistusmenetelmällä saadaan myös merkittyä eri puhujien puheenvuorot omiin kerroksiinsa.

Kohdistusnopeus puoliautomaattisella työkalulla on arviolta noin 3-10-kertaisesti alkuperäisen äänitteen kesto. Nopeus kuitenkin vaihtelee huomattavasti aineiston hälyisyydestä, kohdistettavien pätkien määrästä ja tarkkuudesta sekä päällekkäispuhunnan määrästä riippuen.

Hitain vaihtoehto on kohdistaa olemassa oleva litteraatti äänitiedostoon kokonaan käsin. Jollakin puheen monikerroksiseen annotointiin soveltuvalla ohjelmalla (esim. Elan, Praat) luodaan aluksi annotaatiokerrokset kullekin puhujalle. Sitten merkitään äänitiedoston perusteella kunkin puhujan puhunnosten alku- ja loppurajat käsin, yksi puhunnos kerrallaan. Jokaisen rajatun jakson nimikkeeksi kopioidaan vastaava kohta tekstitiedostosta, jota voi pitää avoinna toisessa ikkunassa.

Vinkki: Monikerroksisen keskusteluannotaation voi siirtää milloin tahansa lukukelpoiseen tekstimuotoon esimerkiksi Praat-ohjelmalla (katso ohjeet) tai Elanilla (esim. komento Export As:Traditional Transcript Text… tai Interlinear Text…).

Doc-, rtf- tai tekstimuotoisen keskustelun litteraatin kohdistaminen äänitiedostoon Praat-ohjelmalla

Tässä ohjeessa kuvattu Praat-skripti ehdottaa valinnan mukaan joko jokaiselle kokonaiselle puheenvuoroille tai sen kullekin osalle alustavaa rajausta äänen intensiteetin (ts. äänen voimakkuuden perusteella oletettujen taukojen) sekä vastaavan tekstin merkkimäärän perusteella. Käyttäjälle näytetään kyseinen puhunnos/vuoro ja hän voi korjata rajauksen, minkä jälkeen jatketaan seuraavaan puhunnokseen/vuoroon. Skripti sijoittaa puhunnokset automaattisesti kunkin puhujan omaan annotaatiokerrokseen tekstitiedoston rivin alussa mainitun puhujakoodin mukaisesti.

Huom. Äänitiedostoa ei saa kohdistuksen jälkeen enää pilkkoa tai ”siivota”, jotta kohdistus säilyy! Äänitiedoston tulee olla WAV- tai AIFF-muotoinen, jotta sen voi avata Praat-ohjelmalla. Äänitiedoston voi tarvittaessa muuntaa toiseen muotoon esim. Audacity-ohjelmalla.

1. Litteraatin muuntaminen sopivaan tiedostomuotoon

Jos litteraatti on tehty esim. MS Word-ohjelmalla ja se on RTF-muodossa (Rich Text Format) tai Word-muodossa (.doc, .docx), on tiedosto ensin muunnettava Unicode-muotoiseksi raakatekstiksi (plain text, UTF-8), katso ohjeet.

Huom: Tallenna tiedosto samannimisenä kuin sitä vastaava äänitiedosto, mutta vaihda tekstitiedoston päätteeksi .txt. Näin alkuperäinen litteraatti, äänitiedosto ja niistä kohdistettu TextGrid-tiedosto on helppo pitää yhdessä eikä tule sekaannuksia.

Tarkista lopuksi, ettei tiedostossa ole tyhjiä rivejä.

Tekstitiedoston sisällöstä ja koodauksesta:

Mikäli tiedoston alussa on litteraattia koskevaa taustatietoa, sen voi jättää paikalleen, mikäli taustaosion keskellä ei ole yhtään tyhjää riviä ja taustaosiota ja varsinaista litteraattia erottaa yksi tyhjä rivi. (Tällöin taustaosio erotetaan kohdistusvaiheessa automaattisesti ja se tallentuu erilliseen info-tiedostoon.) Taustaosion voi halutessaan myös poistaa etukäteen UTF-8-muotoon tallennetusta litteraattitiedostosta.

Litteraattiosiossa:

Kunkin rivin alussa on ko. puhujan tunnus tai koodi, jota seuraa kaksoispiste. Jos puhujan tunnus puuttuu, oletetaan että puhuja on sama kuin edellisellä rivillä esiintynyt.
Pisteen ja pilkun kohdalle kohdistusskripti ehdottaa lyhyttä taukoa. Kaari-, aalto- ja hakasulkeissa esiintyvä teksti käsitellään tällä hetkellä kuten mikä tahansa muu teksti. Jos puheenvuoron alussa on useampi kuin yksi välilyönti tai sarkainmerkki, oletetaan, että tämä vuoro on puhuttu edellisen puhujan vuoron päälle. (Kohdistusskripti kuitenkin arvioi tällaisen päällekkäispuhunnan alkuajan hyvin karkeasti merkkimäärän perusteella.)

2. Asenna tarvittaessa Praat-ohjelma

Praat-ohjelman uusimman version voit tarvittaessa hakea ja asentaa itse ilman ylläpitäjän oikeuksia osoitteesta http://www.praat.org.

3. Lataa omalle koneellesi kohdistusskripti:

align_conversation_transcript_with_sound.praat
(Klikkaa linkkiä hiiren oikealla napilla ja valitse Save target as… tai Save link as…)

Skripti pitää tallentaa samaan hakemistoon litteraattitiedoston kanssa, jolloin skripti löytää oikean litteraatin automaattisesti Praatilla avaamasi äänitiedoston nimen perusteella. Kohdistettu tiedosto (Praatin TextGrid-muodossa) tallentuu myös samaan hakemistoon, jossa skriptitiedosto sijaitsee.

4. Avaa Praat-ohjelma.

5. Avaa Praat-ohjelmalla äsken lataamasi kohdistusskripti.

Open: Read from file… Skripti aukeaa uuteen skripti-ikkunaan.

6. Avaa äänitiedosto Praatilla

Avaa se äsken luomaasi tekstitiedostoa vastaava äänitiedosto, johon haluat litteraatin kohdistaa. Äänitiedosto on avattava Praatissa LongSound-tyyppisenä.

Valitse Objects-ikkunan Open-valikosta komento Open long sound file…

7. Kun LongSound-ääniobjekti on valittuna Praatin objekti-ikkunassa, aloita kohdistus käynnistämällä skripti.

Siirry skripti-ikkunaan ja valitse Run:Run.

Skripti etsii LongSound-objektin nimen perusteella vastaavaa tekstitiedostoa samasta hakemistosta, jossa skripti sijaitsee.

Skripti tallentaa ensin mahdolliset litteraatin alkuosassa olevat kuvailutiedot yms. informaation toiseen tekstitiedostoon, jonka nimeksi tulee litteraatinnimi.info.

Sen jälkeen skripti luo LongSound-objektille uuden TextGrid-annotaatio-objektin ja avaa sen editori-ikkunaan.

8. Skripti etsii litteraattiriviltä seuraavan, mahdollisesti taukojen erottaman tekstipätkän ja ehdottaa sille rajoja kyseisen puhujan annotaatiokerroksessa.

Tarvittaessa luodaan uusi annotaatiokerros, jos litteraatissa esiintyy uusi puhuja, jolle ei ole vielä rajattu yhtään puhunnosta. Skripti pysähtyy kunkin puhunnoksen alustavan kohdistuksen jälkeen odottamaan käyttäjän tekemää tarkastusta.

Samalla litteraattirivillä oleva teksti jaetaan ehdotettuihin puhunnoksiin pilkkujen, pisteiden, sarkainmerkkien tai vähintään 3 toistuvan välilyönnin kohdalta.

Skripti käyttää alimmaisena olevaa annotaatiokerrosta nimeltä ”original” alkuperäisten litteraattirivien tallentamiseen. Niiden avulla voidaan myös päätellä, mihin kohtaan litteraatti edellisellä kerralla jäi ja jatkaa aiemmin talletettua työtä.

Huom: Tällä hetkellä skripti ei pysty jatkamaan työtä keskeltä litteraattiriviä, jos rivi on jaettu useisiin puhunnoksiin! Keskeneräisen rivin joutuu joko kohdistamaan käsin loppuun ennen kuin automaattisia ehdotuksia voi jatkaa, tai sitten on poistettava aloitetun keskeneräisen rivin rajaukset käsin TextGridistä ja tallennettava tämä versio ennen skriptin ajamista, jolloin skripti ehdottaa uudelleen puhunnoksia ko. rivin alusta.

Kuuntele ainakin lyhyitä äänipätkiä puhunnoksen alun ja lopun kohdalta ja varmista, että alku- ja loppurajat ovat suunnilleen oikeissa kohdissa.

Jos huomaat, ettei kahden peräkkäisen puhunnoksen välillä oikeasti olekaan varsinaista taukoa vaan puhuja esimerkiksi pidättää jotakin äännettä tai puhuu yhtäjaksoisesti, älä jätä puhunnosten väliin taukoa vaan poista ylimääräinen raja. Näin tulee nopealla tavalla kirjatuksi muistiin, ettei taukoa ollut, vaikka rajaus sinänsä olisikin vasta alustava.

Tarkempaa tietoa rajausperiaatteesta

Rajausehdotus on hyvin karkea. Skripti tekee äänestä intensiteettianalyysin. Jos tällä perusteella saadun rajausehdotuksen kesto poikkeaa merkittävästi kyseisen puhunnoksen merkkimäärän perusteella ennustetusta kestosta, sijoitetaan puhunnoksen loppuraja jälkimmäisellä perusteella. Skripti pyrkii siis välttämään ylilyhyitä tai ylipitkiä puhunnoksia.

Normaalitapauksessa skripti ehdottaa puhunnokselle alkuaikaa hieman edeltävän, joko saman tai toisen puhujan tuottaman puhunnoksen jälkeen. Jos litteraatin perusteella on syytä epäillä päällekkäispuhuntaa (eli jos puheenvuoron alussa on useita välilyöntejä ja/tai sarkainmerkkejä), skripti ehdottaa puhunnoksen rajausta edellisen puhujan puheenvuoron kohdalle vähän sen alkamisajan jälkeen (mutta tietenkin nykyisen puhujan annotaatiokerrokseen).

9. Paina Continue, jolloin skripti ehdottaa järjestyksessä seuraavan puhunnoksen rajausta (ks. kohta 8).

Katso myös ohjeet aineiston teknisestä formaatista.

Huom: Tällä sivulla kuvattu Praat-skripti on testikäytössä eikä välttämättä toimi kaikilta osin oikein.

Hae Kielipankki-portaalista:
Mikko Laitinen
Kuukauden tutkija: Mikko Laitinen

 

Tulevat tapahtumat

Yhteystiedot

Kielipankin tekninen ylläpito:
kielipankki (ät) csc.fi
p. 09 4572001

Aineistoihin ja muuhun sisältöön liittyvät asiat:
fin-clarin (ät) helsinki.fi
p. 029 4129317

Tarkemmat yhteystiedot