Files
arioch-assistant/README.md
2026-04-07 22:06:36 +02:00

102 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Arioch — Assistant vocal (Mistral Large + Voxtral TTS)
Assistant vocal CLI personnalisé utilisant **Mistral Large** pour les réponses et **Voxtral TTS** pour la synthèse vocale.
## Prérequis
- Python 3.10+
- Une clé API Mistral : [console.mistral.ai](https://console.mistral.ai)
- Lecteur audio installé :
- **macOS** : `afplay` (inclus)
- **Linux** : `mpg123``sudo apt install mpg123`
## Installation
```bash
# Cloner et entrer dans le projet
cd arioch-assistant
# Créer un environnement virtuel
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
# Installer les dépendances
pip install -r requirements.txt
# Configurer l'environnement
cp .env.example .env
# Éditer .env et renseigner MISTRAL_API_KEY
```
## Utilisation
```bash
python main.py
```
### Commandes disponibles
| Commande | Description |
|----------|-------------|
| `exit` / `quit` | Quitter l'assistant |
| `reset` | Effacer l'historique de conversation |
| `voice <id>` | Changer la voix Voxtral (voice_id) |
| `voice clear` | Revenir à la voix par défaut |
| `help` | Afficher l'aide |
## Phase 2 : Voix personnalisée (clonage)
Enregistre ta propre voix (ou toute autre) avec un fichier audio de 23 secondes :
```bash
python scripts/register_voice.py --name "Ma voix" --audio sample.mp3 --language fr
```
L'ID retourné peut être ajouté dans `.env` :
```
VOICE_ID=<id_retourné>
```
## Architecture
```
assistant/
├── config.py # Variables d'environnement et constantes
├── llm.py # Chat streaming avec Mistral Large (tool-call loop)
├── tts.py # Synthèse vocale Voxtral TTS
├── audio.py # Lecture audio cross-platform
├── cli.py # Boucle REPL interactive + pipeline TTS streaming
├── mcp_client.py # Gestionnaire de serveurs MCP (tool calling)
└── profile.py # Chargement des profils de personnalité YAML
mcp_servers/
└── traveller_map/ # Serveur MCP Traveller Map (sources TypeScript intégrées)
├── src/ # Sources TypeScript
├── dist/ # Build compilé (node dist/index.js)
└── package.json
profiles/
└── traveller_scout.yaml # Profil avec mcp_servers configuré
scripts/
└── register_voice.py # Enregistrement d'une voix clonée
main.py # Point d'entrée
```
## Serveurs MCP embarqués
Les serveurs MCP sont dans `mcp_servers/`. Pour (re)compiler un serveur :
```bash
cd mcp_servers/traveller_map
npm install # première fois seulement
npm run build
```
Les serveurs sont déclarés dans le profil YAML avec un chemin **relatif** à la racine du projet :
```yaml
mcp_servers:
- name: traveller-map
command: node
args: ["mcp_servers/traveller_map/dist/index.js"]
```