Application C++ Windows de transformation vocale en temps reel.
Le pipeline capture le son via WASAPI, applique une chaine d'effets DSP (Pitch, EQ, Gain, Clipper), puis renvoie le flux vers un peripherique de sortie.
- Capture/rendu WASAPI en mode partage event-driven.
- Chaine DSP temps reel:
- Pitch shift (SoundTouch)
- EQ 3 bandes (HP -> Presence -> LP)
- Gain
- Soft clipping
- Mode IA local (prototype) avec profils timbraux:
neutral,bright,dark,robot. - Presets predefinis:
girl,demon,robot,radio. - Monitoring runtime: frames capture/rendu, xruns, latence approximative.
Prerequis:
- Windows
- CMake 3.20+
- Compilateur C++20 (MSVC)
Commandes:
cmake -B build
cmake --build build --config ReleaseBuild debug:
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build --config Debugctest --test-dir build --output-on-failurecmake --build build --target run_diagnostic_runtime --config DebugLister les peripheriques:
.\build\Release\voice_changer.exe --list-devicesLancer avec indices explicites:
.\build\Release\voice_changer.exe --in-index 0 --out-index 2 --preset girlMode IA local:
.\build\Debug\voice_changer.exe --in-index 0 --out-index 2 --preset girl --mode ai --ai-profile bright --ai-blend 0.7 --ai-intensity 0.5Lancer avec sous-chaines de noms:
.\build\Release\voice_changer.exe --in Microphone --out Speakers --pitch-semitones 4 --gain 1.7--list-devices--in <substring>--out <substring>--in-index <index>--out-index <index>--gain <float>--clip-drive <float>--clip-out <float>--pitch-semitones <float>--mode <dsp|ai>--ai-profile <neutral|bright|dark|robot>--ai-blend <float>--ai-intensity <float>--st-seq-ms <int>--st-seek-ms <int>--st-overlap-ms <int>--preset <girl|demon|robot|radio>--fine-tune-audio <path>(Nouveau)--preset-name <name>(Nouveau)--load-preset <name>(Nouveau)--show-presets-dir(Nouveau)--ai-model <path>(Nouveau, ONNX optionnel)
Entrainate un preset sur un echantillon de reference:
.\build\Release\voice_changer.exe --fine-tune-audio "C:\samples\target_voice.wav" --preset-name "VoixCible_v1"Charger et utiliser le preset:
.\build\Release\voice_changer.exe --in-index 0 --out-index 2 --load-preset "VoixCible_v1"Les presets sont sauvegardes sous ~/.voice-changer/presets/.
Les presets sont sauvegardes sous C:/Users/<user>/Documents/voice-changer/presets/.
Afficher le dossier exact:
.\build\Release\voice_changer.exe --show-presets-dirUtiliser un modele ONNX (si binaire compile avec ONNX Runtime):
.\build\Release\voice_changer.exe --in-index 0 --out-index 2 --mode ai --load-preset "VoixCible_v1" --ai-model "D:\models\tiny_vc.onnx"Les scripts de depart sont dans scripts/neural:
prepare_dataset.py: decoupe les segments voix utilestrain_tiny_vc.py: entraine un premier modele et exporte ONNXinfer_tiny_vc.py: inference offline de validationrun_train_gpu.ps1: lance un entrainement GPU avec checkpoints/reprisecapture_source_voice.py: capture micro et fabrique automatiquementdata/source_chunkscapture_source_voice.ps1: wrapper PowerShell pour la capture source
Installation:
pip install -r .\scripts\neural\requirements.txtLister les micros detectes:
powershell -ExecutionPolicy Bypass -File .\scripts\neural\capture_source_voice.ps1 -ListDevicesEnregistrer ta voix source (ex: 3 minutes) et generer les chunks source:
powershell -ExecutionPolicy Bypass -File .\scripts\neural\capture_source_voice.ps1 -Device 0 -Seconds 180 -OutputWav .\audio_samples\source-voice.wav -ChunksDir .\data\source_chunksExemple d'entrainement GPU avec checkpoints:
powershell -ExecutionPolicy Bypass -File .\scripts\neural\run_train_gpu.ps1 -SourceDir .\data\source_chunks -TargetDir .\data\target_chunks -OutModel .\models\tiny_vc.onnx -Epochs 40 -StepsPerEpoch 300Important:
- Si tu mets a jour les scripts
train_tiny_vc.py/infer_tiny_vc.py, relance un entrainement complet avant de juger la similarite vocale. - Le binaire runtime C++ attend des features pseudo-mel specifiques; un modele entraine avec une autre featurization produira souvent une voix peu transformee.
Reprise depuis le dernier checkpoint:
powershell -ExecutionPolicy Bypass -File .\scripts\neural\run_train_gpu.ps1 -ResumeLastsrc/app: point d'entree et presets.src/audio: capture/rendu WASAPI + utilitaires peripheriques.src/core: stats et ring buffer.src/dsp: effets audio.src/ai: conversion vocale locale et interface de backends IA.src/ui: UI desktop MVP Win32.third_party/soundtouch: dependance pitch shift.
Des fichiers de contexte techniques sont disponibles dans docs/context:
00-overview.md01-architecture.md02-operations.md03-improvements-backlog.mdfile-inventory.txt
Script: scripts/diagnostic-runtime.ps1
Exemple:
powershell -ExecutionPolicy Bypass -File .\scripts\diagnostic-runtime.ps1 -BuildConfig Debug -InIndex 0 -OutIndex 2 -Preset girl -DurationSec 15Diagnostic mode IA local:
powershell -ExecutionPolicy Bypass -File .\scripts\diagnostic-runtime.ps1 -BuildConfig Debug -InIndex 0 -OutIndex 2 -Preset girl -Mode ai -AiProfile bright -AiBlend 0.7 -AiIntensity 0.5 -DurationSec 15.\build\voice_changer_ui.exeL'UI propose:
- Selection de l'entree et de la sortie audio par nom (listes deroulantes).
- Bouton
Refresh devicespour recharger les peripheriques detectes.
Workflow GitHub Actions: .github/workflows/ci.yml