06.04.2015 Views

Prijenos zvuka - FER

Prijenos zvuka - FER

Prijenos zvuka - FER

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Prijenos</strong> <strong>zvuka</strong><br />

Redukcija toka podataka-kodiranje bez<br />

gubitaka i s gubicima


Redukcija toka podataka<br />

<br />

<br />

<br />

<br />

<br />

<br />

N bita(N=16) uz frekvenciju uzorkovanja fs=44,1kHz, daje veliki tok<br />

podataka R=705.6kb/s;<br />

prevelika brzina toka za prijenos (za pohranu može biti OK s<br />

obzirom na današnju veličinu diskova);<br />

smisao kodiranja je reprezentirati informaciju sa što manjim brojem<br />

bitova ali da se još uvijek može transparentno pohraniti, prenijeti i<br />

reproducirati;<br />

kodiranje se uglavnom temelji na korištenju svojstava kvantiziranog<br />

signala i osnova psihoakustike;<br />

filtarski nizovi koji modeliraju frekvencijsko-vremensko ponašanje<br />

ljudskog uha;<br />

transformacijsko kodiranje:koristi različite tipove transformacija<br />

(Fourierova, kosinusna) za reprezentaciju signala i kodiranje<br />

njihovih parametara (kodiranje u frekvencijskoj domeni);


Principi redukcije podataka<br />

<br />

<br />

<br />

Principi redukcije:<br />

Zalihost -razlaganje signala na frekvencijske komponente i<br />

prenosi se informacija o amplitudi, fazi, frekvenciji i trajanju,<br />

obratiti pažnju da se neke amplitude ponavljaju u<br />

vremenskoj i frekvencijskoj domeni;<br />

Entropija koristi svojstvo signala da vjerovatnost<br />

pojavljivanja amplituda nije ista, češće vrijednosti se<br />

kodiraju s manjim brojem bita i obratno;<br />

Nevažnost ili redundancija -odbacivanje komponenti<br />

nevažnih za prijamnik-uho;


Princip rada različitih kodera<br />

- svojstvo govornog signala je da ima veću vjerojatnost poprimanja manjih<br />

vrijednosti u kvantizatoru nego većih vrijednosti:<br />

– uniformna kvantizacija nije optimalna;<br />

– “isplati se” točnije kodirati manje vrijednosti od većih - nelinearna<br />

kvantizacija daje bolju kvalitetu uz jednak broj bita po uzorku;<br />

- uklanjanjem redundancije u signalu može se sažeti zapis;<br />

- na temelju poznavanja svojstava govora, tj. fizioloških<br />

karakteristika govornog trakta, može se napraviti model za reduciranje toka<br />

podataka;<br />

– parametri modela se računaju na temelju stvarnih uzoraka;<br />

– prenose se samo parametri (npr. frekvencijske komponente, a signal<br />

(govora, glazbe)) se rekonstruira (sintetizira) na temelju modela;


Osnovna svojstva kodera<br />

<br />

<br />

<br />

<br />

<br />

<br />

Audio kvaliteta: omjer signal šum i ukupno harmoničko ozobličenje<br />

nisu prikladne veličine za izražavanje kvalitete kodiranog signala;<br />

subjektivni testovi te objektivne metode mjerenja uspoređivanjem<br />

parametara orginalnog signala i kodiranog signala;<br />

Brzina protoka podataka: reprezentacija signala sa što manjim<br />

brojem bitova, interesantno je mijenjanje brzine i kvalitete ovisno o<br />

uvjetima u kanalu;<br />

Kompleksnost kodera: potrošnja energije, složenost algoritma (broj<br />

instrukcija u sekundi), procesorska snaga;<br />

Kašnjenje kodera: tolerantniji na kašnjenje su sustavi koji se koriste<br />

za ‘’audio streaming’’ (100-200ms) dok su sustavima za glasovnu<br />

komunikaciju manje tolerantniji na kašnjenja (VoIP 10-20ms);<br />

Otpornost na pogreške u kanalu (Internet prijenos, utjecaj šuma<br />

koji varira u vremenu) , bolja zaštita prioritetnijim bitovima u<br />

zaglavlju prenešene informacije;


Kompresori i ekspanderi<br />

<br />

<br />

trenutno djelovanje pojačala sa nelinearnom prijenosnom karakteristikom;<br />

kompresor se izrađuje pomoću otporno-diodne mreže<br />

x[k]<br />

kompresija kvantizator koder<br />

x'[k]<br />

dekompresija<br />

dekoder<br />

- bolja rezolucija na nižim razinama i lošija rezolucija na višim razinama;


Kompresor<br />

-različita promjena pojačanja ovisno o omjeru kompresije, primjer 4:1,<br />

4dB dinamike ulaznog signala postaje 1 dB dinamike izlaznog signala


Ekspander<br />

Ista shema kao kompresor:


Nelinearni kvantizator<br />

-već spomenut prije, interval kvantizacije se razlikuje za visoke i niske razine signala<br />

y[k]<br />

x[k]


Osnovna podjela kodera<br />

s obzirom na model signala i na tip analize i sinteze<br />

signala se koderi dijele na: linearne prediktivne (LP),<br />

transformacijske, potpojasne i sinusoidalne;<br />

dijele sa na kodere bez gubitaka (DVD Audio) i kodere<br />

s gubicima (ISO-MPEG, Dolby AC-3…);<br />

kod kodera s gubicima je omjer kompresije 1:25 dok je<br />

kod kodera bez gubitaka omjer kompresije 1:4;<br />

kod subjektivnog ocjenjivanja kodera koristi se ljestvica<br />

‘’Mean Option Score’’ koja opisuje kvalitetu sa: 1 –loše,<br />

2-slabo, -prosječno, 4-vrlo dobro, 5-odlično


Matematička pozadina za<br />

razumijevanje rada kodera<br />

osnove DSP-a (‘’Digital Signal Processing-a);<br />

spektri analognog i diskretnog signala;<br />

Uzorkovanje, preklapanje spektara,<br />

naduzorkovanje, diskretna Fourierova<br />

transformacija, z- transformacija, kosinusna<br />

transformacija, konvolucija, digitalno filtriranje,<br />

jednadžba diferencija;<br />

promjena frekvencije uzorkovanja: naduzorkovanje<br />

i poduzorkovanje (decimacija);


<strong>Prijenos</strong> informacijea o signalu<br />

u frekvencijskoj domeni


Linerno prediktivno kodiranje<br />

<br />

<br />

<br />

kvantiziranje koeficijenata P od M uzoraka signala kojima se<br />

aproksimira ulazni niz diskretnih uzoraka x(n)<br />

cilj je minimizirati snagu signala razlike<br />

d( n) = x( n) − xˆ<br />

( n)<br />

orginalni signal (diskretizirani-nekvantizirani) se propušta kroz<br />

prijenosnu funkciju P(z) da se dobije njegova aproksimacija;<br />

<br />

<br />

kvantizira i entropijski kodira se razlika signala aproksimacije i<br />

orginalnog signala d(n), cilj je da ona bude što manja;<br />

prenose se koeficijenti filtra P(z) kojime se na strani dekodera izvodi<br />

dekodiranje uz prenešeni signal razlike i ovojnicu signala<br />

aproksimacije u frekvencijskoj domeni.


Linearno prediktivno kodiranje-CELP<br />

-propuštanje signala kroz filtarske nizove koji modeliraju karakteristiku ljudskog<br />

govora i sluha;<br />

-modeliranje parametara vokalnog trakta sa digitalnim filtrom kojemu se parametri<br />

sporo mijenjaju (formanti isti (samoglasnici), a konzonantni glasovi se mijenjaju);<br />

-sinteza govora sa inverznim digitalnim filtrom;


Kodiranje na principu entropije<br />

entropija: teorijski odrediti minimalan broj bitova za kodiranje<br />

nekog uzorka audiosignala;<br />

Shannon kaže da je minimalan broj bitova koji je potreban da se<br />

kodira neka poruka X, odgovara entropiji signala;<br />

entropija je mjera kolebljivosti slučajne varijable;<br />

Primjer: Ako je ulazni tok podataka (kvantizirane vrijednosti) X=<br />

[4 5 6 6 2 5 4 4 5 4 4], N=11, simboli kojima se kodira V=[2 4 5<br />

6], ako su vjerovatnosti pojedinih simbola kojima se kodira ulazni<br />

tok podataka [1/11, 5/11, 3/11, 2/11] odrediti entropiju:<br />

<br />

K<br />

He( X ) = −∑<br />

pi ⋅log 2( pi<br />

)<br />

i=<br />

1<br />

Koje kodne riječi bi odabrali za simbole koji se kodiraju i koliki je<br />

ukupan broj bitova za X ako svaka riječ ima isti broj bitova?<br />

da li je moguće smanjiti broj bitova drukčijim odabirom kodnih<br />

riječi?


Primjer 2:<br />

Kodirati ulazni tok uzoraka X=[4 5 6 6 2 5 4 4 1<br />

4 4 ] sa nizom simbola V=[0 1 2 3 4 5 6].<br />

Odrediti vjerovatnosti pojavljivanja pojedinih<br />

uzoraka. Izračunati entropiju signala X.<br />

Predložiti mapiranje uzoraka u simbole (svakom<br />

uzorku jednaki ili nejednaki broj bitova);<br />

Koliki je broj bitova po simbolu ako se odabere<br />

jednaki ili nejednaki broj bitova po simbolu?


Huffmanovo kodiranje<br />

Signal X iz prethodnog zadatka kodirati<br />

Huffmanovim kodom, odrediti tablicu simbola<br />

prema vjerovatnostima pojavljivanja pojedinih<br />

simbola.Koliki je prosječan broj bitova po<br />

simbolu?


Osnovni princip rada kodera s gubicima<br />

<br />

<br />

<br />

koderi dijele ulazni signal u okvire (‘’frame’’) u trajanju od 2 ms do 50 ms<br />

(reakcija ljudskog uha na promjene);<br />

vremensko-frekvencijska analiza signala procijenjuje vremenske i frekvencijske<br />

komponente svakog okvira (potpojasno filtriranje);<br />

komponente koje se prenose određuje karakteristika ljudskog sluha;


Ljudski sluh- krivulja čujnosti<br />

<br />

<br />

ljudsko uho- nelinearan sustav;<br />

ljudsko uho nema jednaku osjetljivost (ni razina ni<br />

frekvencija) u cijelom području čujnih frekvencija;


Ljudsko uho<br />

efekt maskiranja u svakodnevnom životu:<br />

buka automobila maskira razgovor<br />

<br />

maskiranje je psihoakustički efekt kada snažniji zvuk, ili zvuk s nekim<br />

posebnim karakteristikama, posve prekriva neki drugi zvuk i čini ga<br />

nečujnim za slušatelja.


Maskiranje (primjer)<br />

<br />

<br />

Akustičko maskiranje je jedan od osnovnih koncepata na kojima se<br />

temelje svi psihoakustički algoritmi (MPEG).<br />

Zamislite da imate ton frekvencije 1000 Hz i u njegovoj blizini<br />

(frekvencijskoj) ton frekvencije 1100 Hz, ali 18 dB slabiji (tiši). Ovaj<br />

drugi ton nećete čuti – biti će potpuno zakriven, maskiran onim<br />

prvim tonom. Ukoliko, međutim imate ton na 2000 Hz, također 18 dB<br />

slabiji od onog na 1000 Hz – njega ćete čuti jer je frekvencijski<br />

dovoljno udaljen od prvog tona da ga ne zahvaća efekt maskiranja


Utjecaj maskiranja (nevažnost)<br />

-promjena praga čujnosti zbog pobude sinusnim<br />

tonom različitih frekvencija;<br />

-moguće je podizanje razine šuma kvantizacije u okolini glasnijih tonova<br />

(kodiranje s malim brojem bita);<br />

-veći šum kvantizacije znači manji broj bitova kvantizacije i manji tok<br />

podataka;


Vremensko maskiranje<br />

glasnim tonom<br />

maskiranje na temelju razine nekog tona i<br />

vremenske bliskosti drugih tonova s tim tonom;<br />

glasan zvuk pokriva sve obližnje tonove 5ms<br />

prije početka ili 100ms nakon završetka- ‘’pre’’ i<br />

‘’post’’ vremensko maskiranje


Vremensko maskiranje<br />

glasnijim tonom-primjer<br />

-vremensko maskiranje tonova se pojavljuje kada glasniji ton (maskirajući),<br />

frekvencije npr. 1 kHz i razine 60 dB, nalazi pokraj tišeg tona frekvencije 1,1 kHz i<br />

razine 40 dB (nije čujan).<br />

-kad prestane svirati glasniji ton, mjeri se minimalno vrijeme koje je potrebno da<br />

tiši ton postane čujan.<br />

- rezultat vremenskog maskiranja za različite razine testnog tona dok je<br />

maskirajući ton stalne razine dan je slikom (tiši ton postaje čujniji tek nakon nekog<br />

vremena prestanka emitiranja glasnog tona- vrijeme ovisi i o razini tišeg tona)


Efekt frekvencijskog i<br />

vremenskog maskiranja


Kritični pojasevi<br />

<br />

<br />

<br />

<br />

<br />

uho je frekvencijski selektivan uređaj koji dijeli područje<br />

čujnosti (20Hz-20kHz) na 24 pojasa (barka)<br />

nemogućnost uha da razlikuje ulazne signale čiji je<br />

frekvencijski razmak manji od širine kritičnog pojasa;<br />

oblik i organizacija bazilarne membrane omogućuje da se<br />

uho modelira u frekvencijskoj domeni kao niz preklapajućih<br />

filtara;<br />

ti filtri su nelinearni, oblik im ovisi o razinama signala a širina<br />

pojasa ovisi o frekvenciji (na nižim frekvencijama manja<br />

širina pojasa dok je na višim frekvencijama veća);<br />

širina kritičnog pojasa iznosi 100 Hz na niskim<br />

frekvencijama (do 500Hz) pa do više od 4 kHz na krajnjem<br />

frekvencijskom području.


Barkovi i prag čujnosti<br />

-frekvencijsko područje sluha se dijeli u više kritičnih pojaseva koji su nejednake<br />

širine;<br />

- frekvencijske komponente unutar jednog kritičnog pojasa se teško razlučuju.


Ekvivalenti filtri krit. pojaseva


Primjer utjecaja maskiranja<br />

Pojas 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16<br />

Level (dB) 0 8 12 10 6 2 10 60 35 20 15 2 3 5 3 1<br />

1. razina pobude u 8. pojasu je 60 dB<br />

2. ova pobuda podiže prag čujnosti u 7. pojasu za 12 dB, a u 9. pojasu za<br />

15 dB<br />

3. Nove razine u susjednim pojasevima su:<br />

7. pojas 10 – 12 = -2 dB < 0 (prag čujnosti) => zanemariti<br />

9. pojas 35 – 15 = 20 dB > 0 => prenjeti, ali s dinamikom od 20 dB


Maskiranje šumom i tonom<br />

šum lakše maskira čisti ton nego obratno:


Osnove percepcijskog kodiranja <strong>zvuka</strong>elementi<br />

u lancu<br />

<br />

<br />

<br />

<br />

<br />

sakriti razinu šuma kvantizacije ispod praga čujnosti tonskih<br />

komponenti u signalu;<br />

filtarska banka: dekompozira signal u komponente po frekvencijskim<br />

pojasima (i s obzirom na vrijeme);<br />

percepcijski model: koristi ili signal u vremenskoj domeni ili izlaze iz<br />

filtarskih nizova radi određivanja praga maskiranja (koji se mijenja s<br />

vremenom);<br />

Kvantizacija i kodiranje –dodavanje šuma kvantizacije;<br />

pakiranje okvira- sadrži informacije o kvantiziranim i kodiranim<br />

spektralnim koeficijentima i podatke o poziciji bitova


Filtarski nizovi<br />

niska rezolucija (32 potpojasa) i visoka rezolucija 512<br />

potpojasa;<br />

<br />

QMF filtarski nizovi i nizovi temeljeni na wavelet<br />

transformaciji;


MPEG kodiranje<br />

MPEG audio standard opisuje binarni format<br />

podataka i prijenosnu funkciju koja određuje<br />

kodiranje;<br />

MPEG audio standard definira sintaksu<br />

protoka podataka (‘’bitstream’’) i specifikaciju<br />

dekodera;<br />

otvorena arhitektura tog standarda<br />

omogućuje neprestano nadograđivanje i usku<br />

suradnju te primjenu najnovijih dostignućima<br />

iz područja psihoakustike;


Prednosti MPEG kodiranja<br />

izvrsna audio kvaliteta<br />

<br />

<br />

<br />

<br />

<br />

korisno iskorištavanje pojasa<br />

fleksibilan, ekonomičan digitalni prijenos<br />

podataka<br />

prepoznatljivost diljem svijeta<br />

otpornost na pogreške<br />

prihvatljivost u širokom stupnju aplikacija<br />

(radiodifuzija, DAB, ...)


MPEG redukcija toka podataka<br />

<br />

na ulaz u koder se dovodi signal koji se pretvara u digitalni<br />

oblik PCM, a f s se odabire iz niza propisanih standardom: 32<br />

kHz, 44,1 kHz ili 48 kHz.<br />

audio spektar digitaliziranog signala se dijeli u 32<br />

frekvencijska podpojasa tako da se spektar ulaznog signala<br />

podijeli u pojaseve s analizirajućim filtrima.<br />

<br />

širina svakog podpojasa je f s /64. Broj uzoraka koji se gleda u<br />

pojedinačnom okviru ovisi o Layeru (sloju).<br />

za Layer 1 broj uzoraka u okviru iznosi N = 384.<br />

Propuštanjem kroz filtarski niz dobije se N/32 koeficijenta po<br />

podpojasu (Za Layer 1, 12, a za Layer 2, 36 koeficijenata po<br />

podpojasu).


Reduciranje informacije kod<br />

<br />

<br />

<br />

<br />

<br />

MPEG-a<br />

reduciranje informacije se izvodi u frekvencijskoj domeni<br />

korištenjem koeficijenata određivanjem praga energije<br />

maskiranja (‘’treshold’’);<br />

percepcijski model je jezgra svakog MPEG algoritma;<br />

ako je snaga u podpojasu ispod maskirajućeg praga onda se<br />

kodiranje izostavlja jer te komponente uho ionako ne čuje.<br />

određivanje broja bitova za kodiranje koeficijenta<br />

(propuštanjem kroz filtar) se izvodi tako tako da šum<br />

uzrokovan kvantizacijom padne ispod razine maskirajućeg<br />

nivoa.<br />

komprimirana informacija je smještena u okvir u kojemu su<br />

bitovi (kodiranje koeficijenata) alocirani (svaki ima svoj<br />

položaj).


MPEG Layer I i II koder<br />

32 kritična potpojasa sa QMF filtrima (750 Hz širina pojasa, decimacija 32)<br />

<br />

Kod Layer I brzina je 192 kbit/s a kod Layer-2 128 kbit/s


MPEG Layer III<br />

bolja filterska banka i primjena modificirane<br />

kosinusne transformacije;<br />

primjena Huffmanovog kodiranja;


Primjer MPEG redukcije (Layer I)<br />

1- korak je spektralna analiza okvira (u frekvencijskoj<br />

domeni) i normalizacija (pretvaranje u dB u odnosu na<br />

referentnu razinu, usporedba s pragom čujnosti)<br />

-križići su tonske kompnente;<br />

-kružići su netonske<br />

komponente


Postupak MPEG redukcije<br />

(maskiranje)<br />

Model maskiranja<br />

koji se primjenjuje<br />

na spektar pobude


Postupak MPEG redukcije<br />

(podizanje praga čujnosti)<br />

Proračun praga čujnosti uzimajući u obzir tonalnu (harmoničku) i<br />

širokopojasnu (šum) pobudu.


Postupak MPEG redukcije<br />

(podignuti prag)<br />

Konačni prag čujnosti<br />

prema kojem se<br />

računa potreban<br />

odnos S/Š (crtkano)


Osobine pojedinih slojeva<br />

MPEG kodera<br />

<br />

<br />

<br />

Layer 1. Koristi filtarski niz s jednim okvirom i jednaku<br />

širinu po pojasu. Psihoakustički model koristi samo<br />

frekvencijsko maskiranje.<br />

Layer 2. Koriste se tri okvira u jednom filtru (3*384 uzorka<br />

= 1152 uzorka). Uz frekvencijsko maskiranje ovaj model<br />

koristi i djelomično vremensko maskiranje.<br />

Layer 3. Bolja podjela frekvencijskih pojaseva<br />

(nejednolika širina), koristi vremensko maskiranje, uzima<br />

u obzir redundantnost stereo signala, koristi Huffmanovo<br />

kodiranje.


Objektivno i subjektivno testiranje<br />

kvalitete kodera<br />

<br />

<br />

<br />

<br />

temelji se na usporedbi objektivnih parametara orginalnog<br />

signala i signala nakon dekodiranja;<br />

PESQ (Perceptual Speech Evaluation of Audio Quality),<br />

glasnoća šuma (NL), procjenjivala je percipiranu glasnoću<br />

izobličenja unesenog procesom kodiranja i dekodiranja.<br />

Izobličenje ili šum definira se kao razlika između ulaznog i<br />

izlaznog govornog signala, te se gleda za svaki vremenski<br />

okvir od cca 20ms;


Subjektivne ocjene MPEG<br />

kodera (različiti slojevi)<br />

Ocjene: 5 - savršeno, 4 - jedva primjetno izobličenje, 3 - malo iritirajuće<br />

izobličenje, 2 - iritirajuće izobličenje, 1 - vrlo iritirajuće izobličenje


Audio-koderi


MPEG 4<br />

<br />

obuhvaća različite metode kodiranja audio signala i multimedijskih<br />

informacija;<br />

kodiranje govora (CELP na principu LP do 24 kbit/s, HVXC do 4<br />

kbit/s)<br />

<br />

<br />

kodiranje glazbe ( parametarski koderi reprezentiranjem signala<br />

sinusiodama i odgovarajuće pogreške-šuma kvantizacije)<br />

reprezentacija signala u parametarskom obliku (variranje<br />

parametara s vremenom):


Blok shema bežičnog<br />

komunikacijskog sustava<br />

Izvor<br />

informacije<br />

Kvantizacija/<br />

kodiranje<br />

izvora inf.<br />

Kanalno<br />

kodiranje<br />

Modulator<br />

Demodulator<br />

RF dio:filter,<br />

pojačalo,<br />

mješalo<br />

Pojačalo<br />

Kanalno dekodiranje<br />

Dekodiranje<br />

izvorne<br />

informacije<br />

Informacija


Kanalno kodiranje<br />

<br />

<br />

<br />

bavi se načinima otkrivanja i smanjenja pogrešaka u<br />

komunikacijskom sustavu;<br />

ovakvo kodiranje dozvoljava porast toka korisnih informacija uz<br />

fiksni tok pogrešnih podataka ili reduciranje pogrešaka uz fiksni<br />

ukupni tok podataka;<br />

dva osnovna načina kontrole pogrešaka:<br />

a) Automatski zahtjev za ponovnim podacima (‘’Automatic Repeat<br />

Request’’), kada se detektira pogrešno poslana poruka;<br />

b) Kodovi za ispravljanje pogrešaka (FEC=‘’Forward Error<br />

Correction’’), poruke se šalju sa kodom koji omogućava<br />

ispravljanje pogreški;<br />

-ARRQ se koristi kada je komunikacija u ‘’duplex ‘’ (dvosmjerna)<br />

načinu rada;<br />

-FEC u slučaju jednosmjerne komunikacije i kada se zahtjeva<br />

komunikacija u realnom vremenu


Kanalno kodiranje<br />

Princip: dodavanje redundancije da se ukloni pogreška<br />

Izvor<br />

Odašiljač<br />

Prijamnik<br />

Prijam<br />

1 1 0 1<br />

1 1 0 1<br />

1 1 0 1 1 1 0 0<br />

1 0 0 1 1 1 0 1<br />

Kanalni koder<br />

Kanal<br />

Kanalni<br />

dekoder


Kanalno kodiranje<br />

dva osnovna principa kanalnog kodiranja: kodiranje<br />

blokova (‘’block coding’’) i konvolucijsko kodiranje;<br />

Kodiranje blokova: kada se k bitova koji predstavljaju<br />

informaciju proširi na n bitova sa Huffmanovim kodom<br />

ili CRC kodiranjem (‘’Cyclic Redundancy Check’’);<br />

<br />

kod konvolucijskog kodiranja sadržaj trenutne kodne<br />

riječi ovisi i o prethodno poslanom bloku;<br />

dekoder određuje da li je poslana informacija točna ili<br />

je pod utjecajem šuma;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!