Repka-Pi 4 reçoit une synthèse vocale locale avec Piper et FastAPI, sans GPU et avec démarrage automatique
Un synthétiseur vocal local basé sur Piper et FastAPI a été assemblé pour Repka-Pi 4. Le système fonctionne sans GPU, accepte des requêtes HTTP de clients…
Traité par IA depuis Habr AI ; édité par Hamidun News
Repka-Pi 4 a démontré un scénario fonctionnel de synthèse vocale locale utilisant le moteur de réseau de neurones Piper. Même sur un ordinateur monocarte avec 2 Go de RAM et sans GPU, la carte peut synthétiser du texte via HTTP, se lancer automatiquement au démarrage du système et servir des appareils externes.
Pourquoi c'est intéressant
L'histoire ici ne parle pas d'une énième API cloud, mais de la migration du TTS directement sur un ordinateur local compact. L'auteur montre qu'un ordinateur monocarte moderne peut déjà gérer non seulement des scripts simples, mais aussi la synthèse vocale en russe de qualité acceptable. Pour les scénarios où la confidentialité, l'autonomie et le fonctionnement sans internet sont importants, c'est critique : les appareils de maison intelligente, les kiosques vocaux, les jouets, les assistants locaux et les plateformes éducatives peuvent parler d'eux-mêmes, sans envoyer de texte à des services externes.
Il est particulièrement important de contraster deux approches. eSpeak NG léger ne nécessite presque aucune ressource et démarre immédiatement, mais sonne trop mécanique. Piper, en revanche, utilise un modèle de réseau de neurones au format ONNX et fournit une voix beaucoup plus naturelle même sans accélérateur graphique. Cela fait de Repka-Pi 4 non pas simplement une carte pour les expériences, mais une base pour des interfaces réelles où la synthèse doit être intelligible et agréable à l'oreille, et non seulement formellement fonctionnelle.
De quoi la solution se compose
Le schéma pratique est assemblé à partir de composants ouverts qui peuvent être déployés localement. Comme option de base, l'auteur utilise eSpeak NG, et pour un son de meilleure qualité — Piper TTS. Piper est installé via un environnement Python, après quoi un modèle de voix en russe est chargé sur la carte. Après cela, la synthèse peut être lancée soit depuis la ligne de commande, soit directement depuis Python, en passant le texte à un flux et en envoyant immédiatement l'audio pour la lecture.
"C'est la voix d'un robot des années 80" — c'est ainsi que l'article décrit le résultat d'eSpeak NG par rapport à
Piper.
- eSpeak NG — l'option la plus légère pour les cartes avec des restrictions strictes de ressources.
- Piper TTS — synthèse de réseau de neurones basée sur VITS et ONNX avec une parole notablement plus naturelle.
- Serveur FastAPI — interface HTTP pour les clients externes qui envoient du texte pour synthèse.
- File d'attente et thread séparé — un mécanisme qui empêche le blocage du client jusqu'à la fin de la synthèse.
- Service systemd — démarrage automatique du TTS après la mise sous tension de la carte.
L'article examine séparément deux modes de fonctionnement de Piper : via l'enregistrement d'un fichier WAV et via la sortie en streaming sans fichier intermédiaire. La deuxième option est particulièrement utile pour les scénarios embarqués car elle élimine les opérations inutiles sur le disque et accélère le chemin du texte au son. L'auteur montre également comment utiliser aplay et sounddevice, et note que les avertissements concernant le sous-remplissage du buffer audio ou l'absence de GPU sur Repka-Pi 4 n'empêchent pas d'obtenir un résultat adapté à une utilisation pratique.
Comment fonctionne le serveur
L'élément clé du projet est un serveur de synthèse vocale basé sur FastAPI. Il s'exécute sur la Repka-Pi 4 elle-même, écoute les requêtes HTTP et reçoit du texte via la route POST /say. Après cela, le serveur ne force pas le client à attendre que la phrase entière soit synthétisée. Au lieu de cela, la tâche est placée dans une queue, et un thread de fond séparé s'occupe d'appeler Piper, d'assembler le flux PCM et d'envoyer le son via sounddevice. Pour les systèmes d'automatisation, c'est plus pratique qu'un appel synchrone, qui gèlerait la logique entière de l'appareil.
Il existe aussi une route de service GET /status : grâce à elle, vous pouvez vérifier si le serveur est libre, si une lecture est actuellement en cours et combien de tâches sont déjà en attente. Le modèle est chargé une seule fois au démarrage de l'application, il n'a donc pas besoin d'être initialisé à chaque requête. Pour un fonctionnement continu, un fichier d'unité systemd est fourni : il démarre le service au démarrage du système, active le redémarrage en cas d'erreur et permet de consulter les logs via journalctl. Selon la description de l'auteur, le délai avant le début de la synthèse varie d'une à plusieurs secondes et dépend de la longueur du texte.
Ce que cela signifie
La valeur pratique de ce cas d'usage est qu'une interface vocale locale n'a plus besoin de matériel coûteux ou d'une connectivité constante au cloud. Repka-Pi 4 peut déjà être utilisé dans les automatisations domestiques, les terminaux, les robots et les projets éducatifs, et avec l'émergence de cartes plus puissantes, il faut s'attendre à un TTS hors ligne plus rapide, une combinaison de synthèse avec reconnaissance vocale et des assistants pleinement fonctionnels en russe fonctionnant entièrement sur l'appareil. Pour le marché DIY russe, c'est un rare exemple de la façon dont une pile prête peut être rapidement transférée d'un article à un prototype fonctionnel.
Vous voulez cesser de lire sur l'IA et commencer à l'utiliser?
AI News est un fil d'actualité IA. Hamidun Academy vous apprend à utiliser l'IA dans votre travail.