Overview
This project was part of the Audio Signal Processing class at EPFL. The goal was to get our hands on increasingly complex pitch shifting techniques.
1- A very simple Robot Voice algorithm using sine modulation
2- A more advanced technique using Granular Synthesis
3- A feature using Linear Predictive Coding to make the output of the Granular Synthesis algorithm sound better
Implementation
The main goal of the project was to apply pitch-shifting in real-time, so we had to handle new situations, where the efficiency had to be maximized.
The implementation for those three methods is done in a jupyter notebook that also summarize the theoretical knowledge behind the Robot Voice and basic Granular Synthesis algorithms.
This jupyter notebook does not contain the theory behing the LPC algorithm since we wrote a dedicated chapter in this repo to be included in this gitbook.
Finally, we also implemented a C version of the robot voice on a soundboard, which is thus able to perform pitch shifting in real time using a microphone and an AUX3.5mm output.
How to run the code
In order to make it simple, we decided to put the 3 implementations in the same jupyter notebook. You should be able to run all the cells without any problem.
The only thing that you should be aware of is that we implemented our pitch-shifters for real-time usage (ie with webcam/microphone) and for .wav file usage. In the latter case, our implementation is looking for a file named speech.wav located on the same subdirectory as the notebook.
Log in or sign up for Devpost to join the conversation.