/dsp-labs

GitBook for COM-303 Practical Sessions at EPFL:

Primary LanguagePythonMIT LicenseMIT

Practical Digital Signal Processing Through Voice Effects

By Eric Bezzam, Adrien Hoffet, and Paolo Prandoni

This repository contains the content and scripts for the practical exercises for the EPFL course COM-303, Signal processing for communications.

The material in this book is based off of the voice effects presented in this Jupyter notebook. However, the focus is on implementing these effects in a real-time manner: first in Python with a laptop's soundcard then in C with a microcontroller from ST Microelectronics.

The goal of these exercises is to expose participants to the practical sides of digital signal processing (DSP) through fun and intuitive audio applications, while also using industry-level tools that are low-cost and accessible so that others around the world can try them out.

Even if the hardware cannot be obtained, the main lessons in DSP can still be acquired in Python with your laptop! In this case, you can skip ahead to Chapter 3, but we do recommend reading Section 2.1 on Audio I/O theory. Moreover, you can implement the various voice effects without downloading this repository locally by checking out this Colaboratory notebook. Note that you will need a Gmail account to run the edit/run the cells in the cloud; otherwise, you can download the notebook and run it locally.

Table of contents:

  1. Overview and installation of ST Microelectronics material
  2. Audio passthrough
  3. Alien voice effect
  4. Digital filter design
  5. Granular synthesis pitch shifting
  6. Linear predictive coding
  7. DFT-based pitch shifting

To set up the book for local development or to suggest changes (more than welcome!), check out the setup guide.

If you use this material in your own work, please cite our paper.

E. Bezzam, A. Hoffet, P. Prandoni, Teaching Practical DSP with Off-the-Shelf Hardware and Free Software, Proc. IEEE ICASSP, Brighton, UK, 2019.