Koduleht » Kodeerimine » Kuidas näidata ajastatud transkriptsiooni mängitud audio kõrval

    Kuidas näidata ajastatud transkriptsiooni mängitud audio kõrval

    Audio transkript on kõne tekstiversioon, mis on kasulik andes kasulikke materjale nagu salvestatud loengud, seminarid jne. Neid kasutatakse ka sündmuste, näiteks intervjuude, kohtuistungite ja koosolekute tekstiandmete säilitamiseks.

    Kõneheli veebilehtedel (nagu podcastides) on tavaliselt kaasas ärakirju, mis on kasulik nende inimeste jaoks, kes on kuulmispuudega või ei suuda üldse kuulda. Nad saavad vaadake heli kõrvale teksti "mängimine". Parim viis audioprotokolli loomiseks on käsitsi tõlgendamise ja salvestamise abil.

    Selles postituses näeme kuidas näidata heli kõrvale jooksvat audioprotokolli. Alustamiseks peame olema ärakirja valmis. Selle postituse jaoks olen alla laadinud näidisheli ja selle ärakirja voxtab.

    Ma kasutan HTML-i ul loend, et kuvada dialooge alloleval veebilehel:

    • Justin: Ma üritan öelda, et kaebus ja lahendus on eraldi.
    • Alistair: Te peate silmas, et sisemised ja välised kommunikatsioonid ja teated viiakse apellatsioonimenetlusse.
    • Justin: Õige, sest nad ühenduvad kaebusega.

    Seejärel tahan, et kõik olemasolevad tekstid oleksid hägused tühistage ainult dialoog, mis sobib helisalvestise praeguse kõnega. Niisiis, dialoogide blokeerimiseks kasutan CSS-filtrit „blur”.

    #transcript> li -webkit-filter: blur (3px) filter: hägusus (3px); üleminek: kõik .8s lihtne;…

    IE 10+ jaoks saate lisada teksti vari hägususe saavutamiseks. Selle koodi abil saate tuvastada, kas CSS-i hägusust on rakendatud või mitte. Kui tekst on hägune, läksin edasi ja lisasin stiili teatele.

     kui (getComputedStyle (dialoogid [0]). webkitFilter === undefined && getComputedStyle (dialoogid [0]). filter === "none") var headEle = document.querySelector ('pea'), linkEle = document.createElement ('link'); linkEle.type = 'text / css'; linkEle.rel = 'stiilileht'; linkEle.href = 'ie.css'; headEle.appendChild (linkEle); 

    Nüüd lisame sellele lehele selle heli.

     

    The ontimeupdate sündmus heli elementi põletatakse iga kord currentTime värskendatakse, nii et me kasutame seda sündmust, et kontrollida heli jooksvat aega ja rõhutada vastavat dialoogi ärakirjast. Esmalt loome mõned globaalsed muutujad, mida me vajame.

    dialoogidTimings = [0,4,9,11,18,24,29,31,44,45,47]; dialogues = document.querySelectorAll ('# transcript> li'); transcriptWrapper = document.querySelector ('# transcriptWrapper'); audio = document.querySelector ('# audio'); previousDialogueTime = -1; 

    dialoog on arvude arv, mis esindab sekundeid, kui iga dialoog transkriptsioonis algab. Esimene dialoog algab 0s, teine ​​4-ndatel jne. eelmineDialogueTime kasutatakse dialoogi muutuste jälgimiseks.

    Lõpuks läheme üles funktsioonile, millega konks on ühendatud ontimeupdate, mida nimetatakse "playTranscript". Alates sellest ajast playTranscript käivitatakse peaaegu iga sekund, kui heli mängib, peame kõigepealt kindlaks tegema, millist dialoogi praegu mängitakse. Oletame, et heli on 0:14, siis mängib dialoogi, mis algas kell 0:11 (vt dialoog massiivi), kui hetkel on kellaaeg 0:30, siis dialoog, mis algas kell 0:29.

    Seega, et teada saada, millal praegune dialoog algas, filtreerime kõigepealt kogu aeg dialoog massiivi, mis on alla heli praeguse aja. Kui praegune aeg on 0:14, filtreerime välja kõik noodid. massiivis, mis on alla 14 (mis on 0, 4, 9 ja 11) ja teada saada maksimaalne nr. nendest, mis on 11 (seega algas dialoog kell 0:11).

    function playTranscript () var currentDialogueTime = Math.max.apply (matemaatika, dialoogTimings.filter (funktsioon (v) tagasi v <= audio.currentTime));  

    Kui currentDialogueTime arvutatakse, kontrollime, kas see on sama mis eelmineDialogueTime(st kui heli dialoog on muutunud või mitte), kui see pole vaste (st kui dialoog on muutunud), siis currentDialogueTime on määratud eelmineDialogueTime.

    function playTranscript () var currentDialogueTime = Math.max.apply (matemaatika, dialoogTimings.filter (funktsioon (v) tagasi v <= audio.currentTime)); if(previousDialogueTime !== currentDialogueTime)  previousDialogueTime = currentDialogueTime;   

    Nüüd kasutame indeksit currentDialogueTime Euroopa dialoog massiiv, et teada saada, millist dialoogi dialoogikirjelduste dialoogis tuleb esile tõsta. Näiteks, kui currentDialogueTime on 11, siis indeks 11 on dialoog massiiv on 3, mis tähendab, et peame rõhutama dialoogi indeksis 3 dialooge massiivi.

    function playTranscript () var currentDialogueTime = Math.max.apply (matemaatika, dialoogTimings.filter (funktsioon (v) tagasi v <= audio.currentTime)); if(previousDialogueTime !== currentDialogueTime)  previousDialogueTime = currentDialogueTime; var currentDialogue = dialogues[dialogueTimings.indexOf(currentDialogueTime)];   

    Kui oleme leidnud dialoogi esile tõstmiseks (see on praeguneDialogue), me kerime transcriptWrapper (kui keritav) kuni praeguneDialogue on 50px ümbrisepakendi all, siis leiame eelnevalt esile tõstetud dialoogi ja eemaldame klassi rääkides ja lisage see praeguneDialogue.

    function playTranscript () var currentDialogueTime = Math.max.apply (matemaatika, dialoogTimings.filter (funktsioon (v) tagasi v <= audio.currentTime)); if(previousDialogueTime !== currentDialogueTime)  previousDialogueTime = currentDialogueTime; var currentDialogue = dialogues[dialogueTimings.indexOf(currentDialogueTime)]; transcriptWrapper.scrollTop = currentDialogue.offsetTop - 50; var previousDialogue = document.getElementsByClassName('speaking')[0]; if(previousDialogue !== undefined) previousDialogue.className = previousDialogue.className.replace('speaking',"); currentDialogue.className +=' speaking';   

    Klassiga element rääkides kuvab unblurred teksti.

    .räägib -webkit-filter: blur (0px) filter: hägusus (0px); 

    Ja see on nii, siin on täielik kood HTML ja JS kood.

    • Justin: Ma üritan öelda, et kaebus ja lahendus on eraldi.
    • Alistair: Te peate silmas, et sisemised ja välised kommunikatsioonid ja teated viiakse apellatsioonimenetlusse.
    • Justin: Õige, sest nad ühenduvad kaebusega.


    Demo

    Vaadake allpool olevat demot, et saada idee, kuidas see toimib, kui kõik koodid on kokku pandud.