Tilbake til tidslinjen
skole mar 2024

En tone, fjernet i programvare

En oppgave i analog elektronikk ba oss bygge en båndstoppkrets for å fjerne en konstant tone fra et musikkopptak. Jeg løste det i programvare, først med en spektrogrambasert båndstopp, og deretter med fasekansellering, og sammenlignet de to side om side. Fasekansellering vant; rapporten er på norsk og ligger i repoet som PDF.

Problemet

En musikkfil var blitt ødelagt av en enkelt tone med konstant frekvens, den typen ting som dukker opp som en lys horisontal linje nederst i et spektrogram. Oppgaven: fjern den tonen med minimal skade på musikken under.

Metode 1: spektrogram-båndstopp

  • Ta spektrogrammet av inngangen.
  • Finn frekvensbinet med mest energi i det aktuelle båndet, som er senteret av tonen.
  • Nullstill (eller demp) midtbinet og en liten ring rundt det for å absorbere kvantiseringsslakk i spektrogrammet.
  • Invers-transformer tilbake til tidsdomenet.

Det fungerer, og lyden er ren, men spektrogrammet viser en tydelig tom plass der tonen pleide å være: en tynn svart stripe midt i musikken. Noe av originalsignalet ble kastet sammen med støyen.

Tre stablede spektrogrammer: originalen med en lys horisontal linje, og to bearbeidede versjoner der linja er kuttet ut.
Øverst: originalen med tonen som en lys horisontal stripe. Midten/nederst: båndstopputgangen. Tonen er borte, men et tynt tomt bånd er nå synlig over hele klippet.

Metode 2: fasekansellering

Siden tonen som skal fjernes bare er en addert sinus, kan du kansellere den ved å legge til en ny sinus med samme frekvens og amplitude, faseforskjøvet 180°. Estimer amplitude, frekvens og fase fra opptaket, generer inversen, og legg sammen. I teorien forsvinner tonen, og originalmusikken står helt intakt.

To sinusbølger med samme frekvens, forskjøvet 180°. De summerer til null i hvert punkt.
Ideen: to sinuser med lik amplitude og 180° forskjøvet summerer til null. Estimer tonen, generer inversen, legg til.

I praksis var det omtrent det som skjedde. Utgangsspektrogrammet ser identisk ut med originalen overalt unntatt der tonen pleide å være, og selv der er musikkspekteret rundt bevart. Lyden høres naturlig ut, ingen spor av bearbeidingen slipper gjennom.

To spektrogrammer sammenlignet: originalen og den fasekansellerte utgangen. Den lyse horisontale tonelinja er borte i utgangen, og resten av spekteret er uendret.
Endelig resultat. Original (øverst) mot fasekansellert utgang (nederst). Tone fjernet, omkringliggende spektrum intakt.

Det jeg lærte

At et båndstoppfilter er det riktige svaret på spørsmålet «fjern et smalt frekvensbånd», og det gale svaret på spørsmålet «fjern en konstant sinus». Sistnevnte har mer struktur enn førstnevnte, og en kanselleringstilnærming utnytter denne strukturen fullt ut. Når problemet gir deg så mye struktur, bruk et øyeblikk på å lete etter den før du tar frem det generiske filteret.

Rapport

Hele den norske kursrapporten (figurer, utledninger, før/etter-spektrogrammer) ligger i repoet:

Tilbake til tidslinjen