# Mapa de falantes

> Descubra em qual câmera está cada falante, pelos microfones das câmeras, e faça uma edição multicâmera trocar para a pessoa certa sem preencher tabelas.

Source: https://nodaro.ai/pt-BR/docs/nodes/audio/speaker-map

O nó **Mapa de falantes** descobre em qual câmera está cada falante, pelos microfones das próprias câmeras. Uma edição multicâmera então troca para a pessoa certa sem que ninguém preencha uma tabela. Conecte o resultado à entrada **Mapa de falantes** do [**Troca de câmeras**](https://nodaro.ai/docs/nodes/video/camera-switch), que coloca cada corte na câmera da pessoa que está falando.

Em um podcast ou entrevista multicâmera, cada convidado costuma ter a própria câmera, e cada câmera tem um microfone próprio. Enquanto um convidado fala, a câmera apontada para ele o ouve mais alto. O Mapa de falantes recebe uma transcrição com os falantes identificados, escuta cada câmera durante as falas de cada falante e decide de quem é cada câmera.

O nó é executado localmente, sem modelo de IA e sem chave de provedor, então funciona em todas as edições.

## Quando usar
- Informar ao Troca de câmeras de quem é cada câmera em um podcast multicâmera, com uma câmera por convidado, sem preencher a tabela **Falantes**.
- Mapear as câmeras de novo a cada sessão de uma entrevista em que os convidados trocam de lugar.

## Início rápido
### Adicionar o nó
Pressione Tab no canvas e escolha **Áudio › Análise › Mapa de falantes**.

### Conectar as gravações
Conecte de 2 a 6 gravações à entrada **Câmeras**: as câmeras e, quando houver, a gravação principal e o plano aberto.

### Conectar a transcrição e os deslocamentos
Conecte um nó [**Transcrever**](https://nodaro.ai/docs/nodes/audio/transcribe), executado com **Identificação de falantes** ativada, à entrada **Transcrição**. Quando as gravações foram iniciadas separadamente, conecte a saída **Deslocamentos** do [**Sincronizar áudio**](https://nodaro.ai/docs/nodes/audio/audio-sync) à entrada **Deslocamentos**.

### Marcar a gravação principal e o plano aberto, e executar
Abra o painel de configurações. Escolha a **Gravação principal** e o **Plano aberto**, se houver. Clique em **Executar**. O nó mostra em qual câmera está cada falante.

Workflow: O Sincronizar áudio alinha as câmeras, o Transcrever identifica os falantes e o Mapa de falantes informa ao Troca de câmeras de quem é cada câmera.

- Enviar vídeo → Sincronizar áudio (Origens)
- Enviar vídeo → Mapa de falantes (Câmeras)
- Sincronizar áudio → Mapa de falantes (Deslocamentos)
- Transcrever → Mapa de falantes (Transcrição)
- Mapa de falantes → Troca de câmeras (Mapa de falantes)

## Entradas
| Entrada | Aceita | O que faz |
| --- | --- | --- |
| **Câmeras** | Nós de vídeo e de áudio, de 2 a 6 | Todas as gravações: as câmeras e, quando houver, a gravação principal e o plano aberto. Cada gravação é identificada pelo nó de onde vem, o mesmo id que um plano de edição dá a ela, então o mapa serve para o Troca de câmeras como está. Obrigatória. |
| **Deslocamentos** | Dados | Um resultado do [**Sincronizar áudio**](https://nodaro.ai/docs/nodes/audio/audio-sync) sobre as mesmas gravações. Deixe sem conexão quando as gravações já compartilham um mesmo relógio. Qualquer gravação pode ser a referência do Sincronizar áudio. Opcional. |
| **Transcrição** | Dados | A transcrição palavra a palavra com os falantes identificados, de um nó Transcrever executado com a identificação de falantes ativada. É a transcrição da gravação principal, ou senão da primeira gravação, em cujo relógio as falas são lidas. Obrigatória. |

## Saídas
| Saída | O que leva |
| --- | --- |
| **Mapa de falantes** | Em qual câmera está cada falante. Conecte-a à entrada **Mapa de falantes** do Troca de câmeras. |
| **Edição (EDL)** | As gravações como uma única edição no relógio principal: com os deslocamentos aplicados, a gravação principal e o plano aberto marcados, e os falantes de cada câmera definidos pelo mapa. |

A saída **Mapa de falantes** fica assim:

```json
{
"version": 1,
"speakerMap": { "speaker_0": "camA", "speaker_1": "camB", "speaker_2": "" },
"confidence": {
"speaker_0": { "camera": "camA", "marginDb": 9.4 },
"speaker_1": { "camera": "camB", "marginDb": 6.1 },
"speaker_2": { "camera": "", "marginDb": 1.2 }
},
"notes": ["\"speaker_2\": no clear camera (the loudest led by 1.2 dB) — shown on the wide shot; set the map to override."]
}
```

| Campo | O que significa |
| --- | --- |
| `speakerMap` | Cada rótulo de falante, com o id da câmera dele. `""` significa nenhuma câmera clara: o falante aparece no plano aberto, ou senão em qualquer câmera com imagem. |
| `confidence` | Para cada falante, a câmera que ele recebeu e quanto, em dB, a câmera mais alta estava à frente da seguinte. `null` quando menos de duas câmeras o ouviram. |
| `edl` | A mesma edição da saída **Edição (EDL)**. Aparece quando as gravações puderam ser lidas e uma gravação além da principal tem imagem. |
| `notes` | Avisos em linguagem simples: um falante sem câmera clara, um falante que menos de duas câmeras ouviram, uma câmera sem faixa de áudio e uma câmera que não ouviu nenhuma das falas. |

## Configurações
| Configuração | O que faz |
| --- | --- |
| **Câmeras** | As gravações conectadas, na ordem em que foram conectadas. |
| **Gravação principal** | A gravação que ouve todo mundo, como um microfone principal. Ela não é a câmera de ninguém, e a edição segue o relógio dela. **Nenhuma** por padrão. |
| **Plano aberto** | A câmera que filma todo mundo. Ela não é a câmera de ninguém, e um falante sem câmera clara aparece nela. Precisa ser uma câmera, não uma gravação só de som. **Nenhuma** por padrão. |
| **Vantagem necessária** | Quanto mais alta a câmera mais alta precisa estar em relação à seguinte para um falante ficar com ela. O padrão é 3 dB, e o painel de configurações oferece de 1 a 12 dB. Um valor menor dá câmera a mais falantes. Um valor maior mantém só os claros. |

### Como as câmeras são decididas
Para cada falante, considerando todas as falas dele:

- **A câmera mais alta vence.** A câmera que ouve o falante mais alto fica sendo a dele, quando está à frente da câmera seguinte por pelo menos a **Vantagem necessária**.
- **Nenhuma câmera clara.** Quando nenhuma câmera está tão à frente, por exemplo porque o falante está sentado entre duas câmeras, ele fica sem câmera clara. O Troca de câmeras então o mostra no plano aberto, ou, sem plano aberto, em qualquer câmera com imagem. Uma observação indica o falante e quanto a câmera mais alta estava à frente.
- **O plano aberto e a gravação principal nunca vencem.** Eles ouvem todo mundo, então não são a câmera de ninguém.
- **Uma câmera sem som não é uma falha.** Uma câmera sem faixa de áudio, com o microfone mudo ou que não ouviu nenhuma das falas simplesmente não pode ficar com um falante, e uma observação a indica.

## Créditos
O Mapa de falantes custa um preço fixo por execução, qualquer que seja a duração ou o número das gravações. O botão **Executar** do nó mostra o preço. As edições auto-hospedadas Community Edition e Business edition não usam créditos.

Estes casos são recusados antes de qualquer cobrança de créditos:

- Menos de 2 ou mais de 6 gravações, ou duas gravações com o mesmo id.
- Um plano aberto que é uma gravação só de som, como um nó de áudio.
- Uma transcrição ausente, ou uma transcrição sem nenhum falante identificado. Ative a identificação de falantes no Transcrever e execute-o de novo.

No canvas, uma gravação principal ou um plano aberto que não é uma das gravações é ignorado. Pela API, é recusado.

## Dicas
- **Marque o microfone principal e o plano aberto.** Sem isso, o som deles compete com o som das câmeras, e um plano aberto que ouve todo mundo pode ficar com um falante.
- **Conecte os deslocamentos quando as gravações foram iniciadas separadamente.** Sem eles, cada câmera é lida nos tempos da transcrição, e uma câmera que começou depois é escutada nos momentos errados.
- **Leia as observações.** Um falante sem câmera clara costuma estar sentado entre duas câmeras, ou os microfones das câmeras estavam ajustados de forma muito diferente. Defina a câmera desse falante na tabela **Falantes** do Troca de câmeras: uma câmera definida ali vale mais que o mapa.
- **Ajuste a vantagem.** Aumente a **Vantagem necessária** quando o mapa escolhe uma câmera só um pouco mais alta. Diminua quando falantes demais ficam sem câmera clara.
- **Deixe o Layout de locutores fazer isso.** O [**Layout de locutores**](https://nodaro.ai/docs/nodes/video/speaker-layout) executa o Sincronizar áudio, o Transcrever, o Mapa de falantes e o Troca de câmeras por você, e enquadra cada falante na própria câmera.

## Solução de problemas
| Problema | O que fazer |
| --- | --- |
| A execução é recusada porque a transcrição não tem falantes identificados | Ative a identificação de falantes no Transcrever, execute-o de novo e conecte a nova transcrição. |
| Um falante ficou sem câmera clara | Marque a gravação principal e o plano aberto, diminua a **Vantagem necessária** ou defina a câmera do falante no Troca de câmeras. |
| O plano aberto ficou com um falante | Escolha essa câmera em **Plano aberto**, para que ela não seja a câmera de ninguém. |
| O mapa está errado para uma câmera que começou depois | Conecte a saída **Deslocamentos** do Sincronizar áudio à entrada **Deslocamentos**. |

## Pela API
O `POST /v1/speaker-map` recebe `sources`, uma lista de 2 a 6 objetos com um `id` único, uma `url` e um `kind` opcional, e `transcript`. Ele também recebe, opcionalmente, `offsets` (um resultado do Sincronizar áudio), `masterSourceId`, `wideSourceId` e `marginDb`, de 0 a 30. `kind: "audio"` marca uma gravação só de som, como um microfone principal, que nunca é a câmera de ninguém.

Uma requisição malformada responde `400 validation_error`, e uma transcrição sem falantes identificados responde `422 no_speakers`, as duas antes de qualquer crédito ser reservado. O `output_data.json` da tarefa concluída é o resultado **Mapa de falantes** acima, e `output_data.edl` é a edição.

O método do SDK é `client.edit.speakerMap`, o comando da CLI é `nodaro edit speaker-map` e a ferramenta MCP é `speaker_map`. Passe o resultado ao Troca de câmeras como `speakerMapResult` no SDK, `--speaker-map-result` na CLI ou `speaker_map_result` no MCP. Veja [Voz e mídia](https://nodaro.ai/docs/developers/api/voice-and-media), [Edição no SDK](https://nodaro.ai/docs/developers/sdk/editing) e a [Referência das ferramentas MCP](https://nodaro.ai/docs/mcp/tools).

## Perguntas frequentes

### O que o Mapa de falantes faz?

O Mapa de falantes descobre em qual câmera está cada falante em uma gravação multicâmera. Enquanto um falante fala, a câmera apontada para ele o ouve mais alto, então essa câmera fica sendo a dele. O Troca de câmeras então coloca cada corte na câmera de quem está falando.

### O que o Mapa de falantes precisa?

O Mapa de falantes precisa de 2 a 6 gravações de uma mesma conversa e de uma transcrição com os falantes identificados, do Transcrever com a identificação de falantes ativada. Quando as gravações foram iniciadas separadamente, conecte também a saída Deslocamentos do Sincronizar áudio.

### O que acontece quando nenhuma câmera ouve um falante com clareza?

O falante fica sem câmera clara, e o Troca de câmeras o mostra no plano aberto, ou, sem plano aberto, em qualquer câmera com imagem. Uma observação indica o falante e quanto a câmera mais alta estava à frente.

### Quanto custa o Mapa de falantes?

O Mapa de falantes custa um preço fixo por execução, qualquer que seja a duração ou o número de gravações. O botão Executar do nó mostra o preço. As edições auto-hospedadas Community Edition e Business edition não usam créditos.

### O Mapa de falantes precisa de um modelo de IA ou de uma chave de provedor?

Não. O Mapa de falantes lê o som de cada gravação localmente, então funciona em todas as edições, inclusive em uma instalação Community Edition sem chaves de provedor.
