realtime-voice-conversion
Real-time voice conversion in Delphi (2002). Provincial winner, 4th Kharazmi Young Festival. Simplified Fourier-based pitch shifting with live waveform display. Free to use.
- Active · last change 2-25-2026
- ★ 1 on GitHub
README
Real-time Voice Conversion
Real-time voice conversion software written in Delphi. It captures live audio from the microphone, applies a simplified Fourier-based pitch and frequency transformation in a windowed fashion, and plays the converted voice back with minimal latency. The program also displays live waveforms of the input and converted sound. Innovation: the Fourier-style transform is simplified and precomputed into a fixed matrix at startup, so at runtime only a fast dot product is applied per sample—no full FFT/inverse FFT in the hot path—enabling real-time conversion on typical hardware of the time.
Provincial winner in the 4th Kharazmi Young Festival (2002) for Real-time Voice Conversion Software.
Authors
- Mehdi Dehghani Firoozabadi
- Mojtaba Dehghani Firoozabadi
Written in 2002.
How It Works
- Capture — Audio is captured from the default recording device in real time (Windows multimedia API, 13 kHz, 8-bit mono).
- Windowing — Input is processed in fixed-size windows (e.g. 200 samples per window).
- Transform — A simplified Fourier-style transformation is used:
- Frequency-domain style basis (cos/sin terms) with configurable pitch shift (
pitch1,pitch2) and frequency band (low/high cutoffs). - The transformation is precomputed into a matrix once at start; at runtime only a fast dot product (convolution with this matrix) is applied per sample. No full FFT/IFFT is run in the hot path, which keeps latency low and allows real-time operation on typical PCs of the time.
- Frequency-domain style basis (cos/sin terms) with configurable pitch shift (
- Output — The converted signal is sent to the sound card and optionally drawn as a waveform.
So the core idea is: simplified, precomputed Fourier-like basis + fast per-sample convolution instead of computing FFT/inverse FFT on every block. That design is the main innovation of this project from a speed perspective.
Features
- Real-time capture, conversion, and playback.
- Pitch presets: Default, Man, Child, Woman, Robot, and custom pitch sliders.
- Frequency filter: Adjustable low and high frequency bounds for the transformation.
- Equalizer: 13-band equalizer with save/load (e.g. config files in
config/). - Conversion modes: Several built-in formulas (Default and other variants) for different tonal effects.
- Waveform display: Live input and converted waveforms (toggle via double-click on the waveform area).
- Save to file: Record and save input and/or output as WAV.
- Background music: Optional playback of a WAV file while using the voice conversion.
- UI: Skins, and English/Farsi interface.
Project Structure
RecordWave.dpr— Main program entry.RecWave.pas/RecWave.dfm— Main form, audio I/O, transformation logic, and UI.About.pas— About dialog.config/— Equalizer presets (e.g.conf1.txt…conf4.txt).Skin/— Skin resources and layout INI files.
Building and Running
- Open the project in Delphi (e.g. Delphi 6 or 7; the code uses
real48and Windows multimedia APIs). - Build the project and run the executable.
- Ensure a microphone is available and selected as the default recording device in Windows.
- Place
White.bmpin the application directory (used for waveform background); skins inSkin/if you use them.
Requirements
- Windows (uses
mmsystem,waveIn/waveOut). - Delphi (version that supports the units used, e.g. Forms, MPlayer, etc.).
- Microphone and sound card.
License
This project is not distributed under a formal open-source license. The authors release it for educational and personal use: you may use, study, and modify it as you wish. If you redistribute or build upon it, attribution to the authors and a mention of the 4th Kharazmi Young Festival (2002) is appreciated.
Acknowledgments
- 4th Kharazmi Young Festival (جشنواره جوان خوارزمی), provincial level, 2002 — Real-time Voice Conversion Software.

