Comandos de mídia e voz
Troque vozes, embuta legendas, crie slides e sobreposições, processe áudio e planeje edições com os comandos voice, media, audio e edit da CLI do Nodaro.
Os comandos de mídia e voz da CLI do Nodaro trabalham diretamente com áudio, vídeo e imagens. O grupo voice troca a voz de faixas e cria vozes, media importa, corta, legenda e compõe mídias, audio processa e transcreve sons, e edit planeja e aplica edições para podcasts e vídeos longos. Cada comando usa o mesmo mecanismo que o nó correspondente no editor.
Todo comando que inicia um job aceita --watch para aguardar o resultado, --poll-interval <ms> para definir o intervalo da consulta periódica, e --json. Veja Saída e códigos de saída.
Voz
nodaro voice list [--clones] [--json]
nodaro voice changer --voice <id> --audio <url>|--video <url> [--model <id>] [--stability <0..1>] [--similarity <0..1>] [--style <0..1>] [--use-speaker-boost] [--seed <n>] [--remove-background-noise] [--watch] [--poll-interval <ms>] [--json]
nodaro voice recast --audio <url>|--video <url> --voices <v1,v2,...>|--voices-json <json> [--model <id>] [--output video|stems] [--analysis-json <json>|--analysis-file <path>] [--no-preserve-background] [--separation-quality fast|best] [--music-volume-mode match|normalize|manual] [--music-volume <0-200>] [--remove-background-noise] [--voice-fx <preset>] [--voice-fx-mix <0-100>] [--voice-fx-delay <20-2000>] [--voice-fx-decay <0-1>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice analyze --audio <url>|--video <url> [--separation-quality fast|best] [--suggest-title] [--watch] [--poll-interval <ms>] [--json]
nodaro voice export --source <videoUrl> --tracks-json <json>|--tracks-file <path> [--voice-fx <preset>] [--voice-fx-mix <0-100>] [--voice-fx-delay <20-2000>] [--voice-fx-decay <0-1>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice design --text <line> --description <desc> [--model <id>] [--loudness <-1..1>] [--guidance-scale <0-100>] [--seed <n>] [--quality <n>] [--enhance] [--user-prompt <text>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice remix --text <text> --description <desc> [--user-prompt <text>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice dub --audio <url> --target-language <code> [--source-language <code>] [--num-speakers <1-20>] [--disable-voice-cloning] [--drop-background-audio] [--watch] [--poll-interval <ms>] [--json]
nodaro voice clones list [--json]
nodaro voice clones delete <id> [--json]| Comando | O que faz |
|---|---|
voice list | Lista as vozes prontas, ou os seus clones com --clones. Use os nomes ou os ids delas com --voice e --voices. |
voice changer | Troca a voz de uma faixa de áudio ou de um vídeo com fala por uma única voz, como o nó Modificador de voz (Voice Changer). voice change é o mesmo comando. |
voice recast | Troca a voz de todos os falantes de uma gravação de uma vez, como o nó Modificador de voz Pro (Voice Changer Pro). voice pro é o mesmo comando. |
voice analyze | Detecta os falantes sem trocar as vozes e imprime a lista com --watch. Só no Nodaro Cloud. |
voice export | Renderiza o vídeo final a partir de um conjunto de faixas mixadas. Só no Nodaro Cloud. |
voice design | Cria uma nova voz sintética a partir de uma descrição em texto, como o nó Design de voz (Voice Design). |
voice remix | Fala um texto com uma voz descrita, sem clonagem, como o nó Remix de voz (Voice Remix). |
voice dub | Dubla uma gravação em outro idioma e mantém a voz de cada falante, como o nó Dublagem (Dubbing). |
voice clones | Lista e exclui os clones de voz criados antes de a clonagem ser descontinuada. |
Trocar a voz de vários falantes
voice recast roda no Nodaro Cloud. Uma instalação self-hosted o executa pela conexão com o Nodaro Cloud.
--voicesassocia vozes aos falantes na ordem em que o Nodaro os detecta. A palavrakeepmantém a voz original daquele falante, como em--voices Rachel,keep,Aria.--voices-jsonrecebe, em vez disso, o array bruto do SDK: ids de vozes, objetos de configuração por voz, ounullpara um falante que mantém a voz original.--output stemsretorna uma faixa seca por falante, para uma mixagem interativa, em vez de um vídeo pronto. Renderize a mixagem comvoice export.--analysis-filereaproveita um resultado salvo devoice analyze, então os falantes não são detectados de novo.
O fluxo interativo de troca de vozes
O voice recast de uma etapa renderiza um vídeo pronto em uma única chamada. O fluxo de três etapas permite conferir primeiro os falantes e mixar o resultado antes de renderizá-lo:
# 1. Detect the speakers. Save the job's output_data for step 2.
nodaro voice analyze --video https://example.com/panel.mp4 --watch --json > analyze.json
jq .output_data analyze.json > analysis.json
# 2. Recast to dry stems, reusing the analysis (no second detection)
nodaro voice recast --video https://example.com/panel.mp4 --voices Rachel,keep,Aria \
--analysis-file analysis.json --output stems --watch
# 3. Set the level and mute of each track, then render
nodaro voice export --source https://example.com/panel.mp4 --tracks-file mix.json \
--voice-fx hall --voice-fx-mix 25 --watchNa etapa 3, cada faixa em mix.json é um objeto com um url, um gain de 0 a 200, uma flag muted e um kind opcional, tirados dos stems da etapa 2. A exportação copia o fluxo de vídeo sem alterações; ele nunca é codificado de novo.
Mídia
nodaro media download <url> [--max-height <px>] [--section <a-b>] [--watch] [--json]
nodaro media metadata <url> [--json]
nodaro media trim-video --video <url> --start <sec> --end <sec>|--keep-first <sec>|--keep-last <sec> [--watch] [--poll-interval <ms>] [--json]
nodaro media trim-audio --video <url>|--audio <url> [--start <sec>] [--end <sec>] [--format mp3|wav|aac] [--watch] [--poll-interval <ms>] [--json]
nodaro media add-captions <videoUrl> [options, see below]
nodaro media still-to-video --image <url> --audio <url> [--motion none|zoom-in|zoom-out|pan-left|pan-right|ken-burns] [--intensity <1-10>] [--resolution 720p|1080p|4K] [--aspect-ratio <W:H>] [--fps 24|30] [--fit cover|contain] [--pad-color <hex>] [--watch] [--poll-interval <ms>] [--json]
nodaro media slideshow --images <url...> [--audio <url>] [--durations "10,auto,auto"] [--per-image <sec>] [--transition <id>] [--transition-duration <sec>] [--motion none|zoom-in|zoom-out|ken-burns|alternate] [--intensity <1-10>] [--resolution 720p|1080p|4K] [--aspect-ratio <W:H>] [--fps 24|30] [--fit cover|contain] [--pad-color <hex>] [--watch] [--json]
nodaro media collage <imageUrls...> [--sizes <0-3,...>] [--numbered] [--label <text>...] [--badge-position top-left|top-right] [--layout smart|grid] [--resolution 2K|4K] [--aspect-ratio <W:H>] [--gap <px>] [--background-color <hex>] [--watch] [--poll-interval <ms>] [--json]
nodaro media overlay <imageUrl> [layerUrls...] [--layers-file <path>] [--anchor <anchor>] [--x <%>] [--y <%>] [--width <%>] [--opacity <0-1>] [--platform <id>...] [--qr-text <text>] [--mask-mode none|layers|around|outside] [--mask-spread <px>] [--canvas <WxH>] [--base-fit contain|cover] [--background-color <hex>] [--output-format png|jpg|webp] [--watch] [--poll-interval <ms>] [--json]
nodaro media overlay-placement <imageUrl> [--intent <text>] [--aspect <ratio>] [--safe-area <x,y,w,h>] [--json]
nodaro media video-overlay <videoUrl> [layerUrls...] [--at <start[-end]>...] [--preset card|corner-badge|full-frame] [--corner top-left|top-right|bottom-left|bottom-right] [--layers-file <path>] [--aspect 16:9|9:16|1:1|4:5] [--base-fit cover|contain] [--background-color <hex>] [--watch] [--poll-interval <ms>] [--json]
nodaro media save <url> [--filename <name>] [--type image|video|audio] [--watch] [--poll-interval <ms>] [--json]| Comando | O que faz |
|---|---|
media download | Importa para o seu armazenamento um vídeo do YouTube, TikTok, Instagram, X ou Facebook. --section busca um intervalo de tempo, em segundos. --watch transmite o progresso ao vivo, e não há job para consultar periodicamente depois. |
media metadata | Lê a duração, as dimensões e o título de uma URL de mídia sem baixá-la. |
media trim-video | Corta um vídeo pelo tempo de início e de fim, ou mantém os primeiros ou os últimos segundos. |
media trim-audio | Corta o áudio de um vídeo ou de um arquivo de áudio e o salva como MP3, WAV ou AAC. |
media add-captions | Embute legendas em um vídeo. Veja Legendas. |
media still-to-video | Transforma uma imagem fixa e um arquivo de áudio em um MP4, e custa 0 créditos. O vídeo tem a duração do áudio, então não há opção de duração. --motion anima a imagem fixa. |
media slideshow | Transforma de 2 a 100 imagens, com áudio opcional, em uma apresentação de slides em MP4, e custa 0 créditos. |
media collage | Combina de 2 a 30 imagens em uma única imagem grande. |
media overlay | Coloca até 12 camadas sobre uma imagem base, com precisão de pixel, sem IA. |
media overlay-placement | Pergunta a um modelo de visão onde uma camada deve ficar. |
media video-overlay | Coloca de 1 a 20 camadas de imagem temporizadas sobre um vídeo, sem IA, por 22 créditos. |
media save | Salva uma URL de mídia no seu armazenamento, como imagem, vídeo ou arquivo de áudio. |
Apresentações de slides
Com áudio, o áudio define a duração da apresentação. As durações que você fixou com --durations são ajustadas na mesma proporção, e a CLI avisa isso. Sem áudio, a apresentação fica sem som e dura o número de imagens multiplicado por --per-image.
Colagens
--sizesdá a cada imagem uma indicação de tamanho relativo, na ordem das imagens:0automático,1grande (cerca de duas vezes mais larga),2médio,3pequeno (cerca de metade da largura). As indicações de tamanho só funcionam com o layout smart.--numberedcarimba um número de sequência, a partir de 1, em um canto de cada imagem, para storyboards.--badge-positiondefine esse canto:top-left, o padrão, outop-right. A opção também posiciona os rótulos.--labeladiciona uma legenda depois do número. Repita a opção uma vez por imagem, na ordem; um""vazio pula uma imagem.
Sobreposições em imagem
- As URLs de imagens depois da imagem base são camadas de imagem. Elas compartilham
--anchor,--x,--y,--widthe--opacity, o que serve bem para uma marca d'água. --layers-filerecebe, em vez disso, o array JSON completo de camadas: opções por camada e os tipos texto, QR code e forma.- O posicionamento é em porcentagem da imagem base, então um mesmo comando serve para uma prévia em 1K e para uma renderização em 4K.
--platform, que pode ser repetido, também renderiza a composição no tamanho daquela plataforma. A renderização base custa 11 créditos, e cada plataforma aumenta o preço. A saída do job lista as renderizações extras comovariants.overlay-placementresponde nas mesmas unidades de porcentagem: uma âncora,x,y,widthe um motivo de uma linha. Ele responde na hora, sem job para consultar periodicamente, e custa uma chamada de imagem para texto.
Sobreposições em vídeo
- Informe um
--atpor URL de imagem, na ordem.3significa de 3 segundos até o fim, e1.2-2.6significa de 1,2 a 2,6 segundos. --presete--cornervalem para todas as camadas de imagem informadas como URL.--layers-filerecebe, em vez disso, o array completo de camadas, com caixa, opacidade, animação e ordem de empilhamento por camada.--base-fite--background-colorexigem--aspect.- O áudio do vídeo base é mantido intacto.
Veja o nó Sobreposição em vídeo (Video Overlay) para as opções de camada.
Legendas
nodaro media add-captions <videoUrl> [--text <text>] [--captions-file <file.json>] [--style subtitle|word-highlight|karaoke|tiktok-words|word-pop|bouncy] [--look outline|clean] [--position bottom|top|center] [--position-y <pct>] [--font-size <px>] [--font-family <name>] [--font-weight <100-900>] [--color <c>] [--background-color <c>] [--stroke-color <c>] [--stroke-width <px>] [--highlight-color <c>] [--uppercase|--no-uppercase] [--max-words-per-line <1-20>] [--animate|--no-animate] [--no-auto-transcribe] [--transcribe-provider elevenlabs-stt|incredibly-fast-whisper|whisper] [--segments-file <file.json>] [--watch] [--poll-interval <ms>] [--json]media add-captions tem dois tipos de estilo, como o nó Adicionar legendas (Add Captions):
| Estilo | O que mostra |
|---|---|
subtitle | Legendas estáticas, sem animação das palavras. |
word-highlight, karaoke, tiktok-words, word-pop, bouncy | Legendas cinéticas, animadas palavra por palavra. word-highlight, karaoke e bouncy mostram uma linha fixa de cada vez. |
O texto das legendas
- Em
subtitle,--texté embutido como um único bloco estático durante o vídeo inteiro. Ele nunca é substituído por uma transcrição. Omita--textpara legendar a fala. - Em um estilo cinético,
--texté só a alternativa quando a transcrição não retorna nada, ou quando você passa--no-auto-transcribe. --captions-fileé um array JSON de entradas com tempo por palavra,[{ text, startMs, endMs }], com uma entrada por palavra nos estilos cinéticos. Oswordsde um resultado denodaro audio transcribeservem do jeito que estão; use o arquivo junto com--no-auto-transcribe.--segments-filedá a intervalos de tempo estilo, visual e posição próprios. Os intervalos não podem se sobrepor.
Estilização
- As opções de estilização também estilizam um
subtitle:--look,--font-family,--font-weight,--stroke-color,--stroke-width,--uppercase,--position-ye--max-words-per-line. Umsubtitleestilizado é cobrado pelo preço cinético; umsubtitlesimples continua no preço mais baixo. --highlight-colore--animatesó funcionam nos estilos cinéticos. As duas são recusadas emsubtitle.--animatevem ativada por padrão.--no-animatepara o movimento de cada palavra e mantém o agrupamento e a cor de destaque.- Sem
--look, os estilos cinéticos são renderizados comooutline, esubtitleé renderizado comoclean. --max-words-per-linelimita o número de palavras em uma linha de legenda, ou em uma página detiktok-words, de 1 a 20. A largura do quadro, os finais de frase e as pausas de 0,5 segundo ou mais também quebram as linhas. Uma ou duas palavras dão uma leitura rápida e marcante; deixe a opção sem valor para preencher a largura. Em um subtitle com--text, ela só define as quebras de linha, e não tem efeito emword-pop.- Uma renderização cinética ou estilizada mantém a taxa de quadros da origem, como um número inteiro de 15 a 60 fps. Uma origem com taxa de quadros variável ou muito longa é renderizada a 30 fps.
Mecanismo de transcrição
--transcribe-provider escolhe o mecanismo que transcreve a fala. Um estilo cinético precisa das marcações de tempo das palavras, do incredibly-fast-whisper, o padrão, ou do elevenlabs-stt. subtitle só precisa das marcações de tempo das frases, então whisper também funciona nesse caso.
Áudio
nodaro audio separate --audio <url> [--mode vocal_instrumental|stems] [--quality auto|fast|best] [--watch] [--poll-interval <ms>] [--json]
nodaro audio isolate --audio <url> [--watch] [--poll-interval <ms>] [--json]
nodaro audio fx --audio <url> [--preset <preset>] [--mix <0-100>] [--delay <20-2000>] [--decay <0-1>] [--eq-low <db>] [--eq-high <db>] [--watch] [--poll-interval <ms>] [--json]
nodaro audio mix --audio <url> --audio <url> ... [--volumes <csv>] [--watch] [--poll-interval <ms>] [--json]
nodaro audio adjust-volume --audio <url>|--video <url> [--volume <0-200>] [--normalize] [--fade-in <sec>] [--fade-out <sec>] [--watch] [--poll-interval <ms>] [--json]
nodaro audio combine --segment <url[@a-b]> --segment ... [--watch] [--poll-interval <ms>] [--json]
nodaro audio transcribe --audio <url> [--provider elevenlabs-stt|incredibly-fast-whisper|whisper] [--language <code>] [--diarize] [--tag-audio-events] [--word-timestamps] [--watch] [--poll-interval <ms>] [--json]| Comando | O que faz | Nó |
|---|---|---|
audio separate | Separa os vocais do instrumental, ou divide o áudio em stems. | Separação de áudio (Audio Separation) |
audio isolate | Mantém a voz e remove o resto. | Extrator de voz (Voice Extractor) |
audio fx | Aplica uma predefinição de efeito, com configurações de mixagem, delay, decaimento e equalizador. | Efeitos de áudio (Audio FX) |
audio mix | Mixa várias faixas, com um volume por faixa. | Mixar áudio (Mix Audio) |
audio adjust-volume | Altera o volume, normaliza e aplica fade in ou fade out. | Ajustar volume (Adjust Volume) |
audio combine | Junta segmentos um depois do outro. url@a-b pega um intervalo de tempo de um arquivo. | Combinar áudio (Combine Audio) |
audio transcribe | Transforma fala em texto. | Transcrever (Transcribe) |
Estas são as peças que o Modificador de voz Pro combina, disponíveis separadamente.
Mecanismos de transcrição
| Mecanismo | Marcações de tempo das palavras | Também aceita |
|---|---|---|
elevenlabs-stt | Sempre | --diarize (quem fala quando) e --tag-audio-events |
incredibly-fast-whisper | Com --word-timestamps | |
whisper | Nenhuma, só segmentos de frases; --word-timestamps é recusado antes de qualquer crédito ser gasto |
Se você omitir --provider, o mecanismo whisper é executado. Indique um mecanismo sempre que precisar das marcações de tempo das palavras.
O output_data do job concluído traz text, words (uma entrada por palavra, em milissegundos) e json (a transcrição normalizada, também em milissegundos). Uma lista segments no nível superior, em segundos, só existe com whisper e incredibly-fast-whisper; o elevenlabs-stt não retorna nenhuma, então leia words. Passe words para media add-captions --captions-file para uma renderização cinética.
Edição
Os comandos de edição são peças editoriais para podcasts e vídeos longos.
nodaro edit silence-detect <audioUrl> [--threshold-db=-35] [--min-silence-ms <ms>] [--pad-ms <ms>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit audio-sync (--source <[id=]url> ... | --sources-file <file.json>) [--reference <id>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit apply-edl --edl <file.json> [--transcript <file.json>] [--source <url> ...] [--output video|audio] [--quality proxy|final] [--crossfade-ms <ms>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit plan --mode tighten|clips|chapters --plan-tier economy|standard|premium --transcript <file.json> (--source <url[@audio|@video]> ... | --sources-file <file.json>) [--silence <file.json>] [--instructions <text>] [--style-guide <text>] [--count <n>] [--target-duration-sec <n>] [--target-aspect 16:9|9:16|1:1|4:5] [--platform <name>] [--watch] [--poll-interval <ms>] [--json]| Comando | O que faz | Nó |
|---|---|---|
edit silence-detect | Encontra os trechos silenciosos de uma gravação. | Detectar silêncio (Silence Detect) |
edit audio-sync | Alinha de 2 a 6 gravações, de áudio ou vídeo, do mesmo evento. | Sincronizar áudio (Audio Sync) |
edit plan | Planeja uma edição a partir de uma transcrição: deixar o ritmo mais enxuto, cortar clipes ou marcar capítulos. | Plano de edição (Edit Plan) |
edit apply-edl | Renderiza uma lista de decisões de edição (EDL) como vídeo ou arquivo de áudio. | Aplicar EDL (Apply EDL) |
edit audio-sync nomeia as gravações como source-1, source-2 e assim por diante, a menos que você informe um id no formato id=url. O output_data.json dele tem três campos:
reference: a gravação à qual as outras são alinhadas. Escolha essa gravação com--reference.offsets: uma entrada por gravação, comsourceId,offsetMs,confidenceedriftMsPerHour.notes: observações sobre o alinhamento.
Um tempo em uma gravação é convertido para a referência com referenceMs = sourceMs + offsetMs.
Perguntas frequentes
Páginas relacionadas
Comandos
Exemplos
Modificador de voz Pro
Adicionar legendas
Transcrever
Última atualização
Comandos de entidades
Crie personagens, locais e objetos pela CLI do Nodaro, gere e aprove suas imagens principais e adicione variações e clipes de movimento a cada entidade.
Espaços de trabalho e organizações
Escolha o espaço de trabalho da CLI do Nodaro, crie organizações, convide uma turma ou equipe em lote e exporte relatórios de uso em tabela, JSON ou CSV.