Voix et Téléphonie
Entrée et sortie vocales en temps réel. Quatre canaux couvrent l’ensemble des cas : appels entrants, activation par microphone local, synthèse vocale sortante et conversation en temps réel de qualité SIP.
ClawdTalk (SIP en temps réel)
Voix SIP en duplex intégral propulsée par Telnyx. L’agent parle au cours d’un véritable appel téléphonique (entrant ou sortant). Prend en charge l’interruption (barge-in), l’utilisation d’outils en milieu de tour de parole et l’approvisionnement de numéros régionaux.
allowed_destinations
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/clawdtalk et définissez le champ channels.clawdtalk.<alias>.allowed_destinations.
zerocode
Dans le volet Config, définissez le champ channels.clawdtalk.<alias>.allowed_destinations.
zeroclaw config
zeroclaw config set channels.clawdtalk.<alias>.allowed_destinations <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__clawdtalk__<alias>__allowed_destinations=
api_key*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/clawdtalk et définissez le champ channels.clawdtalk.<alias>.api_key.
zerocode
Dans le volet Config, définissez le champ channels.clawdtalk.<alias>.api_key.
zeroclaw config
zeroclaw config set channels.clawdtalk.<alias>.api_key <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__clawdtalk__<alias>__api_key=
connection_id*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/clawdtalk et définissez le champ channels.clawdtalk.<alias>.connection_id.
zerocode
Dans le volet Config, définissez le champ channels.clawdtalk.<alias>.connection_id.
zeroclaw config
zeroclaw config set channels.clawdtalk.<alias>.connection_id <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__clawdtalk__<alias>__connection_id=
excluded_tools
Outils exclus de la spécification d’outils de ce canal. Lorsque ce paramètre est défini, ces outils ne sont pas exposés au modèle lors des réponses via ce canal.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/clawdtalk et définissez le champ channels.clawdtalk.<alias>.excluded_tools.
zerocode
Dans le volet Config, définissez le champ channels.clawdtalk.<alias>.excluded_tools.
zeroclaw config
zeroclaw config set channels.clawdtalk.<alias>.excluded_tools <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__clawdtalk__<alias>__excluded_tools=
from_number*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/clawdtalk et définissez le champ channels.clawdtalk.<alias>.from_number.
zerocode
Dans le volet Config, définissez le champ channels.clawdtalk.<alias>.from_number.
zeroclaw config
zeroclaw config set channels.clawdtalk.<alias>.from_number <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__clawdtalk__<alias>__from_number=
webhook_secret
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/clawdtalk et définissez le champ channels.clawdtalk.<alias>.webhook_secret.
zerocode
Dans le volet Config, définissez le champ channels.clawdtalk.<alias>.webhook_secret.
zeroclaw config
zeroclaw config set channels.clawdtalk.<alias>.webhook_secret <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__clawdtalk__<alias>__webhook_secret=
api_key (Telnyx) et webhook_secret sont des secrets :
channels.clawdtalk.<alias>.api_keyest un secret. Stocké chiffré, jamais en clair dansconfig.toml. Définissez-le via l’une de ces méthodes, qui chiffrent à l’écriture :
Tableau de bord de la passerelle
Ouvrez /config/channels/clawdtalk et définissez-y le champ channels.clawdtalk.<alias>.api_key.
zerocode
Dans le panneau Config, définissez le champ channels.clawdtalk.<alias>.api_key (la saisie est masquée).
zeroclaw config
zeroclaw config set channels.clawdtalk.<alias>.api_key # demande une saisie masquée, stocke de manière chiffrée
À associer avec : un fournisseur de modèle telnyx pour le cerveau, et assurez-vous que votre compte Telnyx dispose d’une connexion SIP avec l’URL de webhook correcte pointant vers la passerelle ZeroClaw.
Appel vocal (Twilio / Telnyx / Plivo)
Voix opérateur traditionnelle : l’agent décroche, transcrit l’appelant, répond avec la synthèse vocale (TTS). Latence plus élevée que ClawdTalk mais fonctionne avec n’importe quel numéro de téléphone classique et ne nécessite pas le provisionnement d’un trunk SIP. Les appels sortants utilisent from_number et nécessitent l’approbation d’un opérateur lorsque require_outbound_approval est activé.
account_id*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.account_id.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.account_id.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.account_id <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__account_id=
auth_token*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.auth_token.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.auth_token.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.auth_token <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__auth_token=
excluded_tools
Outils exclus de la spécification d’outils de ce canal. Lorsque ce paramètre est défini, ces outils ne sont pas exposés au modèle lors des réponses via ce canal.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.excluded_tools.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.excluded_tools.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.excluded_tools <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__excluded_tools=
from_number*
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.from_number.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.from_number.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.from_number <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__from_number=
max_call_duration_secs
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.max_call_duration_secs.
zerocode
Dans le panneau Config, définissez le champ channels.voice_call.<alias>.max_call_duration_secs.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.max_call_duration_secs <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__max_call_duration_secs=
model_provider
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.model_provider.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.model_provider.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.model_provider <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__model_provider=
require_outbound_approval
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.require_outbound_approval.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.require_outbound_approval.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.require_outbound_approval <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__require_outbound_approval=
transcription_logging
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.transcription_logging.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.transcription_logging.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.transcription_logging <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__transcription_logging=
tts_voice
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.tts_voice.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.tts_voice.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.tts_voice <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__tts_voice=
webhook_base_url
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.webhook_base_url.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.webhook_base_url.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.webhook_base_url <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__webhook_base_url=
webhook_port
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_call et définissez le champ channels.voice_call.<alias>.webhook_port.
zerocode
Dans le volet Config, définissez le champ channels.voice_call.<alias>.webhook_port.
zeroclaw config
zeroclaw config set channels.voice_call.<alias>.webhook_port <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_call__<alias>__webhook_port=
Réveil vocal (mot d’éveil local)
S’exécute localement, écoute via le microphone et déclenche l’interaction avec l’agent lorsqu’il entend le mot d’éveil. Utile pour :
- Assistants vocaux physiques sur les SBC
- Flux de travail de bureau « mot-clé → demande »
- Agents d’automatisation domestique à écoute permanente
L’agent n’envoie l’audio nulle part ; la détection du mot de réveil est locale. Seule la parole post-réveil est capturée et (séparément) transcrite avant d’atteindre le LLM.
energy_threshold
Seuil d’énergie RMS pour la détection d’activité vocale. Les échantillons en dessous de ce niveau sont traités comme du silence. Valeur par défaut : 0.01.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_wake et définissez le champ channels.voice_wake.<alias>.energy_threshold.
zerocode
Dans le volet Config, définissez le champ channels.voice_wake.<alias>.energy_threshold.
zeroclaw config
zeroclaw config set channels.voice_wake.<alias>.energy_threshold <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_wake__<alias>__energy_threshold=
excluded_tools
Outils exclus de la spécification d’outils de ce canal. Lorsque ce paramètre est défini, ces outils ne sont pas exposés au modèle lors des réponses via ce canal.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_wake et définissez le champ channels.voice_wake.<alias>.excluded_tools.
zerocode
Dans le volet Config, définissez le champ channels.voice_wake.<alias>.excluded_tools.
zeroclaw config
zeroclaw config set channels.voice_wake.<alias>.excluded_tools <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_wake__<alias>__excluded_tools=
max_capture_secs
Durée maximale de capture en secondes avant de forcer la transcription. Par défaut : 30.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_wake et définissez le champ channels.voice_wake.<alias>.max_capture_secs.
zerocode
Dans le volet Config, définissez le champ channels.voice_wake.<alias>.max_capture_secs.
zeroclaw config
zeroclaw config set channels.voice_wake.<alias>.max_capture_secs <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_wake__<alias>__max_capture_secs=
silence_timeout_ms
Délai de silence en millisecondes : durée d’attente après le dernier pic d’énergie avant de finaliser une fenêtre de capture. Valeur par défaut : 2000.
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_wake et définissez le champ channels.voice_wake.<alias>.silence_timeout_ms.
zerocode
Dans le volet Config, définissez le champ channels.voice_wake.<alias>.silence_timeout_ms.
zeroclaw config
zeroclaw config set channels.voice_wake.<alias>.silence_timeout_ms <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_wake__<alias>__silence_timeout_ms=
wake_word
Phrase d’éveil à détecter (correspondance de sous-chaîne insensible à la casse). Valeur par défaut : "hey zeroclaw".
Posez-le sur n’importe quelle surface :
Tableau de bord de la passerelle
Ouvrez /config/channels/voice_wake et définissez le champ channels.voice_wake.<alias>.wake_word.
zerocode
Dans le volet Config, définissez le champ channels.voice_wake.<alias>.wake_word.
zeroclaw config
zeroclaw config set channels.voice_wake.<alias>.wake_word <value>
Variable d’environnement
Exportez le remplacement (shells POSIX ; à placer dans ~/.bashrc, ~/.zshrc, .env ou un Dockerfile). Remplacez <alias> par l’alias littéral :
export ZEROCLAW_channels__voice_wake__<alias>__wake_word=
Option de compilation : Voice Wake est conditionné par la fonctionnalité Cargo
voice-wakesurzeroclaw-channels. Compilez avec--features voice-wakepour l’inclure. Sur Android, Voice Wake nécessite Android 8 (niveau d’API 26) ou une version ultérieure.
TTS (synthèse vocale sortante)
TTS est un service de sortie que les canaux appellent, et non un canal entrant à part entière. Les valeurs par défaut globales se trouvent sous tts. Les instances de fournisseurs TTS sont configurées sous providers.tts.<type>.<alias> (OpenAI, ElevenLabs, Google, Edge, Piper) et sélectionnées par agent via le paramètre tts_provider de l’agent. Consultez Model Providers pour les entrées de fournisseurs et la configuration par agent. Les clés API des fournisseurs sont des secrets ; définissez-les via la passerelle, zerocode ou zeroclaw config set, jamais en texte clair.
Budget de latence
La parole semble en temps réel en dessous de ~500 ms de bout en bout. Budgets pratiques :
| Composant | Latence typique |
|---|---|
| Détection de réveil (local) | <100 ms |
| STT (Whisper local) | 300–800 ms par énoncé |
| Premier jeton LLM | 100–2000 ms (dépendant du modèle) |
| TTS premier-audio | 200–700 ms |
| Réseau (cellulaire / PSTN) | 100–300 ms de RTT |
ClawdTalk simplifie plusieurs de ces étapes en maintenant le flux audio en direct ; un appel voice_call standard implique STT + LLM + TTS de manière séquentielle.
STT
La reconnaissance vocale est configurée séparément des canaux vocaux ; consultez la configuration [transcription] dans la Référence de configuration. Les canaux vocaux invoquent le fournisseur de transcription actif lorsqu’ils doivent convertir l’audio en texte.
Notes matérielles
Pour la voix en continu sur un SBC :
- Micro USB : tout micro compatible UAC fonctionne.
arecord -lpour vérifier que le système d’exploitation le détecte. - Haut-parleur : soit la sortie audio USB, soit la prise jack intégrée du SBC ; sélectionnez le périphérique par défaut du système d’exploitation pour l’utilisateur sous lequel le démon s’exécute.
- Les microphones avec AEC (annulation d’écho acoustique) intégrée améliorent considérablement la fiabilité du réveil lorsque le haut-parleur est à proximité.
Voir Matériel → Android pour la configuration audio spécifique à Android.