# Assistente de voz do Nexus — falar e o sistema faz

Este guia mostra como usar (e liberar) o **assistente de voz** do Nexus: você toca
no microfone, **fala** um comando (ex.: *"adicione leite na lista de compras"*) e o
sistema **faz a ação** e responde falando.

> **Em uma frase:** a voz é reconhecida **pelo próprio navegador** (não precisa de
> Alexa, nem de servidor de áudio, nem de nuvem paga). Nada de áudio é enviado ao
> servidor — só o **texto** do que você falou.

---

## O que dá pra fazer por voz

- **Listas:** *"adicione leite na lista de compras"*, *"o que tem na lista de compras"*,
  *"já comprei o leite"*, *"crie a lista de farmácia"*.
- **Tarefas:** *"crie a tarefa pagar a conta de luz"*, *"minhas tarefas"*,
  *"mova a tarefa comprar pão para feito"*.
- **Status:** *"o que precisa de mim"*, *"como está a casa"*, *"como está o tempo"*,
  *"como está a energia"*, *"como está a rede"*.

> O assistente de voz **não liga/desliga dispositivos** de propósito — para luzes,
> tomadas e cenas use as automações/rotinas normais (ou a Alexa dos fabricantes).

---

## Passo 1 — Abrir a tela de voz

1. Entre no Nexus pelo endereço **`https://`** do sistema (tem que ser **https**, com o
   cadeado — o navegador só libera o microfone em conexão segura).
2. No menu, seção **Início**, clique em **Voz**. (Endereço direto: `/voz`.)

✅ **Deu certo se…** aparecer um **botão redondo de microfone** grande no meio da tela,
com a frase *"Toque para falar"* embaixo.

---

## Passo 2 — Falar um comando

1. Toque no **microfone**. Na primeira vez, o navegador pergunta se pode usar o microfone
   → clique em **Permitir**.
2. O botão fica **vermelho pulsando** = está ouvindo. **Fale** o comando (ex.:
   *"adicione pilhas na lista de compras"*).
3. Quando você parar de falar, ele **executa** e **responde falando** a confirmação. O que
   você disse e a resposta aparecem escritos logo abaixo do microfone.

✅ **Deu certo se…** ao dizer *"adicione pilhas na lista de compras"* ele responder algo
como *"Adicionei pilhas na lista Compras."* e o item aparecer na sua lista.

> **Dica:** não precisa falar "robô" nem palavra de ativação — é só tocar e falar.
> Tocar no microfone de novo enquanto ele ouve **cancela**.

---

## Passo 3 (opcional) — No tablet de parede

Se você usa o **Modo tablet** (tela de parede), já existe um **botão de microfone verde**
no canto inferior direito, ao lado do "+". Toque nele e fale — a resposta aparece numa
barra e ele **atualiza a tela** sozinho (a nova tarefa/item já aparece).

✅ **Deu certo se…** o botão verde de microfone estiver visível no tablet e responder à
sua fala.

---

## Sem microfone? Dá pra digitar

Na tela **Voz** tem uma caixa **"Prefere digitar?"**. Escreva o comando (ex.:
*"crie a tarefa trocar o filtro"*) e clique em **Enviar** — funciona igual, sem falar.
Isso serve para navegadores que não reconhecem voz (ou ambientes barulhentos).

Também há **botões de exemplo**: tocar em um deles executa aquele comando na hora.

---

## (Avançado, opcional) Entender frases mais livres com IA

Por padrão o assistente entende os comandos conhecidos por **regras** (rápido e sem
depender de nada). Se você quiser que ele entenda frases mais soltas, dá para ligar um
**modelo de IA local (Ollama)** — o mesmo do assistente de texto:

1. Instale o Ollama e baixe um modelo (ex.: `llama3.2`).
2. No `.env` do Nexus, ligue: `ASSISTANT_OLLAMA_ENABLED=true` (e ajuste
   `ASSISTANT_OLLAMA_URL`/`ASSISTANT_OLLAMA_MODEL` se precisar).
3. Confirme que o módulo **IA local** está ligado em **Configurações → Módulos**.

✅ **Deu certo se…** um comando "torto" que antes dava *"não entendi"* passar a funcionar.
Se o Ollama estiver desligado, tudo continua funcionando pelos comandos conhecidos.

---

## Deu problema?

- **"Preciso de permissão para usar o microfone".** O navegador bloqueou o microfone.
  Clique no cadeado ao lado do endereço → **Permissões** → **Microfone: Permitir** e
  recarregue a página.
- **"Este navegador não reconhece voz".** Use o **Google Chrome** (ou Edge). No iPhone, o
  reconhecimento de voz do navegador é limitado — nesse caso, **digite** o comando.
- **O microfone nem aparece / não pede permissão.** Você precisa abrir o Nexus por
  **`https://`** (com cadeado). Em `http://` o navegador não libera o microfone.
- **Ele ouve mas responde "não entendi".** Fale mais parecido com os exemplos (ex.:
  *"adicione X na lista de compras"*). Veja os **botões de exemplo** na tela. Se quiser
  frases mais livres, ligue a IA local (seção acima).
- **Não fala a resposta (só escreve).** Alguns navegadores/instalações não têm voz de
  leitura em português — o comando ainda é executado e a resposta aparece escrita.
- **Não tenho o item "Voz" no menu.** Peça a quem administra para confirmar que o seu
  usuário é **dono** ou **morador** (a permissão é `voice.use`).

---

## Para quem cuida do sistema (resumo técnico)

- Telas/rotas: `GET /voz` (página) e `POST /voz/comando` (`{texto}` → JSON
  `{fala,ok,fonte,continua}`), ability **`voice.use`** (dono + morador). Sem tabela nova.
- A transcrição é do navegador (Web Speech API, pt-BR); o servidor só recebe **texto**.
- Entendimento: `App\Support\VoiceIntents` (regras, testável por
  `php api/scripts/tests_voz.php`) → **`Web\Services\CommandExecutor`** (a MESMA fonte de
  ações da Alexa). LLM (Ollama) é **opcional** e respeita o módulo `ia_local`.
- UI reutilizável: `public/assets/js/voice.js` (na página `/voz` e no `/tablet`).
