OmniVoice – Clonez votre propre voix en local et en français
L’équipe Next-gen Kaldi de Xiaomi a sorti OmniVoice, un modèle de synthèse vocale qui parle 646 langues et qui est capable de “recopier” une voix à partir d’un extrait de huit secondes minimum. Et tout ça en local et gratuitement !
Le français y est d’ailleurs la cinquième langue du corpus d’entraînement, avec 23 675 heures d’audio de référence sur les 581 000 qu’ils ont avalées. Autant dire que le modèle a entendu du français toute sa vie, et ça s’entend au résultat.
Voilà donc comment cloner votre propre voix, du début à la fin. Comptez 3,3 Go de poids à télécharger la première fois, et quelques minutes de manipulation une fois qu’ils sont sur votre disque.
Installer OmniVoice
Pour cela, il vous faut Python 3.10 ou plus récent, et un environnement isolé (sinon vous allez casser autre chose). Sur Mac, les deux lignes suivantes suffiront puisque le modèle utilise le GPU intégré via MPS :
python3 -m venv ~/omnivoice-env && source ~/omnivoice-env/bin/activate
pip install torch==2.8.0 torchaudio==2.8.0
pip install omnivoice num2words
Sur Linux et Windows, ça devra se faire avec une carte NVIDIA (sous Windows, l’environnement s’active avec omnivoice-envScriptsactivate) sauf que PyTorch doit venir de l’index CUDA, donc remplacez la deuxième ligne par celle-ci :
pip install torch==2.8.0+cu128 torchaudio==2.8.0+cu128 --extra-index-url https://download.pytorch.org/whl/cu128
Notez que sans carte graphique du tout, ça marche quand même. J’ai rejoué la même installation dans un conteneur Linux en processeur seul, elle passe sans rien changer… mais il m’a fallu cinq fois la durée de l’audio en temps de calcul.
Une fois installé, pour savoir que c’est en place, tapez omnivoice-infer --help et là, la liste des options doit s’afficher, sans la moindre erreur d’import. Le num2words de la troisième ligne, lui, ne sert qu’au chemin Python dont je parle plus bas, alors gardez-le sous le coude.
Les 8 secondes qui font tout
C’est l’étape que tout le monde bâcle et c’est pourtant celle qui est décisive pour avoir un bon résultat. Le projet recommande entre 3 et 10 secondes, pas plus car au-delà, ça ralentit le calcul et ça dégrade le clonage. Prenez donc un passage où vous parlez sans blanc, sans “euh”, sans musique derrière, et découpez-le proprement comme ceci avec
(ou autre logiciel de votre choix) :
ffmpeg -i mon-enregistrement.m4a -ss 12 -t 8 -ac 1 -ar 24000 moi.wav
La qualité de cet extrait est très importante donc si vous enregistrez votre voix, mettez bien le micro près de la bouche, dans une pièce sans écho, et évitez les
MP3 récupéré à partir de YouTube
.
Écrivez ensuite dans un fichier ce que dit exactement l’extrait, mot pour mot. Vous pouvez sauter cette étape (le modèle transcrit alors tout seul avec Whisper), sauf qu’il téléchargera 1,6 Go de plus pour ça et qu’il se plante parfois sur un nom propre, ce qui abîme le clonage.
C’est le moment de générer !
Avant de taper quoi que ce soit, relisez bien votre texte et réécrivez les chiffres en toutes lettres. La ligne de commande n’a aucune option de normalisation, donc “2345” sortira n’importe comment alors que “deux mille trois cent quarante-cinq” se lit tout seul. C’est du côté Python que la normalisation se fait, avec normalize_text=True, la langue passée en language="fr" et le num2words de tout à l’heure… sans la langue, votre texte français part chez le normaliseur anglais qui réclamera même une lib sans version précompilée pour les Mac Apple Silicon.
Voici la commande complète :
omnivoice-infer --model k2-fsa/OmniVoice
--text "Bonjour, ceci est un test de clonage de voix en français réalisé avec OmniVoice."
--ref_audio moi.wav --ref_text "$(cat moi.txt)"
--language fr --num_step 32 --output ma-voix.wav
Vous devez voir passer un “Saved to ma-voix.wav” au bout de quelques secondes. Sur mon M4 Max, j’ai compté 4 à 6 secondes de calcul pour 5,4 secondes d’audio, et moitié moins avec --num_step 16 au prix d’un peu de netteté. Au passage, le facteur 40 fois plus rapide que le temps réel qu’annonce le projet sur son site, ça a été mesuré sur un H100 avec des noyaux d’accélération maison, et pas sur un ordi de bureau…
Si la ligne de commande vous rebute, vous pouvez aussi passer par la commande : omnivoice-demo --ip 127.0.0.1 --port 8001 qui permet de faire la même chose mais dans le navigateur, avec le bouton d’import pour l’extrait et un menu déroulant pour la langue. Pensez juste à lancer export GRADIO_ANALYTICS_ENABLED=False avant, parce que l’interface web appelle les serveurs de Gradio au démarrage et qu’on n’a pas envie de leur filer nos data à ceux-là.
L’audio, lui, ne bouge pas de votre machine.
L’extrait de référence de 8 secondes chargé à gauche, la langue calée sur French, et la sortie de 5 secondes à droite une fois le clonage terminé.
Maintenant, une fois que c’est fait, écoutez le fichier avant d’en faire quoi que ce soit, parce que le modèle avale parfois des morceaux de phrase. Sur mes 24 générations de la même phrase, 5 ont perdu ou déformé un mot. C’était presque toujours le premier ou le dernier… et ce n’est pas une surprise, c’est un bug connu de l’outil. Faut donc relancer parfois plusieurs fois pour avoir un résultat OK.
Dernier truc pour ceux qui passeront par Python : la voix se sauvegarde une fois pour toutes. model.create_voice_clone_prompt() puis .save("ma_voix.pt") produisent un fichier minuscule que les sessions suivantes rechargeront sans repasser par l’extrait ni par la transcription. Regénérez alors une phrase avec, et comparez à l’oreille : si c’est bien la même voix, vous pouvez ranger le WAV de référence.
Voici l’extrait que j’ai généré avec ma voix. Ces 6 secondes d’audio ont pris 14 secondes à la génération sur mon Mac Studio :
Le kit à coller dans votre agent
Si vous faites faire le boulot par Claude Code, Codex ou n’importe quel agent IA, voilà le brief à lui donner tel quel. J’y ai mis les pièges qui m’ont coûté un peu de temps :
Ce que vous avez le droit d’en faire
Alors le code d’OmniVoice est bien sous licence Apache 2.0, mais les poids du modèle, eux, sont sous CC-BY-NC à cause du corpus qui a servi à les entraîner. Cela veut dire que tout usage commercial est interdit. Donc si vous avez prévu un projet afin de gagner de l’argent, regardez plutôt du côté de
, qui est sous licence MIT, qui parle également français et qui “tatoue” même ses sorties (vu que maintenant c’est obligatoire avec la loi IA).
Pour l’usage perso, en revanche, rien ne vous arrête, et le règlement européen sur l’IA exclut explicitement de son champ l’activité personnelle non professionnelle.
Ce qui est cool avec Omnivoice, c’est que ce clonage de votre voix se fait à 100% en local et c’est bien tout l’intérêt de la manœuvre ! Et si l’idée c’est plutôt de faire lire vos ebooks par la machine, je vous invite à jeter un œil à
côté Mac.
Source :

Leave a Comment