Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

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.

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

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

  1. Capture — Audio is captured from the default recording device in real time (Windows multimedia API, 13 kHz, 8-bit mono).
  2. Windowing — Input is processed in fixed-size windows (e.g. 200 samples per window).
  3. 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.
  4. 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 real48 and 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.bmp in the application directory (used for waveform background); skins in Skin/ 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.