A custom FreeSWITCH module for real-time voice morphing during active SIP calls.
Option A — via Git:
git clone https://github.com/humayun2000444/mod_voicechanger.git
cd mod_voicechangerOption B — unzip the attached module if you're using a packaged release:
cd ~/humayun/freeswitch_mods/mod_voicechangerThen, clone the required dependency:
git clone https://github.com/Signalsmith-Audio/linear.git
cd linear
mkdir -p signalsmith-linearcd ~/humayun/freeswitch_mods/mod_voicechanger
mkdir build
cd build
cmake ../src
make
sudo make installThis will compile and install mod_voicechanger.so.
sudo groupadd freeswitch
sudo useradd -g freeswitch freeswitch
sudo cp mod_voicechanger.so /usr/local/freeswitch/mod/
sudo chown freeswitch:freeswitch /usr/local/freeswitch/mod/mod_voicechanger.soEdit the module autoload config:
sudo nano /etc/freeswitch/autoload_configs/modules.conf.xmlAdd the following line inside the <modules> section:
<load module="mod_voicechanger"/>Then restart FreeSWITCH:
sudo systemctl restart freeswitchEnsure two SIP users are configured and registered:
-
User 1:
- Username:
1000 - Password:
1000
- Username:
-
User 2:
- Username:
1001 - Password:
1001
- Username:
📌 Domain and server address: Use your FreeSWITCH server IP and SIP port.
Find it using:
fs_cli -x "sofia status"Place a call from 1000 to 1001 using a SIP client or FreeSWITCH CLI:
fs_cli -x "originate user/1000 user/1001"Check active calls:
fs_cli -x "show calls"Identify the UUID for the call leg you want to morph (typically the second one).
Start morphing:
voicechanger start <UUID> <factor>Adjust morphing factor:
voicechanger set <UUID> <new_factor>Stop morphing:
voicechanger stop <UUID>voicechanger start 68ad2658-0b35-44a0-ba7b-a408b7344063 1.2
voicechanger set 68ad2658-0b35-44a0-ba7b-a408b7344063 1.5
voicechanger stop 68ad2658-0b35-44a0-ba7b-a408b7344063-
Morphing factors:
>1.0: increases pitch (e.g.,1.2,1.5)<1.0: lowers pitch (e.g.,0.8)
-
Make sure:
- The module is placed in
/usr/local/freeswitch/mod/ - The module has proper ownership (
freeswitch:freeswitch) - FreeSWITCH was restarted after placing the module
- The module is placed in
-
Verify module loaded:
fs_cli -x "show modules" | grep voicechanger