From c8c5cfc0c375a599c8cd01c4e57ed712f4b7ae9c Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Fri, 24 Apr 2026 09:52:44 +0000 Subject: [PATCH] chore(i18n): refresh pt-BR translations --- docs/pt-BR/plugins/google-meet.md | 213 ++++++++------------- docs/pt-BR/plugins/voice-call.md | 298 +++++++++++++++++++---------- docs/pt-BR/tools/media-overview.md | 106 +++++----- 3 files changed, 330 insertions(+), 287 deletions(-) diff --git a/docs/pt-BR/plugins/google-meet.md b/docs/pt-BR/plugins/google-meet.md index 3541dfd73..ba530441d 100644 --- a/docs/pt-BR/plugins/google-meet.md +++ b/docs/pt-BR/plugins/google-meet.md @@ -1,54 +1,52 @@ --- read_when: - - Você quer que um agente OpenClaw entre em uma chamada do Google Meet - - Você está configurando Chrome, Chrome Node ou Twilio como transporte do Google Meet -summary: 'Plugin Google Meet: entrar em URLs explícitas do Meet pelo Chrome ou Twilio com padrões de voz em tempo real' -title: Plugin Google Meet + - Você quer que um agente do OpenClaw entre em uma chamada do Google Meet + - Você está configurando o Chrome, o Node do Chrome ou o Twilio como um transporte do Google Meet +summary: 'Plugin do Google Meet: entre em URLs explícitas do Meet pelo Chrome ou Twilio com padrões de voz em tempo real' +title: Plugin do Google Meet x-i18n: - generated_at: "2026-04-24T08:59:10Z" + generated_at: "2026-04-24T09:51:45Z" model: gpt-5.4 provider: openai - source_hash: 8d430a1f2d6ee7fc1d997ef388a2e0d2915a6475480343e7060edac799dfc027 + source_hash: f1673ac4adc9cf163194a340dd6e451d0e4d28bb62adeb126898298e62106d43 source_path: plugins/google-meet.md workflow: 15 --- # Google Meet (Plugin) -Suporte a participantes do Google Meet para OpenClaw. +Suporte a participantes do Google Meet para o OpenClaw. -O Plugin é explícito por design: +O Plugin é explícito por definição: -- Ele só entra em uma URL explícita `https://meet.google.com/...`. +- Ele entra apenas em uma URL explícita `https://meet.google.com/...`. - A voz `realtime` é o modo padrão. -- A voz em tempo real pode retornar ao agente OpenClaw completo quando for necessário - raciocínio mais profundo ou uso de ferramentas. +- A voz em tempo real pode retornar ao agente completo do OpenClaw quando for necessário raciocínio mais profundo ou ferramentas. - A autenticação começa como OAuth pessoal do Google ou com um perfil do Chrome já autenticado. - Não há anúncio automático de consentimento. - O backend de áudio padrão do Chrome é `BlackHole 2ch`. - O Chrome pode ser executado localmente ou em um host Node pareado. -- O Twilio aceita um número de discagem mais PIN opcional ou sequência DTMF. -- O comando da CLI é `googlemeet`; `meet` é reservado para fluxos de - teleconferência mais amplos do agente. +- O Twilio aceita um número de discagem mais um PIN ou sequência DTMF opcional. +- O comando da CLI é `googlemeet`; `meet` fica reservado para fluxos mais amplos de teleconferência com agentes. ## Início rápido -Instale as dependências locais de áudio e verifique se o provedor realtime pode usar -OpenAI: +Instale as dependências locais de áudio e configure um provedor de voz em tempo real no backend. OpenAI é o padrão; Google Gemini Live também funciona com `realtime.provider: "google"`: ```bash brew install blackhole-2ch sox export OPENAI_API_KEY=sk-... +# or +export GEMINI_API_KEY=... ``` -`blackhole-2ch` instala o dispositivo de áudio virtual `BlackHole 2ch`. O -instalador do Homebrew exige reinicialização antes que o macOS exponha o dispositivo: +`blackhole-2ch` instala o dispositivo de áudio virtual `BlackHole 2ch`. O instalador do Homebrew exige uma reinicialização antes que o macOS exponha o dispositivo: ```bash sudo reboot ``` -Após reiniciar, verifique os dois componentes: +Após reiniciar, verifique as duas partes: ```bash system_profiler SPAudioDataType | grep -i BlackHole @@ -82,7 +80,7 @@ Entre em uma reunião: openclaw googlemeet join https://meet.google.com/abc-defg-hij ``` -Ou deixe um agente entrar por meio da ferramenta `google_meet`: +Ou deixe um agente entrar usando a ferramenta `google_meet`: ```json { @@ -91,25 +89,17 @@ Ou deixe um agente entrar por meio da ferramenta `google_meet`: } ``` -O Chrome entra usando o perfil autenticado do Chrome. No Meet, selecione `BlackHole 2ch` para -o caminho de microfone/alto-falante usado pelo OpenClaw. Para áudio duplex limpo, use -dispositivos virtuais separados ou um grafo no estilo Loopback; um único dispositivo BlackHole é -suficiente para um primeiro teste rápido, mas pode causar eco. +O Chrome entra usando o perfil autenticado no Chrome. No Meet, escolha `BlackHole 2ch` para o caminho de microfone/alto-falante usado pelo OpenClaw. Para áudio duplex limpo, use dispositivos virtuais separados ou um grafo no estilo Loopback; um único dispositivo BlackHole já basta para um primeiro teste rápido, mas pode causar eco. ### Gateway local + Chrome no Parallels -Você **não** precisa de um Gateway OpenClaw completo nem de uma chave de API de modelo dentro de uma VM macOS -apenas para fazer a VM hospedar o Chrome. Execute o Gateway e o agente localmente e depois execute um -host Node na VM. Ative o Plugin incluído na VM uma vez para que o Node anuncie o comando do Chrome: +Você **não** precisa de um Gateway completo do OpenClaw nem de uma chave de API de modelo dentro de uma VM macOS apenas para fazer a VM ser a dona do Chrome. Execute o Gateway e o agente localmente, depois execute um host Node na VM. Ative o Plugin empacotado na VM uma vez para que o Node anuncie o comando do Chrome: O que roda em cada lugar: -- Host do Gateway: Gateway OpenClaw, workspace do agente, chaves de modelo/API, provedor - realtime e a configuração do Plugin Google Meet. -- VM macOS do Parallels: CLI/host Node do OpenClaw, Google Chrome, SoX, BlackHole 2ch - e um perfil do Chrome autenticado no Google. -- Não é necessário na VM: serviço do Gateway, configuração do agente, chave OpenAI/GPT ou configuração - do provedor de modelo. +- Host do Gateway: Gateway do OpenClaw, workspace do agente, chaves de modelo/API, provedor realtime e a configuração do Plugin do Google Meet. +- VM macOS no Parallels: CLI/host Node do OpenClaw, Google Chrome, SoX, BlackHole 2ch e um perfil do Chrome autenticado no Google. +- Não necessário na VM: serviço Gateway, configuração do agente, chave OpenAI/GPT ou configuração de provedor de modelo. Instale as dependências da VM: @@ -123,14 +113,14 @@ Reinicie a VM após instalar o BlackHole para que o macOS exponha `BlackHole 2ch sudo reboot ``` -Após reiniciar, verifique se a VM consegue ver o dispositivo de áudio e os comandos SoX: +Após reiniciar, confirme que a VM consegue ver o dispositivo de áudio e os comandos do SoX: ```bash system_profiler SPAudioDataType | grep -i BlackHole command -v rec play ``` -Instale ou atualize o OpenClaw na VM e então ative o Plugin incluído nela: +Instale ou atualize o OpenClaw na VM e então ative o Plugin empacotado lá: ```bash openclaw plugins enable google-meet @@ -142,15 +132,14 @@ Inicie o host Node na VM: openclaw node run --host --port 18789 --display-name parallels-macos ``` -Se `` for um IP de LAN e você não estiver usando TLS, o Node recusará o -WebSocket em texto puro, a menos que você permita explicitamente essa rede privada confiável: +Se `` for um IP da LAN e você não estiver usando TLS, o Node recusará o WebSocket em texto puro, a menos que você habilite explicitamente essa rede privada confiável: ```bash OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ openclaw node run --host --port 18789 --display-name parallels-macos ``` -Use a mesma variável de ambiente ao instalar o Node como LaunchAgent: +Use a mesma variável de ambiente ao instalar o Node como um LaunchAgent: ```bash OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ @@ -158,9 +147,7 @@ OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \ openclaw node restart ``` -`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` é uma variável de ambiente do processo, não uma -configuração de `openclaw.json`. `openclaw node install` a armazena no ambiente do LaunchAgent -quando ela está presente no comando de instalação. +`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` é uma variável de ambiente de processo, não uma configuração de `openclaw.json`. `openclaw node install` a armazena no ambiente do LaunchAgent quando ela está presente no comando de instalação. Aprove o Node a partir do host do Gateway: @@ -208,62 +195,40 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij ou peça ao agente para usar a ferramenta `google_meet` com `transport: "chrome-node"`. -Se `chromeNode.node` for omitido, o OpenClaw seleciona automaticamente apenas quando exatamente um -Node conectado anuncia `googlemeet.chrome`. Se vários Nodes com essa capacidade estiverem -conectados, defina `chromeNode.node` como o ID do Node, nome de exibição ou IP remoto. +Se `chromeNode.node` for omitido, o OpenClaw faz seleção automática apenas quando exatamente um Node conectado anuncia `googlemeet.chrome`. Se houver vários Nodes compatíveis conectados, defina `chromeNode.node` como o id do Node, o nome de exibição ou o IP remoto. Verificações comuns de falha: -- `No connected Google Meet-capable node`: inicie `openclaw node run` na VM, - aprove o pareamento e verifique se `openclaw plugins enable google-meet` foi executado - na VM. Confirme também que o host do Gateway permite o comando do Node com - `gateway.nodes.allowCommands: ["googlemeet.chrome"]`. -- `BlackHole 2ch audio device not found on the node`: instale `blackhole-2ch` - na VM e reinicie a VM. -- O Chrome abre mas não consegue entrar: autentique-se no Chrome dentro da VM e confirme que - esse perfil consegue entrar manualmente na URL do Meet. -- Sem áudio: no Meet, roteie microfone/alto-falante pelo caminho de dispositivo de áudio virtual - usado pelo OpenClaw; use dispositivos virtuais separados ou roteamento no estilo Loopback - para áudio duplex limpo. +- `No connected Google Meet-capable node`: inicie `openclaw node run` na VM, aprove o pareamento e confirme que `openclaw plugins enable google-meet` foi executado na VM. Confirme também que o host do Gateway permite o comando do Node com `gateway.nodes.allowCommands: ["googlemeet.chrome"]`. +- `BlackHole 2ch audio device not found on the node`: instale `blackhole-2ch` na VM e reinicie a VM. +- O Chrome abre, mas não consegue entrar: faça login no Chrome dentro da VM e confirme que esse perfil consegue entrar manualmente na URL do Meet. +- Sem áudio: no Meet, encaminhe o microfone/alto-falante pelo caminho do dispositivo de áudio virtual usado pelo OpenClaw; use dispositivos virtuais separados ou roteamento no estilo Loopback para áudio duplex limpo. -## Observações de instalação +## Notas de instalação O padrão realtime do Chrome usa duas ferramentas externas: -- `sox`: utilitário de áudio de linha de comando. O Plugin usa os comandos `rec` e `play` - para a ponte de áudio G.711 mu-law padrão em 8 kHz. -- `blackhole-2ch`: driver de áudio virtual para macOS. Ele cria o dispositivo de áudio `BlackHole 2ch` - pelo qual o Chrome/Meet pode ser roteado. +- `sox`: utilitário de áudio de linha de comando. O Plugin usa seus comandos `rec` e `play` para a ponte de áudio padrão G.711 mu-law de 8 kHz. +- `blackhole-2ch`: driver de áudio virtual do macOS. Ele cria o dispositivo de áudio `BlackHole 2ch` pelo qual o Chrome/Meet pode ser roteado. -O OpenClaw não inclui nem redistribui nenhum dos dois pacotes. A documentação instrui os usuários a -instalá-los como dependências do host via Homebrew. O SoX é licenciado como -`LGPL-2.0-only AND GPL-2.0-only`; o BlackHole é GPL-3.0. Se você construir um -instalador ou appliance que inclua o BlackHole junto com o OpenClaw, revise os -termos de licenciamento upstream do BlackHole ou obtenha uma licença separada da Existential Audio. +O OpenClaw não empacota nem redistribui nenhum dos dois pacotes. A documentação orienta os usuários a instalá-los como dependências do host via Homebrew. O SoX é licenciado como `LGPL-2.0-only AND GPL-2.0-only`; o BlackHole é GPL-3.0. Se você criar um instalador ou appliance que empacote BlackHole com o OpenClaw, revise os termos de licenciamento upstream do BlackHole ou obtenha uma licença separada da Existential Audio. ## Transportes ### Chrome -O transporte Chrome abre a URL do Meet no Google Chrome e entra usando o perfil autenticado -do Chrome. No macOS, o Plugin verifica `BlackHole 2ch` antes da inicialização. -Se configurado, ele também executa um comando de verificação de integridade da ponte de áudio e um comando -de inicialização antes de abrir o Chrome. Use `chrome` quando Chrome/áudio estiverem no host do Gateway; -use `chrome-node` quando Chrome/áudio estiverem em um Node pareado, como uma VM macOS do Parallels. +O transporte Chrome abre a URL do Meet no Google Chrome e entra usando o perfil autenticado no Chrome. No macOS, o Plugin verifica a presença de `BlackHole 2ch` antes da inicialização. Se estiver configurado, ele também executa um comando de verificação de integridade da ponte de áudio e um comando de inicialização antes de abrir o Chrome. Use `chrome` quando o Chrome/áudio estiver no host do Gateway; use `chrome-node` quando o Chrome/áudio estiver em um Node pareado, como uma VM macOS no Parallels. ```bash openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome-node ``` -Encaminhe o áudio de microfone e alto-falante do Chrome pela ponte de áudio local do OpenClaw. -Se `BlackHole 2ch` não estiver instalado, a entrada falhará com um erro de configuração -em vez de entrar silenciosamente sem um caminho de áudio. +Encaminhe o áudio de microfone e alto-falante do Chrome pela ponte local de áudio do OpenClaw. Se `BlackHole 2ch` não estiver instalado, a entrada falha com um erro de configuração em vez de entrar silenciosamente sem um caminho de áudio. ### Twilio -O transporte Twilio é um plano de discagem estrito delegado ao Plugin Voice Call. Ele -não analisa páginas do Meet em busca de números de telefone. +O transporte Twilio é um plano de discagem estrito delegado ao Plugin Voice Call. Ele não analisa páginas do Meet em busca de números de telefone. ```bash openclaw googlemeet join https://meet.google.com/abc-defg-hij \ @@ -272,7 +237,7 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \ --pin 123456 ``` -Use `--dtmf-sequence` quando a reunião precisar de uma sequência personalizada: +Use `--dtmf-sequence` quando a reunião exigir uma sequência personalizada: ```bash openclaw googlemeet join https://meet.google.com/abc-defg-hij \ @@ -283,16 +248,13 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \ ## OAuth e preflight -O acesso à Google Meet Media API usa primeiro um cliente OAuth pessoal. Configure -`oauth.clientId` e, opcionalmente, `oauth.clientSecret`, e então execute: +O acesso à API de mídia do Google Meet usa primeiro um cliente OAuth pessoal. Configure `oauth.clientId` e opcionalmente `oauth.clientSecret`, depois execute: ```bash openclaw googlemeet auth login --json ``` -O comando imprime um bloco de configuração `oauth` com um refresh token. Ele usa PKCE, -callback localhost em `http://localhost:8085/oauth2callback` e um fluxo manual de -copiar/colar com `--manual`. +O comando imprime um bloco de configuração `oauth` com um token de atualização. Ele usa PKCE, callback localhost em `http://localhost:8085/oauth2callback` e um fluxo manual de copiar/colar com `--manual`. Estas variáveis de ambiente são aceitas como fallback: @@ -311,24 +273,23 @@ Resolva uma URL do Meet, código ou `spaces/{id}` por meio de `spaces.get`: openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hij ``` -Execute o preflight antes de trabalhar com mídia: +Execute o preflight antes do trabalho de mídia: ```bash openclaw googlemeet preflight --meeting https://meet.google.com/abc-defg-hij ``` -Defina `preview.enrollmentAcknowledged: true` somente após confirmar que seu projeto Cloud, -principal OAuth e participantes da reunião estão inscritos no Google -Workspace Developer Preview Program para as APIs de mídia do Meet. +Defina `preview.enrollmentAcknowledged: true` somente após confirmar que seu projeto do Cloud, principal OAuth e participantes da reunião estão inscritos no Google Workspace Developer Preview Program para APIs de mídia do Meet. ## Configuração -O caminho realtime comum com Chrome precisa apenas do Plugin ativado, BlackHole, SoX -e uma chave OpenAI: +O caminho realtime comum do Chrome precisa apenas do Plugin ativado, BlackHole, SoX e uma chave de provedor de voz em tempo real no backend. OpenAI é o padrão; defina `realtime.provider: "google"` para usar Google Gemini Live: ```bash brew install blackhole-2ch sox export OPENAI_API_KEY=sk-... +# or +export GEMINI_API_KEY=... ``` Defina a configuração do Plugin em `plugins.entries.google-meet.config`: @@ -350,18 +311,15 @@ Padrões: - `defaultTransport: "chrome"` - `defaultMode: "realtime"` -- `chromeNode.node`: ID/nome/IP opcional do Node para `chrome-node` +- `chromeNode.node`: id/nome/IP opcional do Node para `chrome-node` - `chrome.audioBackend: "blackhole-2ch"` -- `chrome.audioInputCommand`: comando SoX `rec` que grava áudio G.711 mu-law - em 8 kHz para stdout -- `chrome.audioOutputCommand`: comando SoX `play` que lê áudio G.711 mu-law - em 8 kHz de stdin +- `chrome.audioInputCommand`: comando SoX `rec` que grava áudio G.711 mu-law de 8 kHz na stdout +- `chrome.audioOutputCommand`: comando SoX `play` que lê áudio G.711 mu-law de 8 kHz da stdin - `realtime.provider: "openai"` - `realtime.toolPolicy: "safe-read-only"` - `realtime.instructions`: respostas faladas breves, com `openclaw_agent_consult` para respostas mais profundas -- `realtime.introMessage`: verificação breve de prontidão falada quando a ponte realtime - se conecta; defina como `""` para entrar em silêncio +- `realtime.introMessage`: verificação curta falada de prontidão quando a ponte realtime se conecta; defina como `""` para entrar em silêncio Substituições opcionais: @@ -377,8 +335,15 @@ Substituições opcionais: node: "parallels-macos", }, realtime: { + provider: "google", toolPolicy: "owner", introMessage: "Say exactly: I'm here.", + providers: { + google: { + model: "gemini-2.5-flash-native-audio-preview-12-2025", + voice: "Kore", + }, + }, }, } ``` @@ -411,14 +376,9 @@ Agentes podem usar a ferramenta `google_meet`: } ``` -Use `transport: "chrome"` quando o Chrome estiver em execução no host do Gateway. Use -`transport: "chrome-node"` quando o Chrome estiver em execução em um Node pareado, como uma VM -do Parallels. Em ambos os casos, o modelo realtime e `openclaw_agent_consult` são executados no -host do Gateway, então as credenciais do modelo permanecem lá. +Use `transport: "chrome"` quando o Chrome estiver em execução no host do Gateway. Use `transport: "chrome-node"` quando o Chrome estiver em execução em um Node pareado, como uma VM no Parallels. Em ambos os casos, o modelo realtime e `openclaw_agent_consult` são executados no host do Gateway, então as credenciais do modelo permanecem lá. -Use `action: "status"` para listar sessões ativas ou inspecionar um ID de sessão. Use -`action: "speak"` com `sessionId` e `message` para fazer o agente realtime -falar imediatamente. Use `action: "leave"` para marcar uma sessão como encerrada. +Use `action: "status"` para listar sessões ativas ou inspecionar um ID de sessão. Use `action: "speak"` com `sessionId` e `message` para fazer o agente realtime falar imediatamente. Use `action: "leave"` para marcar uma sessão como encerrada. ```json { @@ -428,60 +388,43 @@ falar imediatamente. Use `action: "leave"` para marcar uma sessão como encerrad } ``` -## Consulta do agente realtime +## Consulta ao agente em tempo real -O modo realtime do Chrome é otimizado para um loop de voz ao vivo. O provedor de voz -realtime escuta o áudio da reunião e fala por meio da ponte de áudio configurada. -Quando o modelo realtime precisa de raciocínio mais profundo, informações atuais ou ferramentas normais do -OpenClaw, ele pode chamar `openclaw_agent_consult`. +O modo realtime do Chrome é otimizado para um loop de voz ao vivo. O provedor de voz em tempo real ouve o áudio da reunião e fala por meio da ponte de áudio configurada. Quando o modelo realtime precisa de raciocínio mais profundo, informações atuais ou ferramentas normais do OpenClaw, ele pode chamar `openclaw_agent_consult`. -A ferramenta de consulta executa o agente OpenClaw normal nos bastidores com contexto recente da transcrição -da reunião e retorna uma resposta falada concisa para a sessão de voz realtime. O modelo de voz pode -então falar essa resposta de volta na reunião. +A ferramenta de consulta executa o agente normal do OpenClaw nos bastidores com o contexto recente da transcrição da reunião e retorna uma resposta falada concisa para a sessão de voz em tempo real. O modelo de voz pode então falar essa resposta de volta na reunião. `realtime.toolPolicy` controla a execução da consulta: - `safe-read-only`: expõe a ferramenta de consulta e limita o agente normal a `read`, `web_search`, `web_fetch`, `x_search`, `memory_search` e `memory_get`. -- `owner`: expõe a ferramenta de consulta e permite que o agente normal use a política - normal de ferramentas do agente. -- `none`: não expõe a ferramenta de consulta ao modelo de voz realtime. +- `owner`: expõe a ferramenta de consulta e permite que o agente normal use a política normal de ferramentas do agente. +- `none`: não expõe a ferramenta de consulta ao modelo de voz em tempo real. -A chave da sessão de consulta é delimitada por sessão do Meet, então chamadas de consulta subsequentes -podem reutilizar o contexto anterior da consulta durante a mesma reunião. +A chave da sessão de consulta tem escopo por sessão do Meet, para que chamadas de consulta de acompanhamento possam reutilizar o contexto anterior da consulta durante a mesma reunião. -Para forçar uma verificação falada de prontidão depois que o Chrome tiver entrado totalmente na chamada: +Para forçar uma verificação falada de prontidão depois que o Chrome já tiver entrado totalmente na chamada: ```bash openclaw googlemeet speak meet_... "Say exactly: I'm here and listening." ``` -## Observações +## Notas -A API oficial de mídia do Google Meet é orientada a recebimento, então falar em uma chamada do Meet -ainda exige um caminho de participante. Este Plugin mantém esse limite visível: -o Chrome cuida da participação pelo navegador e do roteamento local de áudio; o Twilio cuida -da participação por discagem telefônica. +A API oficial de mídia do Google Meet é orientada a recebimento, então falar em uma chamada do Meet ainda exige um caminho de participante. Este Plugin mantém esse limite visível: o Chrome lida com a participação no navegador e o roteamento de áudio local; o Twilio lida com a participação por discagem telefônica. -O modo realtime do Chrome exige uma destas opções: +O modo realtime do Chrome precisa de um destes: -- `chrome.audioInputCommand` mais `chrome.audioOutputCommand`: o OpenClaw controla a - ponte do modelo realtime e encaminha áudio G.711 mu-law em 8 kHz entre esses - comandos e o provedor de voz realtime selecionado. -- `chrome.audioBridgeCommand`: um comando de ponte externo controla todo o caminho - local de áudio e deve sair após iniciar ou validar seu daemon. +- `chrome.audioInputCommand` mais `chrome.audioOutputCommand`: o OpenClaw controla a ponte do modelo realtime e canaliza áudio G.711 mu-law de 8 kHz entre esses comandos e o provedor de voz em tempo real selecionado. +- `chrome.audioBridgeCommand`: um comando de ponte externa controla todo o caminho de áudio local e deve encerrar após iniciar ou validar seu daemon. -Para áudio duplex limpo, encaminhe a saída do Meet e o microfone do Meet por dispositivos -virtuais separados ou por um grafo de dispositivo virtual no estilo Loopback. Um único dispositivo -BlackHole compartilhado pode ecoar outros participantes de volta para a chamada. +Para áudio duplex limpo, encaminhe a saída do Meet e o microfone do Meet por dispositivos virtuais separados ou por um grafo de dispositivo virtual no estilo Loopback. Um único dispositivo BlackHole compartilhado pode ecoar outros participantes de volta para a chamada. -`googlemeet speak` aciona a ponte de áudio realtime ativa para uma sessão do -Chrome. `googlemeet leave` interrompe essa ponte. Para sessões Twilio delegadas -por meio do Plugin Voice Call, `leave` também desliga a chamada de voz subjacente. +`googlemeet speak` aciona a ponte de áudio realtime ativa para uma sessão do Chrome. `googlemeet leave` interrompe essa ponte. Para sessões do Twilio delegadas por meio do Plugin Voice Call, `leave` também encerra a chamada de voz subjacente. -## Relacionados +## Relacionado - [Plugin Voice Call](/pt-BR/plugins/voice-call) -- [Modo Talk](/pt-BR/nodes/talk) -- [Como criar Plugins](/pt-BR/plugins/building-plugins) +- [Modo de conversa](/pt-BR/nodes/talk) +- [Criando Plugins](/pt-BR/plugins/building-plugins) diff --git a/docs/pt-BR/plugins/voice-call.md b/docs/pt-BR/plugins/voice-call.md index e3dc31190..8e619a4b8 100644 --- a/docs/pt-BR/plugins/voice-call.md +++ b/docs/pt-BR/plugins/voice-call.md @@ -1,54 +1,54 @@ --- read_when: - Você quer fazer uma chamada de voz de saída a partir do OpenClaw - - Você está configurando ou desenvolvendo o Plugin voice-call -summary: 'Plugin Voice Call: chamadas de saída + entrada via Twilio/Telnyx/Plivo (instalação do Plugin + configuração + CLI)' -title: Plugin Voice Call + - Você está configurando ou desenvolvendo o plugin de chamada de voz +summary: 'Plugin de chamada de voz: chamadas de saída + entrada via Twilio/Telnyx/Plivo (instalação do plugin + configuração + CLI)' +title: Plugin de chamada de voz x-i18n: - generated_at: "2026-04-24T06:05:28Z" + generated_at: "2026-04-24T09:51:46Z" model: gpt-5.4 provider: openai - source_hash: 4cd57118133506c22604ab9592a823546a91795ab425de4b7a81edbbb8374e6d + source_hash: 6aed4e33ce090c86f43c71280f033e446f335c53d42456fdc93c9938250e9af6 source_path: plugins/voice-call.md workflow: 15 --- -# Voice Call (Plugin) +# Chamada de Voz (plugin) -Chamadas de voz para o OpenClaw via Plugin. Compatível com chamadas de saída para notificações e -conversas de vários turnos com políticas de entrada. +Chamadas de voz para o OpenClaw via um plugin. Compatível com notificações de saída e +conversas de múltiplas interações com políticas de entrada. Provedores atuais: - `twilio` (Programmable Voice + Media Streams) - `telnyx` (Call Control v2) -- `plivo` (Voice API + transferência XML + GetInput speech) -- `mock` (dev/sem rede) +- `plivo` (Voice API + transferência XML + fala com GetInput) +- `mock` (desenvolvimento/sem rede) Modelo mental rápido: -- Instalar o Plugin +- Instalar o plugin - Reiniciar o Gateway - Configurar em `plugins.entries.voice-call.config` - Usar `openclaw voicecall ...` ou a ferramenta `voice_call` ## Onde ele é executado (local vs remoto) -O Plugin Voice Call é executado **dentro do processo do Gateway**. +O plugin de Chamada de Voz é executado **dentro do processo do Gateway**. -Se você usa um Gateway remoto, instale/configure o Plugin na **máquina que executa o Gateway** e depois reinicie o Gateway para carregá-lo. +Se você usa um Gateway remoto, instale/configure o plugin na **máquina que executa o Gateway** e depois reinicie o Gateway para carregá-lo. ## Instalação -### Opção A: instalar pelo npm (recomendado) +### Opção A: instalar via npm (recomendado) ```bash openclaw plugins install @openclaw/voice-call ``` -Reinicie o Gateway depois. +Reinicie o Gateway em seguida. -### Opção B: instalar de uma pasta local (dev, sem copiar) +### Opção B: instalar a partir de uma pasta local (desenvolvimento, sem cópia) ```bash PLUGIN_SRC=./path/to/local/voice-call-plugin @@ -56,7 +56,7 @@ openclaw plugins install "$PLUGIN_SRC" cd "$PLUGIN_SRC" && pnpm install ``` -Reinicie o Gateway depois. +Reinicie o Gateway em seguida. ## Configuração @@ -69,8 +69,8 @@ Defina a configuração em `plugins.entries.voice-call.config`: "voice-call": { enabled: true, config: { - provider: "twilio", // or "telnyx" | "plivo" | "mock" - fromNumber: "+15550001234", // or TWILIO_FROM_NUMBER for Twilio + provider: "twilio", // ou "telnyx" | "plivo" | "mock" + fromNumber: "+15550001234", // ou TWILIO_FROM_NUMBER para Twilio toNumber: "+15550005678", twilio: { @@ -81,8 +81,8 @@ Defina a configuração em `plugins.entries.voice-call.config`: telnyx: { apiKey: "...", connectionId: "...", - // Telnyx webhook public key from the Telnyx Mission Control Portal - // (Base64 string; can also be set via TELNYX_PUBLIC_KEY). + // Chave pública do Webhook do Telnyx do Telnyx Mission Control Portal + // (string Base64; também pode ser definida via TELNYX_PUBLIC_KEY). publicKey: "...", }, @@ -91,19 +91,19 @@ Defina a configuração em `plugins.entries.voice-call.config`: authToken: "...", }, - // Webhook server + // Servidor de Webhook serve: { port: 3334, path: "/voice/webhook", }, - // Webhook security (recommended for tunnels/proxies) + // Segurança de Webhook (recomendado para túneis/proxies) webhookSecurity: { allowedHosts: ["voice.example.com"], trustedProxyIPs: ["100.64.0.1"], }, - // Public exposure (pick one) + // Exposição pública (escolha uma) // publicUrl: "https://example.ngrok.app/voice/webhook", // tunnel: { provider: "ngrok" }, // tailscale: { mode: "funnel", path: "/voice/webhook" } @@ -114,11 +114,11 @@ Defina a configuração em `plugins.entries.voice-call.config`: streaming: { enabled: true, - provider: "openai", // optional; first registered realtime transcription provider when unset + provider: "openai", // opcional; usa o primeiro provedor de transcrição em tempo real registrado quando não definido streamPath: "/voice/stream", providers: { openai: { - apiKey: "sk-...", // optional if OPENAI_API_KEY is set + apiKey: "sk-...", // opcional se OPENAI_API_KEY estiver definido model: "gpt-4o-transcribe", silenceDurationMs: 800, vadThreshold: 0.5, @@ -129,6 +129,17 @@ Defina a configuração em `plugins.entries.voice-call.config`: maxPendingConnectionsPerIp: 4, maxConnections: 128, }, + + realtime: { + enabled: false, + provider: "google", // opcional; usa o primeiro provedor de voz em tempo real registrado quando não definido + providers: { + google: { + model: "gemini-2.5-flash-native-audio-preview-12-2025", + voice: "Kore", + }, + }, + }, }, }, }, @@ -138,45 +149,130 @@ Defina a configuração em `plugins.entries.voice-call.config`: Observações: -- Twilio/Telnyx exigem uma URL de Webhook **publicamente acessível**. -- Plivo exige uma URL de Webhook **publicamente acessível**. +- Twilio/Telnyx exigem uma URL de Webhook **acessível publicamente**. +- Plivo exige uma URL de Webhook **acessível publicamente**. - `mock` é um provedor local para desenvolvimento (sem chamadas de rede). -- Se configurações antigas ainda usarem `provider: "log"`, `twilio.from` ou chaves legadas `streaming.*` do OpenAI, execute `openclaw doctor --fix` para reescrevê-las. -- Telnyx exige `telnyx.publicKey` (ou `TELNYX_PUBLIC_KEY`), a menos que `skipSignatureVerification` seja true. +- Se configurações mais antigas ainda usarem `provider: "log"`, `twilio.from` ou chaves legadas `streaming.*` do OpenAI, execute `openclaw doctor --fix` para reescrevê-las. +- O Telnyx exige `telnyx.publicKey` (ou `TELNYX_PUBLIC_KEY`) a menos que `skipSignatureVerification` seja `true`. - `skipSignatureVerification` é apenas para testes locais. -- Se você usar o plano gratuito do ngrok, defina `publicUrl` com a URL exata do ngrok; a verificação de assinatura é sempre aplicada. -- `tunnel.allowNgrokFreeTierLoopbackBypass: true` permite Webhooks do Twilio com assinaturas inválidas **somente** quando `tunnel.provider="ngrok"` e `serve.bind` está em loopback (agente local do ngrok). Use apenas para desenvolvimento local. -- URLs do plano gratuito do ngrok podem mudar ou adicionar comportamento intermediário; se `publicUrl` divergir, as assinaturas do Twilio falharão. Para produção, prefira um domínio estável ou Tailscale funnel. +- Se você usa o plano gratuito do ngrok, defina `publicUrl` para a URL exata do ngrok; a verificação de assinatura é sempre aplicada. +- `tunnel.allowNgrokFreeTierLoopbackBypass: true` permite Webhooks do Twilio com assinaturas inválidas **apenas** quando `tunnel.provider="ngrok"` e `serve.bind` é loopback (agente local do ngrok). Use apenas para desenvolvimento local. +- URLs do plano gratuito do ngrok podem mudar ou adicionar comportamento intersticial; se `publicUrl` mudar, as assinaturas do Twilio falharão. Para produção, prefira um domínio estável ou o funnel do Tailscale. +- `realtime.enabled` inicia conversas completas de voz para voz; não o habilite junto com `streaming.enabled`. - Padrões de segurança de streaming: - `streaming.preStartTimeoutMs` fecha sockets que nunca enviam um frame `start` válido. - `streaming.maxPendingConnections` limita o total de sockets pré-início não autenticados. - `streaming.maxPendingConnectionsPerIp` limita sockets pré-início não autenticados por IP de origem. -- `streaming.maxConnections` limita o total de sockets abertos de media stream (pendentes + ativos). -- O fallback de runtime ainda aceita essas chaves antigas de voice-call por enquanto, mas o caminho de reescrita é `openclaw doctor --fix` e o shim de compatibilidade é temporário. +- `streaming.maxConnections` limita o total de sockets abertos de fluxo de mídia (pendentes + ativos). +- O fallback em tempo de execução ainda aceita essas chaves antigas de voice-call por enquanto, mas o caminho de reescrita é `openclaw doctor --fix` e o shim de compatibilidade é temporário. + +## Conversas de voz em tempo real + +`realtime` seleciona um provedor de voz em tempo real full duplex para áudio de chamada ao vivo. +Ele é separado de `streaming`, que apenas encaminha áudio para provedores +de transcrição em tempo real. + +Comportamento atual em tempo de execução: + +- `realtime.enabled` é compatível com Twilio Media Streams. +- `realtime.enabled` não pode ser combinado com `streaming.enabled`. +- `realtime.provider` é opcional. Quando não definido, Chamada de Voz usa o primeiro + provedor de voz em tempo real registrado. +- Os provedores de voz em tempo real incluídos incluem Google Gemini Live (`google`) e + OpenAI (`openai`), registrados por seus plugins de provedor. +- A configuração bruta de propriedade do provedor fica em `realtime.providers.`. +- Se `realtime.provider` apontar para um provedor não registrado, ou nenhum provedor + de voz em tempo real estiver registrado, Chamada de Voz registra um aviso e ignora + a mídia em tempo real em vez de falhar o plugin inteiro. + +Padrões de tempo real do Google Gemini Live: + +- Chave de API: `realtime.providers.google.apiKey`, `GEMINI_API_KEY` ou + `GOOGLE_GENERATIVE_AI_API_KEY` +- model: `gemini-2.5-flash-native-audio-preview-12-2025` +- voice: `Kore` + +Exemplo: + +```json5 +{ + plugins: { + entries: { + "voice-call": { + config: { + provider: "twilio", + inboundPolicy: "allowlist", + allowFrom: ["+15550005678"], + realtime: { + enabled: true, + provider: "google", + instructions: "Fale brevemente e pergunte antes de usar ferramentas.", + providers: { + google: { + apiKey: "${GEMINI_API_KEY}", + model: "gemini-2.5-flash-native-audio-preview-12-2025", + voice: "Kore", + }, + }, + }, + }, + }, + }, + }, +} +``` + +Use OpenAI em vez disso: + +```json5 +{ + plugins: { + entries: { + "voice-call": { + config: { + realtime: { + enabled: true, + provider: "openai", + providers: { + openai: { + apiKey: "${OPENAI_API_KEY}", + }, + }, + }, + }, + }, + }, + }, +} +``` + +Veja [Provedor Google](/pt-BR/providers/google) e [Provedor OpenAI](/pt-BR/providers/openai) +para opções específicas de voz em tempo real do provedor. ## Transcrição por streaming -`streaming` seleciona um provedor de transcrição em tempo real para áudio de chamadas ao vivo. +`streaming` seleciona um provedor de transcrição em tempo real para áudio de chamada ao vivo. -Comportamento atual do runtime: +Comportamento atual em tempo de execução: -- `streaming.provider` é opcional. Se não for definido, o Voice Call usa o primeiro +- `streaming.provider` é opcional. Quando não definido, Chamada de Voz usa o primeiro provedor de transcrição em tempo real registrado. -- Provedores integrados de transcrição em tempo real incluem Deepgram (`deepgram`), +- Os provedores de transcrição em tempo real incluídos incluem Deepgram (`deepgram`), ElevenLabs (`elevenlabs`), Mistral (`mistral`), OpenAI (`openai`) e xAI - (`xai`), registrados por seus Plugins de provedor. -- A configuração bruta de cada provedor fica em `streaming.providers.`. -- Se `streaming.provider` apontar para um provedor não registrado, ou se nenhum provedor de transcrição em tempo real estiver registrado, o Voice Call registra um aviso e - ignora o streaming de mídia em vez de fazer o Plugin inteiro falhar. + (`xai`), registrados por seus plugins de provedor. +- A configuração bruta de propriedade do provedor fica em `streaming.providers.`. +- Se `streaming.provider` apontar para um provedor não registrado, ou nenhum provedor + de transcrição em tempo real estiver registrado, Chamada de Voz registra um aviso e + ignora o streaming de mídia em vez de falhar o plugin inteiro. -Padrões da transcrição por streaming da OpenAI: +Padrões de transcrição por streaming do OpenAI: - Chave de API: `streaming.providers.openai.apiKey` ou `OPENAI_API_KEY` -- modelo: `gpt-4o-transcribe` +- model: `gpt-4o-transcribe` - `silenceDurationMs`: `800` - `vadThreshold`: `0.5` -Padrões da transcrição por streaming da xAI: +Padrões de transcrição por streaming do xAI: - Chave de API: `streaming.providers.xai.apiKey` ou `XAI_API_KEY` - endpoint: `wss://api.x.ai/v1/stt` @@ -199,7 +295,7 @@ Exemplo: streamPath: "/voice/stream", providers: { openai: { - apiKey: "sk-...", // optional if OPENAI_API_KEY is set + apiKey: "sk-...", // opcional se OPENAI_API_KEY estiver definido model: "gpt-4o-transcribe", silenceDurationMs: 800, vadThreshold: 0.5, @@ -227,7 +323,7 @@ Use xAI em vez disso: streamPath: "/voice/stream", providers: { xai: { - apiKey: "${XAI_API_KEY}", // optional if XAI_API_KEY is set + apiKey: "${XAI_API_KEY}", // opcional se XAI_API_KEY estiver definido endpointingMs: 800, language: "en", }, @@ -248,17 +344,17 @@ Chaves legadas ainda são migradas automaticamente por `openclaw doctor --fix`: - `streaming.silenceDurationMs` → `streaming.providers.openai.silenceDurationMs` - `streaming.vadThreshold` → `streaming.providers.openai.vadThreshold` -## Reaper de chamadas obsoletas +## Limpador de chamadas obsoletas -Use `staleCallReaperSeconds` para encerrar chamadas que nunca recebem um Webhook terminal -(por exemplo, chamadas em modo notify que nunca se completam). O padrão é `0` -(desativado). +Use `staleCallReaperSeconds` para encerrar chamadas que nunca recebem um Webhook +terminal (por exemplo, chamadas em modo notify que nunca são concluídas). O padrão é `0` +(desabilitado). Faixas recomendadas: - **Produção:** `120`–`300` segundos para fluxos no estilo notify. -- Mantenha esse valor **maior que `maxDurationSeconds`** para que chamadas normais possam - terminar. Um bom ponto de partida é `maxDurationSeconds + 30–60` segundos. +- Mantenha esse valor **maior que `maxDurationSeconds`** para que chamadas normais + possam terminar. Um bom ponto de partida é `maxDurationSeconds + 30–60` segundos. Exemplo: @@ -279,28 +375,28 @@ Exemplo: ## Segurança de Webhook -Quando um proxy ou tunnel fica na frente do Gateway, o Plugin reconstrói a -URL pública para verificação de assinatura. Essas opções controlam em quais -cabeçalhos encaminhados confiar. +Quando um proxy ou túnel fica na frente do Gateway, o plugin reconstrói a +URL pública para verificação de assinatura. Essas opções controlam quais cabeçalhos +encaminhados são confiáveis. -`webhookSecurity.allowedHosts` coloca hosts de cabeçalhos encaminhados em allowlist. +`webhookSecurity.allowedHosts` cria uma lista de permissões de hosts a partir de cabeçalhos de encaminhamento. -`webhookSecurity.trustForwardingHeaders` confia em cabeçalhos encaminhados sem uma allowlist. +`webhookSecurity.trustForwardingHeaders` confia em cabeçalhos encaminhados sem uma lista de permissões. `webhookSecurity.trustedProxyIPs` só confia em cabeçalhos encaminhados quando o IP -remoto da solicitação corresponde à lista. +remoto da requisição corresponde à lista. -A proteção contra replay de Webhook está ativada para Twilio e Plivo. Solicitações de Webhook válidas reproduzidas -são reconhecidas, mas ignoradas para efeitos colaterais. +A proteção contra repetição de Webhook está habilitada para Twilio e Plivo. Requisições +de Webhook válidas repetidas são confirmadas, mas ignoradas para efeitos colaterais. -Turnos de conversa do Twilio incluem um token por turno em callbacks ``, então -callbacks de fala obsoletos/reproduzidos não podem satisfazer um turno de transcrição pendente mais novo. +Interações de conversa do Twilio incluem um token por interação em callbacks de ``, então +callbacks de fala antigos/repetidos não podem satisfazer uma interação de transcrição pendente mais nova. -Solicitações de Webhook não autenticadas são rejeitadas antes da leitura do corpo quando -os cabeçalhos de assinatura exigidos pelo provedor estão ausentes. +Requisições de Webhook não autenticadas são rejeitadas antes da leitura do corpo quando os +cabeçalhos de assinatura exigidos pelo provedor estão ausentes. -O Webhook de voice-call usa o perfil compartilhado de corpo de pré-autenticação (64 KB / 5 segundos) -mais um limite por IP de solicitações simultâneas antes da verificação de assinatura. +O Webhook de voice-call usa o perfil compartilhado de corpo pré-autenticação (64 KB / 5 segundos) +mais um limite por IP de requisições em andamento antes da verificação de assinatura. Exemplo com um host público estável: @@ -324,8 +420,8 @@ Exemplo com um host público estável: ## TTS para chamadas O Voice Call usa a configuração central `messages.tts` para -fala por streaming em chamadas. Você pode sobrescrevê-la na configuração do Plugin com o -**mesmo formato** — ela é mesclada profundamente com `messages.tts`. +transmissão de fala em chamadas. Você pode substituí-la na configuração do plugin com o +**mesmo formato** — ela faz deep merge com `messages.tts`. ```json5 { @@ -343,15 +439,15 @@ fala por streaming em chamadas. Você pode sobrescrevê-la na configuração do Observações: -- Chaves legadas `tts.` dentro da configuração do Plugin (`openai`, `elevenlabs`, `microsoft`, `edge`) são migradas automaticamente para `tts.providers.` no carregamento. Prefira o formato `providers` na configuração versionada. -- **Microsoft speech é ignorado para chamadas de voz** (o áudio de telefonia precisa de PCM; o transporte atual da Microsoft não expõe saída PCM de telefonia). -- O TTS central é usado quando o streaming de mídia do Twilio está ativado; caso contrário, as chamadas recorrem a vozes nativas do provedor. -- Se um media stream do Twilio já estiver ativo, o Voice Call não recorre a `` do TwiML. Se TTS de telefonia não estiver disponível nesse estado, a solicitação de reprodução falha em vez de misturar dois caminhos de reprodução. +- Chaves legadas `tts.` dentro da configuração do plugin (`openai`, `elevenlabs`, `microsoft`, `edge`) são migradas automaticamente para `tts.providers.` no carregamento. Prefira o formato `providers` na configuração versionada. +- **Microsoft speech é ignorado para chamadas de voz** (o áudio de telefonia precisa de PCM; o transporte atual da Microsoft não expõe saída PCM para telefonia). +- O TTS central é usado quando o streaming de mídia do Twilio está habilitado; caso contrário, as chamadas recorrem às vozes nativas do provedor. +- Se um stream de mídia do Twilio já estiver ativo, o Voice Call não recorre ao TwiML ``. Se o TTS de telefonia não estiver disponível nesse estado, a solicitação de reprodução falha em vez de misturar dois caminhos de reprodução. - Quando o TTS de telefonia recorre a um provedor secundário, o Voice Call registra um aviso com a cadeia de provedores (`from`, `to`, `attempts`) para depuração. ### Mais exemplos -Usar apenas o TTS central (sem sobrescrever): +Usar apenas o TTS central (sem substituição): ```json5 { @@ -366,7 +462,7 @@ Usar apenas o TTS central (sem sobrescrever): } ``` -Sobrescrever para ElevenLabs apenas em chamadas (manter o padrão central em outros lugares): +Substituir por ElevenLabs apenas para chamadas (manter o padrão central em outros lugares): ```json5 { @@ -391,7 +487,7 @@ Sobrescrever para ElevenLabs apenas em chamadas (manter o padrão central em out } ``` -Sobrescrever apenas o modelo OpenAI para chamadas (exemplo de mesclagem profunda): +Substituir apenas o modelo OpenAI para chamadas (exemplo de deep merge): ```json5 { @@ -416,23 +512,23 @@ Sobrescrever apenas o modelo OpenAI para chamadas (exemplo de mesclagem profunda ## Chamadas de entrada -A política de entrada usa `disabled` por padrão. Para ativar chamadas de entrada, defina: +A política de entrada usa `disabled` por padrão. Para habilitar chamadas de entrada, defina: ```json5 { inboundPolicy: "allowlist", allowFrom: ["+15550001234"], - inboundGreeting: "Hello! How can I help?", + inboundGreeting: "Olá! Como posso ajudar?", } ``` -`inboundPolicy: "allowlist"` é uma filtragem de ID de chamador de baixa garantia. O Plugin +`inboundPolicy: "allowlist"` é uma verificação de identificador de chamadas de baixa garantia. O plugin normaliza o valor `From` fornecido pelo provedor e o compara com `allowFrom`. A verificação do Webhook autentica a entrega do provedor e a integridade da carga, mas -não comprova a posse do número do chamador em PSTN/VoIP. Trate `allowFrom` como -filtragem de ID de chamador, não como identidade forte do chamador. +ela não comprova a propriedade do número do chamador em PSTN/VoIP. Trate `allowFrom` como +um filtro de identificador de chamadas, não como uma identidade forte do chamador. -As respostas automáticas usam o sistema do agente. Ajuste com: +As respostas automáticas usam o sistema de agentes. Ajuste com: - `responseModel` - `responseSystemPrompt` @@ -440,15 +536,15 @@ As respostas automáticas usam o sistema do agente. Ajuste com: ### Contrato de saída falada -Para respostas automáticas, o Voice Call acrescenta um contrato estrito de saída falada ao prompt de sistema: +Para respostas automáticas, o Voice Call anexa um contrato rígido de saída falada ao prompt do sistema: - `{"spoken":"..."}` -O Voice Call então extrai o texto de fala de forma defensiva: +Depois, o Voice Call extrai o texto de fala de forma defensiva: - Ignora cargas marcadas como conteúdo de raciocínio/erro. -- Analisa JSON direto, JSON delimitado por cercas ou chaves `"spoken"` inline. -- Usa fallback para texto simples e remove parágrafos iniciais que provavelmente são planejamento/meta. +- Analisa JSON direto, JSON em bloco delimitado ou chaves `"spoken"` inline. +- Recorre a texto simples e remove parágrafos iniciais que provavelmente sejam de planejamento/meta. Isso mantém a reprodução falada focada no texto voltado ao chamador e evita o vazamento de texto de planejamento para o áudio. @@ -456,16 +552,16 @@ Isso mantém a reprodução falada focada no texto voltado ao chamador e evita o Para chamadas de saída em modo `conversation`, o tratamento da primeira mensagem está vinculado ao estado de reprodução ao vivo: -- Limpeza de fila por barge-in e resposta automática são suprimidas apenas enquanto a saudação inicial está sendo falada ativamente. +- A limpeza da fila por interrupção e a resposta automática são suprimidas apenas enquanto a saudação inicial estiver sendo falada ativamente. - Se a reprodução inicial falhar, a chamada volta para `listening` e a mensagem inicial permanece na fila para nova tentativa. - A reprodução inicial para streaming do Twilio começa na conexão do stream sem atraso extra. -### Período de tolerância para desconexão de stream no Twilio +### Período de tolerância para desconexão de stream do Twilio -Quando um media stream do Twilio é desconectado, o Voice Call aguarda `2000ms` antes de encerrar automaticamente a chamada: +Quando um stream de mídia do Twilio é desconectado, o Voice Call espera `2000ms` antes de encerrar automaticamente a chamada: -- Se o stream se reconectar dentro dessa janela, o encerramento automático é cancelado. -- Se nenhum stream for registrado novamente após o período de tolerância, a chamada será encerrada para evitar chamadas ativas presas. +- Se o stream se reconectar durante essa janela, o encerramento automático é cancelado. +- Se nenhum stream for registrado novamente após o período de tolerância, a chamada será encerrada para evitar chamadas ativas travadas. ## CLI @@ -478,14 +574,14 @@ openclaw voicecall dtmf --call-id --digits "ww123456#" openclaw voicecall end --call-id openclaw voicecall status --call-id openclaw voicecall tail -openclaw voicecall latency # summarize turn latency from logs +openclaw voicecall latency # resume a latência por interação a partir dos logs openclaw voicecall expose --mode funnel ``` -`latency` lê `calls.jsonl` do caminho padrão de armazenamento do voice-call. Use +`latency` lê `calls.jsonl` do caminho de armazenamento padrão do voice-call. Use `--file ` para apontar para um log diferente e `--last ` para limitar a análise -aos últimos N registros (padrão 200). A saída inclui p50/p90/p99 para -latência de turno e tempos de espera em listening. +aos últimos N registros (padrão 200). A saída inclui p50/p90/p99 para a +latência por interação e tempos de espera em escuta. ## Ferramenta do agente @@ -500,9 +596,9 @@ Ações: - `end_call` (callId) - `get_status` (callId) -Este repositório inclui uma documentação de skill correspondente em `skills/voice-call/SKILL.md`. +Este repositório inclui um documento de Skill correspondente em `skills/voice-call/SKILL.md`. -## RPC do Gateway +## Gateway RPC - `voicecall.initiate` (`to?`, `message`, `mode?`) - `voicecall.continue` (`callId`, `message`) @@ -511,8 +607,8 @@ Este repositório inclui uma documentação de skill correspondente em `skills/v - `voicecall.end` (`callId`) - `voicecall.status` (`callId`) -## Relacionado +## Relacionados -- [Text-to-speech](/pt-BR/tools/tts) -- [Modo de conversa](/pt-BR/nodes/talk) +- [Texto para fala](/pt-BR/tools/tts) +- [Modo de fala](/pt-BR/nodes/talk) - [Ativação por voz](/pt-BR/nodes/voicewake) diff --git a/docs/pt-BR/tools/media-overview.md b/docs/pt-BR/tools/media-overview.md index befdfb1cb..68dbaa330 100644 --- a/docs/pt-BR/tools/media-overview.md +++ b/docs/pt-BR/tools/media-overview.md @@ -1,87 +1,91 @@ --- read_when: - - Procurando uma visão geral das capacidades de mídia - - Decidindo qual provider de mídia configurar + - Procurando uma visão geral dos recursos de mídia + - Decidindo qual provedor de mídia configurar - Entendendo como funciona a geração de mídia assíncrona -summary: Página inicial unificada para capacidades de geração, compreensão e fala de mídia +summary: Página de destino unificada para recursos de geração, compreensão e fala de mídia title: Visão geral de mídia x-i18n: - generated_at: "2026-04-24T06:17:34Z" + generated_at: "2026-04-24T09:51:47Z" model: gpt-5.4 provider: openai - source_hash: 469fb173ac3853011b8cd4f89f3ab97dd7d14e12e4e1d7d87e84de05d025a593 + source_hash: 39848c6104ebd4feeb37b233b70f3312fa076b535c3b3780336729eb9fdfa4e6 source_path: tools/media-overview.md workflow: 15 --- # Geração e compreensão de mídia -O OpenClaw gera imagens, vídeos e música, entende mídia de entrada (imagens, áudio, vídeo) e fala respostas em voz alta com texto para fala. Todas as capacidades de mídia são orientadas por tools: o agente decide quando usá-las com base na conversa, e cada tool só aparece quando pelo menos um provider de backend está configurado. +O OpenClaw gera imagens, vídeos e músicas, compreende mídia recebida (imagens, áudio, vídeo) e vocaliza respostas com conversão de texto em fala. Todos os recursos de mídia são orientados por ferramentas: o agente decide quando usá-los com base na conversa, e cada ferramenta só aparece quando pelo menos um provedor de suporte está configurado. -## Capacidades em resumo +## Recursos em resumo -| Capacidade | Tool | Providers | O que faz | -| --------------------- | ---------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------ | -| Geração de imagem | `image_generate` | ComfyUI, fal, Google, MiniMax, OpenAI, Vydra, xAI | Cria ou edita imagens a partir de prompts de texto ou referências | -| Geração de vídeo | `video_generate` | Alibaba, BytePlus, ComfyUI, fal, Google, MiniMax, OpenAI, Qwen, Runway, Together, Vydra, xAI | Cria vídeos a partir de texto, imagens ou vídeos existentes | -| Geração de música | `music_generate` | ComfyUI, Google, MiniMax | Cria música ou faixas de áudio a partir de prompts de texto | -| Texto para fala (TTS) | `tts` | ElevenLabs, Microsoft, MiniMax, OpenAI, xAI | Converte respostas de saída em áudio falado | -| Compreensão de mídia | (automática) | Qualquer provider de modelo com capacidade de visão/áudio, mais fallbacks de CLI | Resume imagens, áudio e vídeo de entrada | +| Recurso | Ferramenta | Provedores | O que faz | +| -------------------- | ---------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| Geração de imagens | `image_generate` | ComfyUI, fal, Google, MiniMax, OpenAI, Vydra, xAI | Cria ou edita imagens a partir de prompts de texto ou referências | +| Geração de vídeo | `video_generate` | Alibaba, BytePlus, ComfyUI, fal, Google, MiniMax, OpenAI, Qwen, Runway, Together, Vydra, xAI | Cria vídeos a partir de texto, imagens ou vídeos existentes | +| Geração de música | `music_generate` | ComfyUI, Google, MiniMax | Cria músicas ou faixas de áudio a partir de prompts de texto | +| Texto para fala (TTS) | `tts` | ElevenLabs, Google, Microsoft, MiniMax, OpenAI, xAI | Converte respostas de saída em áudio falado | +| Compreensão de mídia | (automática) | Qualquer provedor de modelo com suporte a visão/áudio, além de fallbacks da CLI | Resume imagens, áudios e vídeos recebidos | -## Matriz de capacidades por provider +## Matriz de recursos por provedor -Esta tabela mostra quais providers oferecem suporte a quais capacidades de mídia em toda a plataforma. +Esta tabela mostra quais provedores oferecem suporte a quais recursos de mídia em toda a plataforma. -| Provider | Imagem | Vídeo | Música | TTS | STT / Transcrição | Compreensão de mídia | -| ---------- | ------ | ----- | ------ | --- | ----------------- | -------------------- | -| Alibaba | | Sim | | | | | -| BytePlus | | Sim | | | | | -| ComfyUI | Sim | Sim | Sim | | | | -| Deepgram | | | | | Sim | | -| ElevenLabs | | | | Sim | Sim | | -| fal | Sim | Sim | | | | | -| Google | Sim | Sim | Sim | | | Sim | -| Microsoft | | | | Sim | | | -| MiniMax | Sim | Sim | Sim | Sim | | | -| Mistral | | | | | Sim | | -| OpenAI | Sim | Sim | | Sim | Sim | Sim | -| Qwen | | Sim | | | | | -| Runway | | Sim | | | | | -| Together | | Sim | | | | | -| Vydra | Sim | Sim | | | | | -| xAI | Sim | Sim | | Sim | Sim | Sim | +| Provedor | Imagem | Vídeo | Música | TTS | STT / Transcrição | Voz em tempo real | Compreensão de mídia | +| ---------- | ------ | ----- | ------ | --- | ----------------- | ----------------- | -------------------- | +| Alibaba | | Sim | | | | | | +| BytePlus | | Sim | | | | | | +| ComfyUI | Sim | Sim | Sim | | | | | +| Deepgram | | | | | Sim | | | +| ElevenLabs | | | | Sim | Sim | | | +| fal | Sim | Sim | | | | | | +| Google | Sim | Sim | Sim | Sim | | Sim | Sim | +| Microsoft | | | | Sim | | | | +| MiniMax | Sim | Sim | Sim | Sim | | | | +| Mistral | | | | | Sim | | | +| OpenAI | Sim | Sim | | Sim | Sim | Sim | Sim | +| Qwen | | Sim | | | | | | +| Runway | | Sim | | | | | | +| Together | | Sim | | | | | | +| Vydra | Sim | Sim | | | | | | +| xAI | Sim | Sim | | Sim | Sim | | Sim | -A compreensão de mídia usa qualquer modelo com capacidade de visão ou áudio registrado na sua configuração de provider. A tabela acima destaca providers com suporte dedicado a compreensão de mídia; a maioria dos providers de LLM com modelos multimodais (Anthropic, Google, OpenAI etc.) também pode entender mídia de entrada quando configurada como modelo ativo de resposta. +A compreensão de mídia usa qualquer modelo com capacidade de visão ou áudio registrado na sua configuração de provedor. A tabela acima destaca os provedores com suporte dedicado à compreensão de mídia; a maioria dos provedores de LLM com modelos multimodais (Anthropic, Google, OpenAI etc.) também consegue compreender mídia recebida quando configurada como o modelo de resposta ativo. ## Como funciona a geração assíncrona -Geração de vídeo e música é executada como tarefa em segundo plano porque o processamento do provider normalmente leva de 30 segundos a vários minutos. Quando o agente chama `video_generate` ou `music_generate`, o OpenClaw envia a requisição ao provider, retorna imediatamente um ID de tarefa e rastreia o job no ledger de tarefas. O agente continua respondendo a outras mensagens enquanto o job é executado. Quando o provider termina, o OpenClaw acorda o agente para que ele possa publicar a mídia finalizada de volta no canal original. Geração de imagem e TTS são síncronos e são concluídos inline com a resposta. +A geração de vídeo e música é executada como tarefas em segundo plano porque o processamento do provedor normalmente leva de 30 segundos a vários minutos. Quando o agente chama `video_generate` ou `music_generate`, o OpenClaw envia a solicitação ao provedor, retorna imediatamente um ID de tarefa e acompanha o trabalho no registro de tarefas. O agente continua respondendo a outras mensagens enquanto o trabalho está em execução. Quando o provedor termina, o OpenClaw desperta o agente para que ele possa publicar a mídia concluída de volta no canal original. A geração de imagens e o TTS são síncronos e são concluídos inline com a resposta. -Deepgram, ElevenLabs, Mistral, OpenAI e xAI podem transcrever áudio de entrada +Deepgram, ElevenLabs, Mistral, OpenAI e xAI podem transcrever áudio recebido pelo caminho em lote `tools.media.audio` quando configurados. Deepgram, -ElevenLabs, Mistral, OpenAI e xAI também registram providers de STT em streaming para Voice Call, -então o áudio ao vivo da chamada pode ser encaminhado ao vendor selecionado -sem esperar por uma gravação concluída. +ElevenLabs, Mistral, OpenAI e xAI também registram provedores de STT de +streaming para Voice Call, para que o áudio telefônico ao vivo possa ser +encaminhado ao fornecedor selecionado sem esperar por uma gravação concluída. -A OpenAI mapeia para as superfícies do OpenClaw de imagem, vídeo, TTS em lote, STT em lote, STT em streaming para Voice Call, voz realtime e embeddings de memória. A xAI atualmente -mapeia para as superfícies do OpenClaw de imagem, vídeo, busca, execução de código, TTS em lote, STT em lote -e STT em streaming para Voice Call. A voz Realtime da xAI é uma -capacidade upstream, mas não é registrada no OpenClaw até que o contrato compartilhado -de voz realtime possa representá-la. +Google corresponde às superfícies de imagem, vídeo, música, TTS em lote, voz +em tempo real no backend e compreensão de mídia do OpenClaw. OpenAI corresponde +às superfícies de imagem, vídeo, TTS em lote, STT em lote, STT de streaming +para Voice Call, voz em tempo real no backend e embeddings de memória do +OpenClaw. xAI atualmente corresponde às superfícies de imagem, vídeo, busca, +execução de código, TTS em lote, STT em lote e STT de streaming para Voice Call +do OpenClaw. A voz Realtime do xAI é um recurso upstream, mas não está +registrada no OpenClaw até que o contrato compartilhado de voz em tempo real +consiga representá-la. ## Links rápidos -- [Geração de imagem](/pt-BR/tools/image-generation) -- geração e edição de imagens +- [Geração de imagens](/pt-BR/tools/image-generation) -- gerar e editar imagens - [Geração de vídeo](/pt-BR/tools/video-generation) -- texto para vídeo, imagem para vídeo e vídeo para vídeo -- [Geração de música](/pt-BR/tools/music-generation) -- criação de música e faixas de áudio -- [Texto para fala](/pt-BR/tools/tts) -- conversão de respostas em áudio falado -- [Compreensão de mídia](/pt-BR/nodes/media-understanding) -- compreensão de imagens, áudio e vídeo de entrada +- [Geração de música](/pt-BR/tools/music-generation) -- criar músicas e faixas de áudio +- [Texto para fala](/pt-BR/tools/tts) -- converter respostas em áudio falado +- [Compreensão de mídia](/pt-BR/nodes/media-understanding) -- compreender imagens, áudios e vídeos recebidos -## Relacionado +## Relacionados -- [Geração de imagem](/pt-BR/tools/image-generation) +- [Geração de imagens](/pt-BR/tools/image-generation) - [Geração de vídeo](/pt-BR/tools/video-generation) - [Geração de música](/pt-BR/tools/music-generation) - [Texto para fala](/pt-BR/tools/tts)