Digital Signalbehandling Lab 1 Grundläggande signalbehandling Denna version: juli 2007 LERTEKNIK REG Namn: Personnr: AU T O MA RO TI C C O N T LINKÖPING L Datum: Godkänd:
1 Introduktion Syftet med denna första laboration i kursen Digital signalbehandling är att ge tillfälle att arbeta praktiskt med de teorier och algoritmer som tas upp i kursboken. Laborationen består av tre uppgifter: Vissling: Hur rent visslar du? Vokalljud: Hur kan man modellera ett vokalljud? Talkodning enligt GSM: Hur mycket icke-nödvändig information finns det i vanligt tal? Varje uppgift beskrivs mer i detalj nedan. För att lösa uppgifterna måste Matlab eller motsvarande användas. 2 Arbetsupplägg Laborationsarbetet kan delas in i tre faser: 1. Datainsamling i Laboteket. Sker under schemalagd tid och bör kunna vara klar på ca en timme. 2. Beräkningar med Matlab. Dessa genomförs under kursens gång och teorin till uppgifterna återfinns i kapitel 2 6 och föreläsningar 1 7. Då insamlingen av data sker tidigt i kursen så kommer det att vara svårt att utföra någon av uppgifterna redan under labben. 3. Dokumentering av resultat i en teknisk rapport. Rapporten ska kunna läsas fristående från labkompendiet. Alla val ni har gjort ska motiveras tydligt. OBS! Skriv kommentarer och förklaringar till era plottar och er Matlab -kod på ett sådant sätt att det är lätt att följa ert resonemang. Rapporten lämnas direkt till någon av lektionsassistenterna. Skriv labassistentens namn tydligt på rapporten så att den kommer till rätt person. Rapporterna lämnas in gruppvis, dvs två personer per rapport. Observera att uppenbart ihopslarvade rapporter ej kommer att beaktas överhuvudtaget. Glöm ej att ange namn och e-postadress! Tips om rapportskrivande finns i avsnitt 7. 3 Datainsamling Obs! Om datorn ni använder har ett externt ljudkort (liten svart/orange låda) så kan ni behöva göra några extra inställningar innan ni går vidare, se appendix A för detaljer. Har ni ett internt ljudkort kopplas mikrofonen in på detta. Kopiera katalogen r:\digsig\lab1 till c:\lab\. Denna katalog innehåller en SimuLink-fil, digsiglab1.mdl, som ska användas för datainsamlingen. Öppna denna fil i Matlab genom att först göra >> cd c:\lab\lab1 3
och sedan skriva digsiglab1. Välj samplingshastighet genom att sätta variabeln sampletime till lämpligt värde i Matlab. Variabeln rectime anger inspelningens längd i sekunder, sätt denna variabel till lämpligt värde i Matlab. >> sampletime = 1/8000; >> rectime = 2; Det ljud ni spelar in sparas i en.mat-fil, filnamnet anger ni genom att dubbelklicka på blocket To file och skriva in önskat filnamn. Signalen, tillsammans med en tidsvektor, kommer att sparas som en matris med två rader med namnet y i denna fil. Starta sedan simuleringen och tala in ljudet i mikrofonen. Exempel studera det inspelade ljudet: >> load aljud % Ladda in data (aljud <-> filnamn) >> plot(y(1,:),y(2,:)) % Signalamplitud m.a.p. tid >> soundsc(y(2,:),8000) % Lyssna på ljudet Glöm inte att spara datafilerna under era egna konton på h: innan ni lämnar labben, det som har sparats under c:\lab kommer att tas bort vid utloggning. 4 Uppgift: Vissling 4.1 Mål Uppgiften går ut på att försöka vissla en så ren sinusvåg som möjligt och sedan undersöka närmare hur ren visslingen faktiskt blev. 4.2 Utförande och redovisning Välj som tidigare samplingsfrekvensen 8000 Hz och spela in 2 s vissling. Ta in signalen i Matlab och klipp bort eventuella transienter i början och slutet av signalen. Ett mått på en periodisk signals renhet är harmonisk distortion som definieras som ett minus kvoten mellan energin i den dominerande frekvensen och den totala energin. Ett annat mått på renhet fås genom att skatta en andra ordningens AR modell och ta polernas avstånd från enhetscirkeln som mått på distortion. Behandla följande punkter/frågeställningar: 1. Beräkna energin i tidsplanet för hela visslingen, samt för den dominerande komponenten. 2. Gör samma energiberäkningar i frekvensplanet. 3. Beräkna den harmoniska distortionen med energivärdena både från tidsplanet och frekvensplanet (kontrollera att dessa ger ungefär samma resultat). Hur ren är visslingen? 4. Beräkna renhetsmåttet baserat på AR(2)-modellen och motivera varför denna modelltyp är lämplig. Hur kan detta mått jämföras med den harmoniska distortionen? 5. Ta fram spektrum för visslingen och skatta den dominerande frekvensen, dels med en icke-parametrisk metod, dels med en parametrisk metod. 4
Tips: Blås inte direkt in i mikrofonen! Då distorsionen beräknas enligt den första metoden kan man göra energiberäkningarna i frekvens- eller tidsplanet. I frekvensplanet tas ett antal sampel med kring maxvärdet. I tidsplanet appliceras ett bandpassfilter varefter variansen kan beräknas. Glöm ej att gradera axlarna på rätt sätt! Man ska enkelt kunna avläsa frekvensen på visslingen (i Hz eller rad/s). 5 Uppgift: Vokalljud 5.1 Mål Uppgiften går ut på att försöka modellera ett vokalljud med en AR-modell av lämplig ordning och sedan simulera modellen med lämplig insignal och lyssna på resultatet. 5.2 Utförande och redovisning Tala in två vokalljud med samplingsfrekvensen 8000 Hz och längd 2 s, till exempel ett a-ljud och ett o-ljud. Ta som i förra uppgiften bort eventuella transienter i början och slutet av signalen. Behandla följande punkter/frågeställningar: Tips: Modellera vokalljuden med AR-modeller av lämpliga ordningar. Validera de skattade modellerna. Är de skattade modellerna bra? För att svara på denna fråga ska ni använda minst två av de valideringsmetoder som finns beskrivna i kursboken, exempelvis jämförelse mellan modellens prediktioner och verkliga data, jämförelse mellan modellens spektrum med en icke-parametrisk spektralskattning och/eller genom att skatta kovariansfunktioner för residualerna. Simulera även AR-modellerna och lyssna på resultatet: Låter simuleringarna som de ljud ni spelat in? Eftersom vokalljudet är en periodisk signal är det lämpligt att använda ett pulståg som insignal vid simuleringen. Välj intervallet mellan pulserna till periodtiden för signalen. Vid identifiering av ett system med en parametrisk metod (t.ex. AR) är det viktigt att skilja på estimeringsdata och valideringsdata. 6 Uppgift: Talkodning enligt GSM 6.1 Mål Uppgiften går ut på att implementera en enkel variant av den talkodning som används i GSM-näten och undersöka resultatet. 5
6.2 Utförande och redovisning Tala in en signal av längd ca 2 s med samplingsfrekvensen 8000 Hz (för personer med dålig fantasi rekommenderas trädet blåste omkull i stormen ). Den förenklade GSM-kodningen går till på följande sätt: Dela in signalen i segment med 160 sampel i varje. Använd en AR(8)-modell för att modellera ljudet i varje segment. Tag ett pulståg som insignalmodell. Tiden D mellan pulserna och dess amplitud skattas med maximum i kovariansfunktionen för residualerna. Kovariansfunktionen, R e (t), kan exempelvis fås på följande sätt: >> e=filter(m1.a,1,y); % m1 <-> AR-modellen för segmentet >> r=covf(e,100); Finn tidslaggen, D, och amplituden, A, för maximum på R e (t), t > 19. Bilda ett pulståg med amplitud A och pulsavstånd D av längd 160 sampel. Detta ger en vektor som vi kan kalla ehat. Simulera sedan ljudet för varje segment genom: >> yhat=filter(1,m1.a,ehat); Behandla följande punkter/frågeställningar: 1. Implementera GSM-kodningen enligt ovan. Se till att koden detecterar instabila poler och hanterar dem så att inga instabila filter simulears. (Instabila poler ska hanteras i koden även om er signal inte genererar några.) Glöm inte heller att dra bort medelvärdet i varje segment innan identifieringen (mha detrend). Hur låter det rekonstruerade talet? 2. Prova att låta pulståget ha amplitud 1 i alla segment. Vad blir resultatet? 3. Prova att variera modellordningen och lyssna om det låter sämre eller bättre. 4. I GSM-systemet används AR-modeller för att komprimera data. Vilka data måste skickas för att man ska kunna simulera ljudet i varje segment hos mottagaren? Vilken kompressionsgrad motsvarar detta (relativt den råa ljudsignalen)? Tips: En metod för att hantera de instabila filter som eventuellt kan dyka upp är att spegla de instabila polerna för dessa filter i enhetscirkeln (de stabila låter man vara kvar). På detta sätt bevaras filtrets spektralegenskaper. 7 Att tänka på vid rapportskrivning Syftet med varje uppgift ska redovisas i rapporten så den kan läsas separat. I texten ska man tydligt kunna följa ert resonemang. Hänvisningar ska göras till alla figurer och alla slutsatser och tolkningar ska finnas med i den löpande texten. Glöm inte att numrera figurerna så att det är enkelt att hänvisa till dem. 6
Figurer ska graderas och förses med en titel. Om flera kurvor plottas i en figur bör man ange skillnaden mellan kurvorna i figurtexten. I Matlab finns även möjlighet att använda kommandot legend som ger en liten informationsruta som beskriver varje graf i figuren. Ofta ser inte figurerna likadana ut efter utskrift, kolla därför alltid så de är läsbara. Om de inte är det kan man prova att ändra exempelvis linjetjocklek, linjetyp eller textstorlek. Syftet med figurer, bilagor och kod är inte att de ska sammanfatta laborationen/lösningen. Sammanfattningen och slutsatserna ska finnas i texten och figurer m.m. används för verifikation och förtydligande. I en labrapport är det viktigt att förklara vad resultaten av uppgiften innebär! A Inställning av externt ljudkort Detta gäller endast de datorer som har externt ljudkort (orange låda). För den andra typen (inbyggt kort, datorns baksida) behövs inga inställningar! Klicka på I-symbolen längst ner till höger på skärmen, se figur 1. Börja med att kontrollera att HeadPhone and Monitor längst upp till höger är aktiverad (grön). Gör sedan de inställningar som visas i tabell 1. Figur 1: Startsymbol för inställningsapplikationen Kanal Input select Mic preamp Volym Mix IN 1,2 MIC +20 db PÅ, Phantom AV +4.5 AV IN 3,4 MIC +20 db PÅ, Phantom AV +12 AV IN 5,6 IN 7,8 WAVE 1,2 WAVE 3,4 (max) PÅ WAVE 5,6 (max) AV WAVE 7,8 (max) AV MASTER (max) PÅ Tabell 1: De rader i tabellen med streck i alla kolumner motsvarar kanaler som ej används och det spelar ingen roll hur de ställs in. När dessa inställningar är gjorda bör det se ut som i figur 2. Ljudkortets samplingsfrekvens och fördröjning ställs in till 44100 Hz respektive 128 samples enligt figur 3 respektive figur 4. 7
Figur 2: Så här bör det se ut när det är inställningarna i tabell 1 är utförda. Figur 3: Inställning av sampelfrekvensen. 8
Figur 4: Inställning av fördröjningen. 9