Valgfri oppgave uke 7
Dette er en fortsettelse fra forrige ukes innleveringsoppgave, som du må ha gjort for at denne oppgaven skal gi mening. Har du ikke gjort denne oppgaven, bør du heller begynne med den og se hvor langt du kommer.
Oppgave 5 (valgfri konkurranse)
Skriv koden for denne oppgaven i en fil med navn konkurranse_DELTAKERNAVN.py, der du bytter ut DELTAKERNAVN med et valgfritt deltakernavn. Husk å levere den filen for å delta i konkurransen.
Her finner du en fil med et lydsignal som inneholder en hemmelig kode. Koden er vanskelig/umulig å høre pga støy og andre problemer med lyden. Last ned filen og legg den i samme mappe som konkurranse.py ligger. Prekoden under viser deg hvordan du spiller av lyden.
Konkurransen går ut på å skrive kode som endrer lyden slik at du klarer å høre hva den hemmelige koden er. Jo renere og penere lyd du klarer å få, jo bedre. Det er altså to mål i konkurransen:
- Få tak i den hemmelige koden
- Lag en ny lyd som er så ren og pen som mulig (lite støy og andre artifakter). Vi vil høre på de ulike bidragene i neste gruppetime og sammen kåre en vinner.
Start med følgende prekode og følg instruksjonene i kommentarene:
import numpy as np
import matplotlib.pyplot as plt
import pickle
def skriv_lyd_til_fil(lydliste):
# dette er funksjonen du har fra før ...
def les_lyd_fra_fil():
lyd = pickle.load(open("kode.pickle", "rb"))
return lyd
hemmelig_kode = les_lyd_fra_fil()
# hemmelig_kode er nå en liste som inneholder lyden du skal jobbe med
# Start gjerne med å skrive lyden til fil og spille den av å få en fealing av hva du har å jobbe med:
skriv_lyd_til_fil(hemmelig_kode)
# Det kan være lurt å plotte lyden for å se etter mulige problemer og ting du kan gjøre for å forbedre signalet
plt.plot(hemmelig_kode)
plt.show()
# tips: Det kan være lurt å zoome inn på deler av plottet for å studere det nærmere
def fiks_lyd(lyd):
# Implementer ditt bidrag til konkurransen i denne funksjonen
# denne funksjonen kan kalle andre funksjoner (om du vil dele opp koden din),
# men den skal returnere en ny liste som er den korrigerte lyden
# det er denne lyden du vil bli vurdert på
pass
Et hint: Støy i lyd kommer ofte i form av enkeltverdier som er mye høyere eller lavere enn verdier i nærheten:
[1, 2, 3, 4, 1000, 5, 4, 3, 2, 1, 0, 1, 2, 3]
Her er typisk tallet 1000 støy, og lyden vil høres bedre ut om man hadde byttet ut 1000 med f. eks verdien før eller etter (eller gjennomsnittet/medianen av verdiene rundt).