Documentação oficial desta página · v0.20.6
Modo de voz
O Hermes Agent tem interação por voz completa, na CLI e nas plataformas de mensagem. Fale com o agente pelo microfone, ouça as respostas e converse ao vivo em canais de voz do Discord.
Se você quer um passo a passo prático, com configurações recomendadas e padrões de uso reais, veja Usar o Modo de Voz.
Para começar uma sessão sem as mãos — dizendo "hey hermes" (ou outra frase) para abrir uma sessão de voz na CLI, na TUI ou no desktop — veja Palavra de Ativação.
Pré-requisitos
Antes de usar voz, garanta que você tem:
- O Hermes Agent instalado — pelo script de instalação (veja Instalação)
- Um provedor de LLM configurado — rode
hermes model, ou coloque as credenciais em~/.hermes/.env - Uma instalação básica funcionando — rode
hermese confirme que o agente responde por texto antes de ligar a voz
O diretório ~/.hermes/ e o config.yaml padrão são criados sozinhos na primeira vez que você roda
o hermes. Só o ~/.hermes/.env precisa ser criado na mão, para as chaves de API.
Uma assinatura paga do Nous Portal fornece o modelo (passo 2) e a
síntese de voz da OpenAI pelo Tool Gateway — sem chave separada. Numa instalação nova, o
hermes setup --portal liga os dois de uma vez.
Visão geral
| Recurso | Onde | Descrição |
|---|---|---|
| Voz interativa | CLI | Aperte Ctrl+B para gravar; o agente detecta o silêncio sozinho e responde |
| Resposta falada automática | Telegram, Discord | O agente manda áudio junto com a resposta em texto |
| Canal de voz | Discord | O bot entra no canal, escuta quem fala e responde falando |
Requisitos
Pacotes Python
# Modo de voz na CLI (microfone e reprodução de áudio)
cd ~/.hermes/hermes-agent && uv pip install -e ".[voice]"
# Discord e Telegram (inclui discord.py[voice], para canal de voz)
cd ~/.hermes/hermes-agent && uv pip install -e ".[messaging]"
# Síntese de voz premium (ElevenLabs)
cd ~/.hermes/hermes-agent && uv pip install -e ".[tts-premium]"
# Síntese de voz local (NeuTTS, opcional)
python -m pip install -U neutts[all]
# Tudo de uma vez
cd ~/.hermes/hermes-agent && uv pip install -e ".[all]"
| Extra | Pacotes | Necessário para |
|---|---|---|
voice | sounddevice, numpy | Modo de voz na CLI |
messaging | discord.py[voice], python-telegram-bot, aiohttp | Bots de Discord e Telegram |
tts-premium | elevenlabs | Provedor de voz ElevenLabs |
Provedor local opcional: instale o neutts à parte, com python -m pip install -U neutts[all]. No
primeiro uso, ele baixa o modelo sozinho.
O discord.py[voice] instala o PyNaCl (para a criptografia de voz) e as ligações do opus
sozinho. Isso é necessário para canais de voz no Discord.
Dependências de sistema
# macOS
brew install portaudio ffmpeg opus
brew install espeak-ng # para o NeuTTS
# Ubuntu e Debian
sudo apt install portaudio19-dev ffmpeg libopus0
sudo apt install espeak-ng # para o NeuTTS
| Dependência | Para que serve | Necessária em |
|---|---|---|
| PortAudio | Entrada de microfone e reprodução | Modo de voz na CLI |
| ffmpeg | Conversão de formato (MP3 para Opus, PCM para WAV) | Todas as plataformas |
| Opus | Codec de voz do Discord | Canais de voz do Discord |
| espeak-ng | Motor de fonemização | Provedor local NeuTTS |
Chaves de API
Acrescente em ~/.hermes/.env:
# Transcrição — o provedor local NÃO precisa de chave nenhuma
# pip install faster-whisper # gratuito, roda local, recomendado
GROQ_API_KEY=sua-chave # Whisper da Groq — rápido, com camada gratuita (nuvem)
VOICE_TOOLS_OPENAI_KEY=sua-chave # Whisper da OpenAI — pago (nuvem)
# Síntese de voz (opcional — Edge TTS e NeuTTS funcionam sem chave)
ELEVENLABS_API_KEY=*** # ElevenLabs — qualidade premium
# a VOICE_TOOLS_OPENAI_KEY acima também habilita a síntese da OpenAI
Com o faster-whisper instalado, o modo de voz funciona com zero chave de API na transcrição. O
modelo (cerca de 150 MB, no tamanho base) baixa sozinho no primeiro uso.
Modo de voz na CLI
O modo de voz existe tanto na CLI clássica (hermes chat) quanto na TUI (hermes --tui). O
comportamento é idêntico — mesmos comandos de barra, mesma detecção de silêncio, mesma síntese em
tempo real, mesmo filtro de alucinação. A TUI ainda manda logs de falha para ~/.hermes/logs/, para
problemas de gravação em placas de áudio exóticas serem reportados com pilha completa, em vez de
sumirem em silêncio.
Começando
hermes # abre a CLI interativa
Depois, dentro da CLI:
/voice liga e desliga o modo de voz
/voice on liga
/voice off desliga
/voice tts liga e desliga a leitura em voz alta
/voice status mostra o estado atual
Como funciona
- Abra a CLI com
hermese ligue a voz com/voice on - Aperte
Ctrl+B— um bipe toca (880 Hz) e a gravação começa - Fale — uma barra ao vivo mostra o nível da sua voz:
● [▁▂▃▅▇▇▅▂] ❯ - Pare de falar — depois de 3 segundos de silêncio, a gravação para sozinha
- Dois bipes tocam (660 Hz), confirmando o fim da gravação
- O áudio é transcrito pelo Whisper e enviado ao agente
- Com a leitura em voz alta ligada, a resposta é falada
- A gravação recomeça sozinha — fale de novo, sem apertar tecla nenhuma
O laço segue até você apertar Ctrl+B durante uma gravação (o que sai do modo contínuo), ou até
três gravações seguidas não detectarem fala.
A tecla de gravação é configurável em voice.record_key, no ~/.hermes/config.yaml (padrão:
ctrl+b).
Detecção de silêncio
Um algoritmo de duas etapas percebe quando você terminou de falar:
- Confirmação de fala — espera áudio acima do limiar de RMS (200) por pelo menos 0,3 segundo, tolerando quedas breves entre sílabas
- Detecção do fim — confirmada a fala, dispara depois de 3 segundos de silêncio contínuo
Se nenhuma fala for detectada por 15 segundos, a gravação para sozinha.
O silence_threshold e o silence_duration são configuráveis no config.yaml. Também dá para
desligar os bipes com voice.beep_enabled: false.
Encerrar uma conversa por voz, falando
Diga "stop" — e nada mais — para encerrar sem as mãos. A comparação é estrita de propósito: a
fala inteira (sem diferenciar maiúsculas, ignorando pontuação nas pontas) precisa ser igual a uma
frase configurada. Então "stop doing that and try X instead" ainda chega ao agente normalmente.
Personalize a lista com voice.stop_phrases, no config.yaml (por exemplo,
["stop", "goodbye hermes"]), ou coloque [] para desligar. Uma conversa por voz também termina
sozinha depois de três ciclos seguidos de silêncio.
Digitar uma frase de parada sozinha, com a conversa por voz ativa, funciona igual em todas as superfícies (CLI, TUI, desktop): a mensagem encerra a conversa por voz em vez de ir para o agente. Fora de uma conversa por voz, um "stop" digitado é uma mensagem comum.
Síntese em tempo real
Com a leitura em voz alta ligada, o agente fala a resposta frase a frase, conforme gera o texto — você não espera a resposta inteira. Isso funciona com todos os provedores de voz:
- Junta os pedaços de texto em frases completas (mínimo de 20 caracteres)
- Tira a formatação markdown, os emojis e os blocos
<think> - Toca o áudio de cada frase em tempo real — provedores com API de PCM em pedaços (ElevenLabs, OpenAI) transmitem áudio cru, para o menor tempo até a primeira palavra; os demais (incluindo o Edge, que é o padrão) sintetizam e tocam cada frase quando ela fica pronta
O mesmo caminho roda na CLI clássica, na TUI e no desktop. Numa conversa de voz no desktop, o texto da resposta é alimentado ao vivo num WebSocket de fala, por resposta, conforme o modelo gera — então a fala se sobrepõe à geração, com um socket e um relógio de áudio por resposta, sem intervalo entre frases.
Desktop remoto: voz direto do cliente
Quando o Hermes Desktop está ligado a um gateway remoto, o áudio não precisa passar pelo gateway.
No início da sessão de voz, o desktop busca as configurações de transcrição e síntese resolvidas do
perfil ativo (provedor, modelo, idioma, voz e credencial) pelo canal REST autenticado
(GET /api/audio/voice-config) e então chama os provedores direto:
- Ditado e entrada de voz: a gravação do microfone vai do seu computador direto ao provedor de transcrição do perfil; só o texto resultante vai para o gateway, como prompt.
- Respostas faladas: o texto da resposta já está chegando ao desktop pelo socket de conversa, então o desktop sintetiza localmente com o provedor do perfil e toca — a ligação com o gateway nunca carrega áudio.
Não há nada a configurar no cliente: o perfil com que você está falando é a única fonte de verdade para provedores e chaves, exatamente como se o gateway tivesse feito o trabalho. As chaves ficam na memória do desktop só durante a sessão — nunca vão para o disco do cliente.
Provedores que só rodam na máquina do gateway (whisper local, Edge TTS, provedores por comando,
plugins) voltam sozinhos ao caminho de repasse (/api/audio/transcribe e o WebSocket de fala), assim
como qualquer backend antigo sem esse endpoint. Para forçar o repasse em todos os provedores:
voice:
client_direct: false
Suporte direto do cliente: OpenAI (inclusive o áudio gerenciado pela Nous), Groq, Mistral e DeepInfra pelos formatos compatíveis com a OpenAI, transcrição do Grok da xAI, e transcrição e síntese da ElevenLabs. A xAI configurada por OAuth continua no repasse (o token OAuth é renovado do lado do servidor).
Interromper falando por cima
Você pode interromper o agente em qualquer ponto do turno — o microfone fica ligado desde o momento em que você termina de falar até a resposta terminar de tocar:
- Intervir enquanto ele pensa — no modo contínuo, falar durante a geração (antes de qualquer áudio tocar) interrompe o turno em andamento, e a sua fala vira a mensagem seguinte, igual a digitar por cima de um turno em execução.
- Falar por cima — falar enquanto a resposta toca corta a reprodução no instante em que você começa, e envia o que você disse. O detector calibra o nível de ruído contra a sala em silêncio no início do turno (nunca contra a própria reprodução), então o som do alto-falante não o ensurdece, e a fala normal o dispara com confiança.
- Digitar, ou apertar a tecla de gravação — mandar uma mensagem nova ou apertar a tecla para a reprodução na hora, em qualquer superfície.
- Dizer "stop" — a frase de parada funciona nas duas fases: durante a geração, ela interrompe o turno E encerra a conversa por voz; durante a reprodução, corta a fala e encerra a conversa.
Ajuste no config.yaml: voice.barge_in: false desliga; voice.barge_in_threshold_multiplier
(padrão 3.0) escala o gatilho de fala sobre o nível da sala em silêncio;
voice.barge_in_grace_seconds (padrão 0.5) evita disparos logo depois de a reprodução começar.
Defina HERMES_VOICE_DEBUG=1 para mandar o diagnóstico por bloco (nível calibrado, RMS, decisões de
disparo) para a saída de erro, e ajustar ao vivo.
O agente sabe que foi interrompido: a mensagem seguinte carrega uma nota curta avisando que a resposta falada foi cortada, então ele pode reagir com naturalidade ("que grosseria!") ou retomar de onde parou, em vez de ficar por fora.
Filtro de alucinação
O Whisper às vezes inventa texto a partir de silêncio ou de ruído de fundo ("Thank you for watching", "Subscribe" e afins). O agente filtra isso com um conjunto de 26 frases conhecidas de alucinação, em vários idiomas, mais uma expressão regular que pega as variações repetitivas.
Resposta falada no gateway (Telegram e Discord)
Se você ainda não configurou seus bots, veja os guias de cada plataforma:
Suba o gateway para conectar às plataformas:
hermes gateway # sobe o gateway (conecta nas plataformas configuradas)
hermes gateway setup # assistente interativo, para a primeira configuração
Discord: canais e mensagens diretas
O bot suporta dois modos de interação no Discord:
| Modo | Como falar | Precisa mencionar | Configuração |
|---|---|---|---|
| Mensagem direta | Abra o perfil do bot → "Message" | Não | Funciona de imediato |
| Canal do servidor | Escreva num canal de texto onde o bot está | Sim (@nomedobot) | O bot precisa ser convidado para o servidor |
Mensagem direta (recomendada para uso pessoal): abra uma conversa com o bot e escreva — sem menção. Respostas faladas e todos os comandos funcionam igual.
Canais do servidor: o bot só responde quando é mencionado (@hermesbyt4 olá). Confira que você
selecionou o usuário do bot na lista de menção, e não o cargo de mesmo nome.
Para tirar a exigência de menção nos canais, acrescente em ~/.hermes/.env:
DISCORD_REQUIRE_MENTION=false
Ou libere canais específicos:
DISCORD_FREE_RESPONSE_CHANNELS=123456789,987654321
Comandos
Valem no Telegram e no Discord (mensagens diretas e canais):
/voice liga e desliga o modo de voz
/voice on responde falando só quando você manda áudio
/voice tts responde falando em TODAS as mensagens
/voice off desliga as respostas faladas
/voice status mostra a configuração atual
Modos
| Modo | Comando | Comportamento |
|---|---|---|
off | /voice off | Só texto (padrão) |
voice_only | /voice on | Fala a resposta só quando você manda áudio |
all | /voice tts | Fala a resposta de toda mensagem |
A escolha sobrevive a reinícios do gateway.
Entrega por plataforma
| Plataforma | Formato | Observações |
|---|---|---|
| Telegram | Bolha de voz (Opus/OGG) | Toca dentro da conversa. O ffmpeg converte MP3 para Opus, se preciso |
| Discord | Bolha de voz nativa (Opus/OGG) | Toca como uma mensagem de voz de pessoa. Se a API de bolha falhar, cai para anexo |
Canais de voz do Discord
O recurso de voz mais imersivo: o bot entra num canal de voz, escuta quem fala, transcreve, processa pelo agente e fala a resposta no canal.
Configuração
1. Permissões do bot
Se você já tem um bot de Discord para texto (veja o guia do Discord), precisa acrescentar permissões de voz.
Vá no Portal de Desenvolvedores do Discord → sua aplicação → Installation → Default Install Settings → Guild Install.
Acrescente às permissões de texto que já existem:
| Permissão | Para que serve | Obrigatória |
|---|---|---|
| Connect | Entrar em canais de voz | Sim |
| Speak | Tocar o áudio no canal | Sim |
| Use Voice Activity | Detectar quem está falando | Recomendada |
Inteiro de permissões atualizado:
| Nível | Inteiro | O que inclui |
|---|---|---|
| Só texto | 309237763136 | Ver canais, enviar mensagens, ler histórico, embeds, anexos, tópicos, reações, criar tópicos públicos |
| Texto e voz | 309240908864 | Tudo acima, mais Connect e Speak |
Convide o bot de novo, com a URL de permissões atualizada:
https://discord.com/oauth2/authorize?client_id=SEU_APP_ID&scope=bot+applications.commands&permissions=309240908864
Troque SEU_APP_ID pelo Application ID do portal.
Convidar de novo um bot que já está no servidor atualiza as permissões dele, sem removê-lo. Você não perde dado nem configuração.
2. Intenções privilegiadas
No portal → sua aplicação → Bot → Privileged Gateway Intents, habilite as três:
| Intenção | Para que serve |
|---|---|
| Presence Intent | Detectar se a pessoa está online |
| Server Members Intent | Resolver nomes de usuário em DISCORD_ALLOWED_USERS para identificadores numéricos (condicional) |
| Message Content Intent | Ler o conteúdo das mensagens de texto |
A Message Content Intent é obrigatória. A Server Members Intent só é necessária se a sua
lista DISCORD_ALLOWED_USERS usa nomes de usuário — com identificadores numéricos, pode deixar
desligada. O mapeamento de SSRC para identificador, nos canais de voz, vem do opcode SPEAKING do
WebSocket de voz e não precisa dessa intenção.
3. Codec Opus
A biblioteca do codec Opus precisa estar instalada na máquina que roda o gateway:
# macOS (Homebrew)
brew install opus
# Ubuntu e Debian
sudo apt install libopus0
O bot carrega o codec sozinho, de:
- macOS:
/opt/homebrew/lib/libopus.dylib - Linux:
libopus.so.0
4. Variáveis de ambiente
# ~/.hermes/.env
# Bot do Discord (já configurado para texto)
DISCORD_BOT_TOKEN=seu-token
DISCORD_ALLOWED_USERS=seu-id
# Transcrição — o provedor local não precisa de chave (pip install faster-whisper)
# GROQ_API_KEY=sua-chave # alternativa na nuvem, rápida, com camada gratuita
# Síntese — opcional. Edge TTS e NeuTTS não precisam de chave.
# ELEVENLABS_API_KEY=*** # qualidade premium
# VOICE_TOOLS_OPENAI_KEY=*** # síntese e transcrição da OpenAI
Subir o gateway
hermes gateway # sobe com a configuração existente
O bot deve ficar online no Discord em alguns segundos.
Comandos
Use no canal de texto onde o bot está:
/voice join o bot entra no seu canal de voz atual
/voice channel apelido de /voice join
/voice leave o bot sai do canal de voz
/voice status mostra o modo de voz e o canal conectado
Você precisa estar num canal de voz antes de rodar o /voice join. O bot entra no mesmo canal em
que você está.
Como funciona
Quando entra num canal de voz, o bot:
- Escuta o fluxo de áudio de cada pessoa, de forma independente
- Detecta o silêncio — 1,5 segundo de silêncio depois de pelo menos 0,5 segundo de fala dispara o processamento
- Transcreve o áudio pelo Whisper (local, Groq ou OpenAI)
- Processa pelo caminho completo do agente (sessão, ferramentas, memória)
- Fala a resposta no canal
Integração com o canal de texto
Com o bot num canal de voz:
- As transcrições aparecem no canal de texto:
[Voice] @pessoa: o que você disse - As respostas do agente vão como texto no canal E são faladas no canal de voz
- O canal de texto é aquele em que o
/voice joinfoi dado
Prevenção de eco
O bot pausa sozinho o ouvinte de áudio enquanto toca as respostas faladas, para não ouvir e reprocessar a própria saída.
Controle de acesso
Só quem está em DISCORD_ALLOWED_USERS interage por voz. O áudio das outras pessoas é ignorado em
silêncio.
# ~/.hermes/.env
DISCORD_ALLOWED_USERS=284102345871466496
Referência de configuração
config.yaml
# Gravação de voz (CLI)
voice:
record_key: "ctrl+b" # tecla para começar e parar a gravação
max_recording_seconds: 120 # duração máxima
auto_tts: false # liga a leitura em voz alta junto com o modo de voz
beep_enabled: true # toca os bipes de início e fim
silence_threshold: 200 # nível de RMS (0 a 32767) abaixo do qual conta como silêncio
silence_duration: 3.0 # segundos de silêncio antes de parar sozinho
stop_phrases: ["stop"] # dizer exatamente uma destas encerra a conversa; [] desliga
# Transcrição
stt:
enabled: true # false pula a transcrição automática — o gateway
# ainda guarda o arquivo de áudio e passa o caminho
# ao agente junto da mensagem, útil para fluxos
# próprios (diarização, alinhamento, arquivamento)
provider: "local" # "local" (gratuito) | "groq" | "openai" | "mistral" | "xai"
local:
model: "base" # tiny, base, small, medium, large-v3
language: "" # dica ISO-639-1 opcional; vazio usa HERMES_LOCAL_STT_LANGUAGE, senão detecta
groq:
language: "" # dica ISO-639-1 opcional; vazio usa HERMES_LOCAL_STT_LANGUAGE, senão detecta
# model: "whisper-1" # legado: usado quando não há provider
# Síntese de voz
tts:
provider: "edge" # "edge" (gratuito) | "elevenlabs" | "openai" | "neutts" | "minimax" | "mistral" | "gemini" | "xai" | "kittentts" | "piper"
edge:
voice: "pt-BR-FranciscaNeural" # 322 vozes, 74 idiomas
elevenlabs:
voice_id: "pNInz6obpgDQGcFmaJgB" # Adam
model_id: "eleven_multilingual_v2"
openai:
model: "gpt-4o-mini-tts"
voice: "alloy" # alloy, echo, fable, onyx, nova, shimmer
base_url: "https://api.openai.com/v1" # opcional: para endpoints próprios ou compatíveis
# A ferramenta `text_to_speech` aceita um argumento opcional `instructions`
# por chamada (tom, emoção, ritmo, sotaque, sussurro), repassado ao
# `gpt-4o-mini-tts` e a servidores de desenho de voz compatíveis com a OpenAI.
neutts:
ref_audio: ''
ref_text: ''
model: neuphonic/neutts-air-q4-gguf
device: cpu
O Edge TTS tem vozes brasileiras nativas — pt-BR-FranciscaNeural, pt-BR-AntonioNeural e
pt-BR-ThalitaNeural, entre outras. É gratuito e não precisa de chave. Para a transcrição em
português, o Whisper local detecta o idioma sozinho, mas fixar language: "pt" melhora a precisão e
a velocidade.
Variáveis de ambiente
# Transcrição (o local não precisa de chave)
# pip install faster-whisper # transcrição local gratuita, sem chave
GROQ_API_KEY=... # Whisper da Groq (rápido, camada gratuita)
VOICE_TOOLS_OPENAI_KEY=... # Whisper da OpenAI (pago)
# Ajustes avançados de transcrição (opcionais)
STT_GROQ_MODEL=whisper-large-v3-turbo # troca o modelo padrão da Groq
STT_OPENAI_MODEL=whisper-1 # troca o modelo padrão da OpenAI
GROQ_BASE_URL=https://api.groq.com/openai/v1 # endpoint próprio da Groq
STT_OPENAI_BASE_URL=https://api.openai.com/v1 # endpoint próprio da OpenAI
# Síntese (Edge TTS e NeuTTS não precisam de chave)
ELEVENLABS_API_KEY=*** # ElevenLabs (qualidade premium)
# a VOICE_TOOLS_OPENAI_KEY acima também habilita a síntese da OpenAI
# Canal de voz do Discord
DISCORD_BOT_TOKEN=...
DISCORD_ALLOWED_USERS=...
Comparação dos provedores de transcrição
| Provedor | Modelo | Velocidade | Qualidade | Custo | Precisa de chave |
|---|---|---|---|---|---|
| Local | base | Rápido (depende do processador) | Boa | Grátis | Não |
| Local | small | Médio | Melhor | Grátis | Não |
| Local | large-v3 | Lento | A melhor | Grátis | Não |
| Groq | whisper-large-v3-turbo | Muito rápido (~0,5s) | Boa | Camada gratuita | Sim |
| Groq | whisper-large-v3 | Rápido (~1s) | Melhor | Camada gratuita | Sim |
| OpenAI | whisper-1 | Rápido (~1s) | Boa | Pago | Sim |
| OpenAI | gpt-4o-transcribe | Médio (~2s) | A melhor | Pago | Sim |
| OpenAI | gpt-transcribe | Rápido | A melhor | Pago (US$ 0,0045/min) | Sim |
| Mistral | voxtral-mini-latest | Rápido | Boa | Pago | Sim |
| xAI | grok-stt | Rápido | Boa | Pago | Sim |
Ordem de prioridade, com recuo automático: local > groq > openai.
Comparação dos provedores de síntese
| Provedor | Qualidade | Custo | Espera | Precisa de chave |
|---|---|---|---|---|
| Edge TTS | Boa | Grátis | ~1s | Não |
| ElevenLabs | Excelente | Pago | ~2s | Sim |
| OpenAI TTS | Boa | Pago | ~1,5s | Sim |
| NeuTTS | Boa | Grátis | Depende do processador | Não |
O NeuTTS usa o bloco tts.neutts acima.
No openai, a ferramenta text_to_speech aceita o argumento opcional instructions, que libera o
desenho de voz do gpt-4o-mini-tts (tom, emoção, ritmo, sotaque, sussurro). O mesmo campo também
chega a servidores de desenho de voz compatíveis com a OpenAI, montados por tts.openai.base_url.
Resolução de problemas
"No audio device found" (CLI)
O PortAudio não está instalado:
brew install portaudio # macOS
sudo apt install portaudio19-dev # Ubuntu
Se você roda o Hermes dentro do Docker num desktop Linux, o container também precisa de acesso ao socket de áudio do sistema. Veja as notas da ponte de áudio no Docker para uma configuração compatível com PulseAudio e PipeWire.
O bot não responde nos canais do servidor no Discord
Por padrão, ele exige menção nos canais. Confira se você:
- Digitou
@e escolheu o usuário do bot (com o discriminador), e não o cargo de mesmo nome - Ou use mensagem direta — sem menção
- Ou defina
DISCORD_REQUIRE_MENTION=falseno~/.hermes/.env
O bot entra no canal de voz mas não me ouve
- Confira se o seu identificador do Discord está em
DISCORD_ALLOWED_USERS - Confira se você não está mudo no Discord
- O bot precisa de um evento SPEAKING do Discord para mapear o seu áudio — comece a falar poucos segundos depois de ele entrar
O bot me ouve mas não responde
- Confirme que a transcrição está disponível: instale o
faster-whisper(sem chave) ou definaGROQ_API_KEYouVOICE_TOOLS_OPENAI_KEY - Confira se o modelo está configurado e acessível
- Veja os logs:
tail -f ~/.hermes/logs/gateway.log
O bot responde em texto, mas não no canal de voz
- O provedor de síntese pode estar falhando — confira chave e cota
- O Edge TTS (gratuito, sem chave) é o recuo padrão
- Procure erros de síntese nos logs
O Whisper devolve texto sem sentido
O filtro de alucinação pega a maioria dos casos. Se ainda aparecerem transcrições fantasma:
- Use um ambiente mais silencioso
- Aumente o
silence_thresholdna configuração (mais alto = menos sensível) - Experimente outro modelo de transcrição