{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Excercise 3: Audio Processing\n", "\n", "To complete the exercise, follow the instructions and complete the missing code and write the answers where required. All points, except the ones marked with (N points) are mandatory. The optional tasks require more independent work and some extra effort. Without completing them you can get at most 75 points for the exercise (the total number of points is 100 and results in grade 10). Sometimes there are more optional exercises and you do not have to complete all of them, you can get at most 100 points.\n", "\n", "In this exercise, you will generate simple sounds, vary their parameters and perform frequency analysis. You will also familiarize yourself with basic audio filtering and effects.\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "%matplotlib notebook\n", "\n", "import scipy\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# Import library for sound visualization\n", "import IPython.display as ipd\n", "# Import librosa to work with sound\n", "import librosa as lb\n", "import librosa.display as lbd\n", "import librosa.feature as lbf\n", "import soundfile" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Run this cell to download the data used in this exercise\n", "import zipfile, urllib.request, io\n", "zipfile.ZipFile(io.BytesIO(urllib.request.urlopen(\"http://data.vicos.si/lukacu/multimedia/exercise3.zip\").read())).extractall()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Assignment 1: Generating sounds\n", "\n", "The first assignment will focus on generating simple waveforms, plotting them and playing\n", "them via speakers. It consists of three subtasks in total." ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "a) Generate a sine wave and plot it. The sine wave is a function of time\n", "\n", "\$$\n", "f(t) = A \\sin{(\\omega t + \\phi)}\n", "\$$\n", "\n", "where $A$ is the amplitude (from 0 to 1), $\\omega$ is the angular frequency (i.e. the frequency in Hz multiplied by $2\\pi$), and $\\phi$ is the phase (in radians). Use the standard sampling frequency of 44.1 kHz. That means that you have to calculate the value of the waveform 44100 times for each second of your recording.\n", "\n", "Note: Plot only the first oscillation of the selected sine wave.\n", "\n", "![image.png](attachment:image.png)\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "sr = 44100 # Sampling rate\n", "\n", "# TO-DO: Generate a sine wave y and plot it\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using IPython.display.Audio, you can play an audio signal:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "ipd.Audio(y, rate=sr) # sr = sampling rate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "librosa.output.write_wav allows you to save the NumPy array of generated audio signal as a WAV file." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# y = audio signal\n", "# sr = sample rate\n", "soundfile.write('output_audio.wav', y, sr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The librosa.display.waveplot allows us to plot the amplitude envelope of a waveform. Plot only the first oscillation of the selected sine wave.\n", "\n", "Note, that if $y$ is monophonic, a filled curve is drawn between $\\left[-\\mathrm{abs}(y), \\mathrm{abs}(y)\\right]$. However, if $y$ is stereo, then the curve is drawn between $\\left[\\mathrm{abs}(y[1]), \\mathrm{abs}(y[0])\\right]$, so that the left and right channels are drawn above and below the axis, respectively." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "plt.figure(figsize=(14, 5))\n", "lbd.waveplot(y[:100], sr=sr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) Sounds encountered in real life situations are never as clean as the sinusoids you generated in the previous assignment. Try adding some noise to the waveform, then plot and listen to the result. Experiment with different types of noise! For better visibility, plot only the first oscillation of the selected waveform." ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [], "source": [ "# TO-DO: Add noise to the selected waveform, plot it and listen to it\n" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [], "source": [ "ipd.Audio(y_noise1, rate=sr) # sr = sampling rate" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "ipd.Audio(y_noise2, rate=sr) # sr = sampling rate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "c) Harmonics are what gives different instruments their sound color or timbre. They are softer multiples of the primary frequency. Try adding multiples of the primary frequency at a lower amplitude to your sinusoid and listen to it. Experiment with odd and even multiples." ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [], "source": [ "# TO-DO: Add multiples of the primary frequency at different amplitudes to your sinusoid\n", "# plot and listen to the results\n", "#ipd.Audio(y2, rate=sr)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "d) $\\star$ (10 points) Write a function to generate non-sinusoidal waveforms of your choice like square, triangle or sawtooth. You can also experiment with more exotic sounds, like chirp. Implement at least three different sounds." ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [], "source": [ "# TO-DO: Implement and plot at least three diferent non-sinusoidal waveforms.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Assignment 2: Frequency analysis\n", "\n", "Due to the high sampling rates, visually interpreting the digital audio signal is usually difficult. Transforming the signal to the frequency spectrum allows us to interpret the signal content more directly." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a) Calculate the Fourier transform of a simple waveform using Scipy function fft. You also need to divide the result by the number of points used for the FFT, which is equal to the signal length by default. Since the result is complex and symmetrical, you will only use the positive part to plot the frequency components. Take the absolute value of the result and then use the first $\\frac{F_s}{2}$ values (where $F_s$ is the sampling rate) to get useful values. The resulting spectrum should go from $0$ to $\\frac{F_s}{2}$, which is the highest theoretical frequency that can be contained in the signal (per the Nyquist theorem). Plot the results for all signals you generated in Assignment 1.\n", "\n", "Question: How do the formula parameters influence the frequency spectrum?" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [], "source": [ "# TO-DO: Calculate Fourier transform y_fft of the signal from Assignment 1.c and plot the results\n", "# sample spacing\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) $\\star$ (5 points) Aliasing can occur when the signal is sampled too sparsely, which causes high frequencies included in the signal to reflect back to lower spectrum and produce errors in the frequency analysis. Use one of the signals from Assignment 1 and sample it with a frequency below the Nyquist frequency (i.e. the sampling rate should be lower than twice the highest frequency present in the signal). Calculate and plot the frequency spectrum.\n", "\n", "Question: Considering the human hearing range, does the standard sampling frequency of 44.1 kHz seem arbitrary?" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "# TO-DO: Visualize the aliasing problem on one of the signals from Assignment 1\n", "# sample spacing\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Assignment 3: Filtering\n", "\n", "Audio signals can be processed to extract or attenuate certain frequency ranges. Since the design of audio filters is a large field, you will only focus on simple low- and high-pass Gaussian filters and their effects on audio signals.\n", "\n", "Note: It might be hard to hear the difference when using laptop speakers, therefore consider listening to the result using headphones.\n" ] }, { "attachments": { "image.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "a) Use the included function gaussian_kernel to calculate a kernel for performing a low-pass operation on an audio signal. Use the function np.convolve to perform the filtering. Plot and listen to the result. Choose a signal that will produce obvious results.\n", "\n", "![image.png](attachment:image.png)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "def gaussian_kernel(width, sigma):\n", " # width is the width of the produced kernel\n", " # sigma defines the shape of the Gaussian function\n", " \n", " x = np.linspace(-width / 2, width / 2, width)\n", " y = np.exp(-x ** 2 / (2 * sigma ** 2));\n", " y = y / np.sum(y); # normalize\n", " \n", " return y" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "# Load simpleLoop audio file. \n", "y_sl, sr_sl = lb.load('simpleLoop.wav')\n", "\n", "# TO-DO: Choose an appropriate Gaussian kernel\n", "# Filter the signal y_sl using the provided gaussian_kernel function and your selected kernel\n", "\n", "# Plot the results\n", "plt.figure()\n", "plt.plot(y_sl) # Plot the unfiltered signal\n", "plt.plot(y_filtered) # Plot the filtered signal over it" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "# Listen to the original audio file\n", "ipd.Audio(y_sl, rate=sr_sl)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "# Listen to the filtered audio file\n", "# What do you notice?\n", "ipd.Audio(y_filtered, rate=sr_sl)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) Convert the low-pass Gaussian kernel into a high-pass filter. This can be achieved by alternately multiplying the kernel coefficients by $-1$. The resulting kernel will remove the low frequency components of the signal an only retain the high frequencies. Test on a sound of your choice. You can also use sounds provided ('simpleLoop.wav', 'piano.wav')." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "# Load the audio file\n", "y_sl_hp, sr_sl_hp = lb.load('simpleLoop.wav')\n", "\n", "# TO-DO: Convert the low-pass Gaussian kernel into a high-pass filter\n", "# Filter the signal y_sl_hp using the provided gaussian_kernel function and your high-pass filter kernel\n", "# Plot the results\n" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "# Listen to the filtere audio file\n", "# What do you notice?\n", "ipd.Audio(y_filtered_hp, rate=sr_sl_hp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Assignment 4: Effects\n", "\n", "Special kinds of filters can also produce other effects. Here you will implement some of them." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a) **Delay**: A delay time-shifts the signal and adds it to itself. Write a function that\n", "introduces a delay of a specified duration. You can again use the function **np.convolve** or perform a delay as a weighted sum of original and shifted signal using **scipy.ndimage.interpolation.shift**. Experiment with different delay values, below and above 100ms. Do you notice a difference?" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "# TO-DO: write a function that introduces a delay of a specified duration\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "b) Echo: Echo is a combination of multiple delays combined with attenuation. Write a function that accepts the number of echoes and their corresponding damping factors. Display and play the results." ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "scrolled": true }, "outputs": [], "source": [ "# TO-DO: write a function that accepts the number of echoes and their corresponding damping factors\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "c) $\\star$ (10 points) Flanger: Is an effect produced by introducing a delay which depends on an outside oscillator. Put simpler, the delay for each sample of the output is not constant but changes based on a sinusoidal function." ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [], "source": [ "# TO-DO\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "d) $\\star$ (10 points) Distortion: This effect changes the frequency content of the signal by adding gain to high energy frequencies and thus producing clipping. Implement it by using the formula from the lecture slides\n", "\n", "\$$\n", "y(n) = \\frac{(1 + k) x(n)}{1 + k |x(n)|},\n", "\$$\n", "\n", "where k controls the amount of distortion.\n", "\n", "Question: How do these effects change the signal in both time and frequency\n", "domains? If you want to complete this task it is important to know this, not to just implement the effect.\n", "\n" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [], "source": [ "# TO-DO\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 2 }