Bailing : un assistant vocal local assemblé à partir de briques open source
百聆 是一个类似GPT-4o的语音对话机器人,通过ASR+LLM+TTS实现,集成DeepSeek R1等优秀大模型,接入openClaw,真正的个人语音助手,时延低至800ms,Mac等低配置也可运行,支持打断
En bref
- De quoi s’agit-il ?
- Bailing combine FunASR, silero-vad, un LLM distant et plusieurs moteurs TTS pour produire une conversation vocale interruptible sous 800 ms annoncés, sans GPU. Le point faible n'est pas l'architecture mais la dispersion de la configuration entre trois fichiers distincts.
- À qui s’adresse-t-il ?
- Bailing convient à un développeur Python qui veut un assistant vocal local sur Mac ou petite machine, accepte de lire trois fichiers de configuration et de télécharger un modèle ASR à la main, et n'a pas besoin de garanties de support.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 163 jours.
- En quel langage est-il écrit ?
- Principalement Python, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Le problème que Bailing adresse, et à qui il s'adresse
Faire parler une machine demande d'assembler quatre compétences distinctes. Il faut détecter quand l'utilisateur commence et arrête de parler, transcrire, générer une réponse, puis synthétiser cette réponse assez vite pour que la conversation reste naturelle. La plupart des projets open source traitent un seul de ces maillons. Bailing les réunit dans un dépôt unique, en Python, sous licence MIT, avec un objectif explicite : fonctionner sans GPU, y compris sur un Mac ou une machine modeste.
La cible est donc le développeur qui possède déjà une clé API chez un fournisseur de LLM et qui veut une boucle vocale complète plutôt qu'un composant isolé. Le README mentionne aussi bien DeepSeek que OpenAI, Qwen, Gemini ou 01yi comme fournisseurs possibles, ce qui indique que le projet ne dépend pas d'un seul backend. Le projet se présente comme un assistant personnel, pas comme une bibliothèque à intégrer dans un produit existant.
Le trajet d'une phrase, du micro à la réponse parlée
Le pipeline est linéaire et chaque étage est remplaçable. silero-vad surveille le flux audio et décide s'il y a de la parole. Si oui, FunASR transcrit, via le modèle SenseVoiceSmall que l'utilisateur doit télécharger lui-même dans models/SenseVoiceSmall. Le texte part vers le LLM configuré, qui renvoie une réponse textuelle. Enfin, un moteur TTS la transforme en audio : le README cite edge-tts, Kokoro-82M, ChatTTS et la commande say de macOS.
Ce qui distingue Bailing d'un simple enchaînement de scripts, c'est la gestion de l'interruption. Le README fournit un tableau d'états à deux entrées : le lecteur joue-t-il de l'audio, et l'utilisateur parle-t-il. Quatre combinaisons en découlent. Quand l'audio joue et que l'utilisateur parle, le système entre en scène d'interruption. Quand rien ne joue et que l'utilisateur parle, le VAD déclenche l'ASR. Le composant nommé Robot dans le schéma assume la coordination entre modules et la gestion de la mémoire, ce qui explique pourquoi les modules restent indépendants : c'est lui qui porte la logique d'état, pas les étages de traitement.
Configuration : trois fichiers, trois responsabilités
L'installation commence par les commandes habituelles :
git clone https://github.com/wwbin2017/bailing.git cd bailing pip install -r requirements.txt pip install -r third_party/OpenManus/requirements.txt
Ensuite vient la partie qui demande de la vigilance. Les réglages sont répartis sur trois emplacements. config/config.yaml porte la configuration ASR et LLM. third_party/OpenManus/config/config.toml contient model, base_url et api_key pour la partie AIGC, décrite comme étant en test. config/.env reçoit les informations d'authentification openclaw. Aucun de ces trois fichiers ne centralise l'ensemble, et le README ne fournit pas de schéma unique : il faut ouvrir les trois pour comprendre l'état réel du système.
Le lancement dépend du mode. En local, le README indique de se placer dans server puis d'exécuter python server.py, étape présentée comme optionnelle, avant python main.py. En mode serveur, recommandé par la documentation, on lance python server.py depuis la racine, puis on ouvre http://localhost:8000 dans un navigateur et on clique sur le bouton de démarrage. Le README fournit aussi une commande openssl pour générer un certificat auto-signé destiné au développement. Le modèle SenseVoiceSmall n'est pas téléchargé automatiquement : il faut le récupérer depuis Hugging Face et le placer dans models/SenseVoiceSmall, faute de quoi l'ASR ne peut pas démarrer.
Les outils exposés au LLM, et ce qu'ils impliquent
Le README liste six fonctions appelables : get_weather, ielts_speaking_practice, get_day_of_week, schedule_task, open_application et web_search, plus une fonction aigc présentée comme générique et branchée sur openclaw. Les exemples donnés sont concrets : « 杭州天气怎么样 ? » devient zhejiang/hangzhou, « 每天早上8点提醒我喝水 » devient time: '08:00', content: '提醒我喝水'.
Deux points méritent l'attention. open_application agit sur macOS, ce qui ancre une partie des capacités dans un système précis. Et la fonction aigc, celle qui donne accès à openclaw, est signalée comme étant en test, avec un repli possible vers les tags v0.0.1 ou v0.0.2 si elle ne fonctionne pas. C'est un aveu utile : la couche d'orchestration la plus ambitieuse du projet n'est pas encore stabilisée, et le README le dit plutôt que de le masquer.
Ce que la documentation ne permet pas de vérifier
Le chiffre de 800 ms de latence est avancé dans la description et repris dans les objectifs. Aucune méthodologie ne l'accompagne : on ne sait pas sur quel matériel, avec quel fournisseur de LLM, quelle longueur de réponse ni quel moteur TTS. Comme le LLM est distant dans la configuration par défaut, une part significative de ce délai dépend du réseau et du fournisseur, pas du code de Bailing. Traitez ce nombre comme une cible de conception, pas comme une mesure reproductible.
La même prudence s'applique à la mémoire et à la gestion de tâches. Le README les cite dans les fonctionnalités et les coche dans la feuille de route, sans décrire le mécanisme de stockage, la persistance entre sessions ni la façon dont les préférences sont extraites des échanges. Un lecteur qui a besoin de comprendre où sont écrites ces données devra lire le code. Enfin, la feuille de route liste encore « 支持语音唤醒 » comme non cochée : il n'y a pas de détection de mot-clé, il faut donc un clic dans le navigateur pour démarrer, ou un flux déjà ouvert.
Un point de comparaison : les assistants vocaux intégrés aux OS
L'alternative la plus évidente pour un utilisateur de Mac n'est pas un autre dépôt GitHub mais les outils déjà présents dans le système. macOS fournit la synthèse vocale via say et la dictée via son clavier. La différence d'approche est nette : ces outils ne raisonnent pas. Ils transcrivent ou prononcent, mais il n'existe aucun composant qui décide quoi répondre, enchaîne plusieurs étapes ou appelle un outil externe.
Bailing apporte précisément cette couche de décision, au prix d'une dépendance à un LLM distant et d'un assemblage de plusieurs modèles locaux. Si votre besoin se limite à dicter du texte ou à faire lire un fichier, la commande say et la dictée système couvrent le cas sans installer FunASR ni télécharger SenseVoiceSmall. Bailing devient pertinent à partir du moment où vous voulez poser une question, obtenir une réponse construite et éventuellement déclencher une action, le tout à la voix.
Maintenance, licence et coût réel
Le dépôt est publié sous MIT, ce qui autorise l'usage, la modification et la redistribution à condition de conserver la mention de licence. Mais le README contient une clause de non-responsabilité qui restreint le cadre à l'apprentissage et à la recherche personnelle et exclut l'usage commercial ou la production. Il y a donc une tension entre la licence du code et le texte d'accompagnement. Les modèles tiers, SenseVoiceSmall, Kokoro-82M et ChatTTS, ont leurs propres conditions, que la licence MIT du dépôt ne couvre pas.
Le coût d'exploitation tient surtout à l'appel LLM. Le README insiste sur le rapport qualité-prix de DeepSeek, ce qui suggère un usage facturé à la requête. Chaque échange vocal consomme un appel, et une interruption en consomme potentiellement un second si le contexte est renvoyé au modèle. C'est le poste à surveiller, pas le calcul local. Côté maintenance, le rythme de publication est irrégulier : trois versions entre octobre 2024 et mai 2025, puis une dernière poussée en avril 2026. Le README ne donne aucune garantie de support, et la clause de non-responsabilité le confirme explicitement.
Conclusion éditoriale
Bailing convient à un développeur Python qui veut un assistant vocal local sur Mac ou petite machine, accepte de lire trois fichiers de configuration et de télécharger un modèle ASR à la main, et n'a pas besoin de garanties de support. À éviter si vous cherchez un produit maintenu avec SLA, si vous refusez d'envoyer vos transcriptions à un LLM distant, ou si vous voulez une chaîne entièrement hors ligne : la licence MIT ne couvre pas les modèles tiers, et la clause de non-usage commercial du README mérite d'être lue avant tout déploiement en entreprise.
Notes de la communauté