The DTMF Decoder is a Python-based tool developed to decode digits from audio signals generated by telephone keypads. The project employs Digital Signal Processing (DSP) techniques to analyze dual-tone frequencies and identify numeric or symbolic inputs (0-9, *, #). This project highlights foundational skills in signal processing, real-time data analysis, and Python programming.
The DTMF Decoder processes WAV audio files to decode telephone keypad digits by analyzing the distinct dual-tone frequencies associated with each keypress. It uses the Fast Fourier Transform (FFT) for efficient frequency decomposition, allowing it to match audio signals with the standard DTMF frequency table. Noise-filtering techniques are implemented to ensure accuracy even in noisy environments, resulting in an effective and reliable decoder. This project emphasizes my ability to work with real-world audio data, leveraging Python libraries like NumPy and SciPy for frequency analysis and signal processing.
- Python
- Libraries used:
- NumPy for FFT implementation
- pandas for data manipulation
- SciPy for signal processing
To get a local copy up and running, follow these steps:
- Clone the repo
git clone https://github.com/Dhruvbam/Dual-Tone-Multi-Frequency-Decoder
- Ensure you have Python and the necessary libraries installed.
- Run the Jupyter Notebooks (
DTMF - Part 1 - Final.ipynb
throughDTMF - Part 4 - Final.ipynb
) in sequence to experience the encoding, decoding, and analysis process.
- Team Members: Dhruv Maniar (Project Leader), Nafiz Imtiaz (Presentations)
- References: Utilized various resources on FFT and digital signal processing.
Developing the DTMF Decoder provided in-depth experience in Digital Signal Processing (DSP) and real-time audio analysis. I gained practical skills in applying FFT for signal decomposition, implementing noise-filtering techniques to enhance accuracy, and managing real-world audio data in Python. This project also improved my problem-solving abilities, particularly in handling noisy data and optimizing processing speed for near-instantaneous results.