Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

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 string[] · default []

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* string · default

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* string · default

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 string[] · default []

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* string · default

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 string? · default null

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_key est un secret. Stocké chiffré, jamais en clair dans config.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* string · default

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* string · default

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 string[] · default []

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* string · default

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 integer · default 3600

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 VoiceProvider · default "twilio"

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 bool · default true

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 bool · default true

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 string? · default null

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 string? · default null

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 integer · default 8090

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 number · default 0.009999999776482582

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 string[] · default []

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 integer · default 30

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 integer · default 2000

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 string · default "hey zeroclaw"

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-wake sur zeroclaw-channels. Compilez avec --features voice-wake pour 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 :

ComposantLatence typique
Détection de réveil (local)<100 ms
STT (Whisper local)300–800 ms par énoncé
Premier jeton LLM100–2000 ms (dépendant du modèle)
TTS premier-audio200–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 -l pour 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.