voiceCLI

Une seule CLI pour la synthèse vocale et la transcription, entièrement sur ton matériel local. Un seul format de script Markdown pilote chaque moteur — Qwen3-TTS, Chatterbox, Faster Whisper, Kyutai — et un traducteur intégré l'adapte à chacun. Aucune clé cloud, aucune réécriture quand tu changes de modèle.

PythonCUDAAGPL-3.0
01

Ce que c'est

La synthèse vocale locale est éparpillée entre des APIs incompatibles — chaque moteur avec ses propres noms de paramètres, ses bizarreries et ses formats d'entrée. Changer de moteur impose de réécrire tes scripts. voiceCLI supprime ça : un seul outil en ligne de commande et une seule bibliothèque, couvrant la synthèse (TTS) et la transcription (STT) sur plusieurs moteurs locaux.

Tout tourne sur ton propre GPU. Aucune clé d'API cloud, aucune inférence hébergée, aucune facturation au caractère. C'est fait pour les développeurs et créateurs de contenu qui veulent une voix expressive et multilingue sur un matériel qu'ils maîtrisent.

Le contrat durable, c'est le script, pas le moteur. Écris-le une fois ; change de backend sans toucher à ton entrée.

02

Un script, tous les moteurs

Un script voiceCLI est un fichier Markdown : frontmatter YAML pour les défauts, directives dans le corps pour le contrôle par segment. Le même fichier se joue sur Qwen3-TTS, Chatterbox Multilingual ou Chatterbox Turbo — un traducteur intégré lit une matrice de capacités moteur et adapte le script à ce que le moteur cible supporte, en remappant ou retirant le reste.

ModeMoteurs
Synthèse (TTS)Qwen3-TTS · Chatterbox Multilingual · Chatterbox Turbo
Transcription (STT)Faster Whisper · Kyutai

La bibliothèque reflète la CLI : generate, clone et transcribe ont chacun une forme synchrone et asynchrone, renvoyant des résultats typés (TTSResult, TranscriptionResult). Les variantes asynchrones sont celles qu'appelle un agent comme Lyra.

03

Le pipeline

L'entrée traverse quatre étapes avant que l'audio ne sorte. Le traducteur est l'étape porteuse — c'est lui qui permet à un seul script universel de fonctionner partout sans édition manuelle.

  • Parse — lecture du frontmatter Markdown et des directives en ligne.
  • Config — complétion des valeurs manquantes depuis les défauts de voicecli.toml.
  • Traduction — application de la matrice de capacités ; adaptation du script au backend choisi.
  • Synthèse — exécution du moteur, écriture du WAV/MP3 dans voices_out/.
04

Multi-hôtes via NATS

Le modèle GPU et l'appelant n'ont pas à être la même machine. Avec --via-nats, la synthèse est routée vers un satellite TTS distant via NATS — le modèle se charge une fois sur un serveur GPU, et un laptop ou poste sans GPU demande l'audio sans rien charger en local. dictate nats en est le miroir pour la transcription.

C'est ainsi que voiceCLI se branche sur roxabi-factory : il s'enregistre comme worker voix sur le bus de messages, et n'importe quel agent de la factory peut parler ou écouter en publiant une requête.

05

Lance-le

Prérequis : Python 3.11–3.12, un GPU CUDA et le gestionnaire de paquets uv. Les dépendances moteur sont optionnelles : tu n'installes que ce que tu utilises.

uv sync --extra all     # TTS + STT + satellite NATS
uv sync --extra tts     # synthèse seule (Qwen3, Chatterbox)
uv sync --extra stt     # transcription seule (Faster Whisper)
uv sync --extra nats    # satellite / E2E mock — sans grosses deps ML

Lis-le depuis la source — moteurs, traducteur et satellite NATS sont tous en accès ouvert.