Communitygithub.com

yanghhu/ai-subtitle-generator

Gere legendas com timecode, transcrições ou JSON a partir de vídeos/áudios locais (locuções, podcasts, vlogs, reuniões). Suporta também sincronizar legendas com narração gerada. Compatível com Claude Code, Codex, Cursor, OpenClaw, WorkBuddy.

O que é ai-subtitle-generator?

Esta skill (habilidade) para agentes de IA permite converter arquivos de mídia locais (vídeo ou áudio) em legendas SRT com timecode, transcrições de texto ou JSON estruturado por segmentos. É ideal para automatizar a adição de legendas em vídeos para YouTube, TikTok, entrevistas, palestras, reuniões, podcasts e conteúdo para plataformas como Instagram e YouTube. O reconhecimento de fala é realizado pela poderosa API da Miragea, de forma remota e sem necessidade de GPU local — todo o processamento no lado do agente (Claude Code, Codex, Cursor, OpenClaw, WorkBuddy) é feito apenas com a biblioteca padrão do Python 3.9+. Além do reconhecimento direto de áudio/vídeo em SRT, TXT ou JSON, a skill também suporta um fluxo inverso: você fornece um roteiro de narração (script) e a ferramenta gera simultaneamente o áudio narrado e as legendas SRT sincronizadas, eliminando a necessidade de um pós-processamento de reconhecimento de fala. Antes de qualquer submissão, o script consulta dinamicamente os limites de capacidade (como taxa por segundo, tamanho máximo de arquivo e duração máxima) e bloqueia o envio se as taxas forem alteradas pelo servidor, evitando cobranças inesperadas e garantindo que você só pague pelo que foi acordado.

Funciona com✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/yanghhu/miragea-voiceover-skills/tree/HEAD/skills/ai-subtitle-generator

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Gerador de Legendas (Subtitle Generator)

O Gerador de Legendas (subtitle generator) é uma skill de Agente que reconhece automaticamente arquivos de vídeo ou áudio locais e gera legendas SRT com timecode (ou transcrições TXT, JSON). Perfeito para adicionar legendas automaticamente a vídeos, converter áudio em legenda ou texto, e também sincronizar legendas com narração gerada por script – tudo sem precisar de GPU.

Definição em uma linha

Gerador de Legendas = Arquivo de vídeo/áudio local → recognize → .srt com timecode (ou .txt como transcrição, .json segmentado); para narração baseada em script, use voiceover.py script e obtenha simultaneamente voiceover.srt. O reconhecimento é feito pela API aberta da Miragea, sem necessidade de GPU local.

Duas formas de gerar legendas

O que você temUseResultado
Vídeo / áudio já gravadomiragea_audio.py recognize --file arquivo --wait --output legenda.srtSRT; --subtitle-format txt para transcrição pura, json para texto, idioma e segmentos com timecode
Roteiro ainda não narradovoiceover.py script script.md -o outNarração voiceover.wav + legenda voiceover.srt alinhada com a duração real do áudio + manifest.json

Público-alvo e cenários

Quem usaCenário típico
Criadores de conteúdo curtoAdicionar legendas automáticas a vlogs e vídeos com locução, depois ajustar no CapCut
Cursos / PalestrasGerar legendas e transcrições para aulas gravadas
Entrevistas / PodcastsConverter áudio em legenda e texto, organizar roteiro
Reuniões gravadasExportar TXT como base para atas
Canais de narraçãoReconhecer trechos como texto de referência para roteiro
Desenvolvedores / Fluxos de AgenteJSON segmentado (start / end / text) para processamento posterior

Parâmetros principais da capacidade

ItemDescrição
Arquivos de saídavoiceover.wav (narração completa), voiceover.srt (legenda com timecode), manifest.json (cada frase com locutor, texto, tempo de início/fim), lines/ (áudio por frase, reutilizável ao editar)
Fonte de vozPersonagem existente na conta actor_id= (consulte com actors), ou URL de áudio de referência ref= + texto falado ref_text= (clonagem de voz)
Modo de geraçãoexpressive (padrão no cliente) / standard (mais parecido); se omitido, usa o padrão do servidor, conforme capabilities
Rótulo de tomtags=nome_da_tag, veja tags[].label do modo escolhido em capabilities
Velocidadespeed= 0.25–4, 1 = velocidade normal, conforme configuração do personagem
Múltiplos personagensDefina uma voz para cada personagem no início do script; a skill chama sequencialmente o cliente oficial generate e concatena tudo localmente
Pausas[pause 0.6] / [pausa 0.6] (segundos) dentro da linha; --gap define pausa padrão entre frases
LegendasNa narração, gera SRT com base na duração real de cada frase (--max-chars, --speaker-labels); para áudio/vídeo existente, use recognize para SRT / TXT / JSON
Predefinições de cena--preset koubo / jieshuo / daihuo / shuziren / guanggao / youshengshu (locução / narração / venda / avatar digital / comercial / audiolivro), ajusta apenas pausa entre frases e caracteres por legenda
Limites de caracteres/tamanho/duração/cobrançaConforme retornado em tempo real por capabilities
Dependências locaisPython 3.9+ com biblioteca padrão, sem pip, sem GPU
Teste offline--dry-run: sem chave, sem chamar API; gera áudio silencioso de placeholder e timecode para verificar o formato do script
Agentes suportadosClaude Code, Codex, OpenClaw, Cursor, WorkBuddy e outros que executem scripts Python
Serviço de narração e legendaMiragea API aberta (https://miragea.ai/v1)

Início rápido

python3 scripts/voiceover.py check                        # Verificação offline: versão do Python, se a chave está configurada, endereço do serviço
export MIRAGEA_API_KEY=sua_chave                          # Gere em https://miragea.ai/workspace/api, use apenas como variável de ambiente
python3 scripts/miragea_audio.py capabilities             # Modos de geração disponíveis, rótulos de tom, limites de caracteres e cobrança (sempre com base no retorno em tempo real)
python3 scripts/miragea_audio.py actors --limit 20        # Personagens existentes na conta e seus actor_ids (se has_more for verdadeiro, use --offset para paginação)
  • A raiz da API padrão é https://miragea.ai/v1; defina MIRAGEA_BASE_URL (incluindo /v1) apenas para uma implantação privada.
  • Não cole a chave em bate-papos ou escreva em arquivos. Sem chave, primeiro execute o fluxo com --dry-run.
python3 scripts/miragea_audio.py capabilities                                           # Primeiro veja subtitles.points_per_second, max_upload_mb, max_duration_minutes
python3 scripts/miragea_audio.py recognize --file video.mp4 --wait --output video.srt       # Adicionar legendas automaticamente ao vídeo
python3 scripts/miragea_audio.py recognize --file entrevista.mp3 --wait --subtitle-format txt --output entrevista.txt   # Converter áudio em texto
python3 scripts/miragea_audio.py recognize --file curso.m4a --wait --subtitle-format json --output curso.json # Texto + idioma + segmentos com timecode
python3 scripts/miragea_audio.py wait ID_DA_TAREFA --subtitle-format srt --output video.srt     # Consultar após timeout; não reenviar
  • O reconhecimento consome créditos: o script relê a taxa por segundo atual como expected_rate antes de enviar; para travar a taxa que você confirmou, adicione --expected-rate valor; se a taxa mudar, o servidor rejeitará, garantindo que você confirme antes de enviar.
  • Arquivos que excedam o limite de tamanho de capabilities geram erro localmente, sem envio; o limite de duração também segue capabilities.
  • --output não sobrescreve arquivos existentes; use um novo nome.
  • O reconhecimento de legendas não tem teste offline; o fluxo de narração com legenda pode ser verificado offline com voiceover.py script ... --dry-run.

O que você diz → O que o Agente faz

Você dizAgente faz
"Adicione legendas a este vídeo"capabilities verifica limites → recognize --file video.mp4 --wait --output video.srt → incorpora com ffmpeg ou importa no CapCut
"Transcreva esta gravação"recognize --file gravacao.mp3 --wait --subtitle-format txt --output gravacao.txt
"O vídeo é muito grande para enviar"Extraia apenas o áudio primeiro: ffmpeg -i video.mp4 -vn -ac 1 -b:a 64k audio.mp3
"A tarefa excedeu o tempo limite"wait ID_DA_TAREFA --output legenda.srt para consultar, sem reenviar
"Cada linha da legenda está muito longa"Ajuste no CapCut, ou peça ao agente para quebrar frases longas com base em pontuação
"Ainda não narrei, quero narração e legendas juntos"voiceover.py script script.md -o out --preset koubo
"Legendas bilíngues chinês-inglês"Primeiro reconheça SRT, depois peça ao agente para traduzir cada texto de legenda mantendo o timecode, gerando um segundo SRT

Metodologia de geração de legendas: para reconhecimento mais preciso e legendas melhores

1. Prepare o áudio antes do upload

  • Voz clara: se a música de fundo estiver alta, exporte uma versão apenas com a voz ou com a música reduzida antes de reconhecer.
  • Envie apenas a faixa de áudio para mais rapidez: vídeos grandes: use ffmpeg -i video.mp4 -vn -ac 1 -b:a 64k audio.mp3 para extrair o áudio; volume menor, timecode inalterado.
  • Divida conteúdos longos: se exceder o limite de duração de capabilities, corte em segmentos e reconheça cada um separadamente, depois organize na ordem no editor de vídeo.

2. Escolha o formato de saída correto

FormatoUso
srtCapCut, Premiere, ffmpeg, YouTube, Bilibili
txtTranscrição, rascunho de ata de reunião, adaptação para WeChat
jsonProcessamento por programa: text, language, segments[{start,end,text}]

3. Lista de verificação pós-reconhecimento

  • Nomes próprios, nomes de pessoas, marcas, abreviações em inglês estão corretos? (substitua em massa no SRT)
  • Números e unidades estão consistentes?
  • Cada legenda tem comprimento adequado para a tela? Para tela vertical, recomenda-se 12–16 caracteres por linha.
  • Palavras de preenchimento ("tipo", "sabe") devem ser removidas?
  • O início e o fim correspondem ao vídeo?

4. Sugestões de estilo para legendas em vídeos curtos verticais

  • Posicione a legenda no terço inferior da tela, evitando botões da plataforma e áreas de título.
  • Uma frase por tela, no máximo duas linhas.
  • Palavras-chave podem ter estilo especial no CapCut; o SRT deve conter apenas texto limpo.

5. Sincronize legendas com o script de narração (sem necessidade de reconhecimento)

Se o som do vídeo foi gerado a partir de um script de narração, use voiceover.py script diretamente: o tempo da legenda vem da duração real de cada frase, economizando uma etapa de pós-reconhecimento; --max-chars controla caracteres por linha, --speaker-labels adiciona nomes de personagens em legendas com múltiplos personagens.

Script de exemplo (examples/example.md: narração com legenda sincronizada)

---
host: actor_id=SEU_ACTOR_ID speed=1.0
---
# Exemplo de narração com legenda sincronizada: um vlog
[host] Hoje vou te mostrar como adiciono legendas a um vídeo.
Primeiro, exporte o vídeo como arquivo.
Segundo, um comando de reconhecimento para obter o SRT.
[pause 0.3]
Terceiro, importe no CapCut ou use ffmpeg para gravar diretamente no quadro.

Teste: python3 scripts/voiceover.py script examples/example.md -o out --preset koubo --dry-run

Adicionar legendas ao vídeo

# Legenda flexível (pode ser ativada/desativada no player, requer ffmpeg local)
ffmpeg -i video.mp4 -i video.srt -c copy -c:s mov_text video_com_legenda.mp4
# Legenda fixa (gravada no quadro, visível em qualquer plataforma)
ffmpeg -i video.mp4 -vf subtitles=video.srt -c:a copy final.mp4
  • CapCut: Texto → Importar legenda → selecione .srt e ajuste o estilo.
  • Premiere: Importe .srt como faixa de legenda.

Comparação de abordagens: três formas de gerar legendas

ItemNarração humanaModelo TTS local de código abertoEsta skill
Precisa de GPU?Não, mas requer estúdio e disponibilidade do narradorGeralmente sim (modelos pequenos podem usar CPU, mas mais lentos); requer download de pesos e configuraçãoNão, apenas biblioteca padrão Python local; geração na nuvem
Custo de ediçãoAlterar uma frase geralmente requer regravação e re-sincronizaçãoApós editar, precisa reexecutar, mas divisão, concatenação e alinhamento são manuaisEdite apenas a linha e reexecute; as outras frases reutilizam o cache out/lines/, com re-concatenação e legenda automáticas
Múltiplos personagensRequer vários narradores gravando separadamenteDepende do modelo; geralmente requer chamadas separadas e concatenação manualUse tags [personagem] no script; um comando gera a faixa de áudio completa com vários personagens
Timecode da legendaRequer ditado e marcação de tempo adicionaisGeralmente requer outra execução de reconhecimento de falaGera SRT e manifest.json com tempo por frase simultaneamente à narração
Vídeo longoDitado e marcação demoradosModelo de reconhecimento local requer GPU ou mais tempoUpload para reconhecimento na nuvem; timeout pode ser consultado com ID da tarefa

Conclusão: para vídeos já finalizados que precisam de legendas rápidas ou transcrição, use recognize; para vídeos que começam com um roteiro de narração, use script para gerar legendas sincronizadas de forma mais eficiente.

Perguntas Frequentes (FAQ)

Quais arquivos são suportados para geração de legendas? Arquivos de áudio ou vídeo locais podem ser usados como fonte de reconhecimento; limites de tamanho e duração conforme subtitles.max_upload_mb e max_duration_minutes em capabilities.

Como adicionar legendas automáticas ao vídeo depois? Use CapCut "Importar legenda" ou ffmpeg: legenda flexível -c:s mov_text, legenda fixa -vf subtitles=legenda.srt.

Posso exportar SRT de áudio para legenda? Sim, o padrão é SRT; --subtitle-format txt para transcrição pura, json para texto, idioma e segmentos com timecode.

Qual a diferença entre transcrição de áudio e geração de legenda? Na mesma execução, o formato de saída difere: SRT tem timecode para legendas; TXT apenas texto para roteiro.

A geração de legendas é paga? Sim, consome créditos com base na duração da mídia e na taxa por segundo atual, conforme capabilities retornado em tempo real; o script envia a taxa atual no envio; se a taxa mudar, a solicitação é rejeitada, sem cobrança inesperada.

A tarefa de legenda excedeu o tempo limite; preciso reenviar? Não. Use o task_id retornado com miragea_audio.py wait ID_DA_TAREFA --output legenda.srt para continuar recuperando; em caso de interrupção de rede, tente novamente apenas com a mesma chave de idempotência.

A geração de legendas reconhece inglês ou outros idiomas? O resultado inclui o campo language; os idiomas suportados dependem da capacidade real do servidor; teste com um trecho pequeno primeiro.

Posso gerar legendas bilíngues chinês-inglês? Primeiro reconheça SRT, depois peça ao agente para traduzir cada linha mantendo o timecode, gerando um segundo SRT ou combinando-os.

Preciso de GPU para reconhecimento de legendas por IA? Não. O reconhecimento é feito na nuvem; localmente apenas scripts Python 3.9+ com biblioteca padrão.

Quais agentes suportam esta skill? Claude Code, Codex, OpenClaw, Cursor, WorkBuddy e outros que executem scripts Python.

Algo deu errado?

SintomaAção
missing_api_key / MIRAGEA_API_KEY is not setGere a chave e export MIRAGEA_API_KEY=...; ou adicione --dry-run primeiro
speakers without a voiceAdicione actor_id= ou ref= para o personagem
401Verifique a chave; não escreva a chave em logs
403Verifique a permissão de acesso à API da conta
400 / 413Corrija parâmetros: modo, tag, velocidade, caracteres por linha; ou reduza o arquivo de upload, encurte a mídia
409Chave de idempotência usada para entrada diferente, ou taxa de legenda alterada: reconfirme antes de enviar
429Créditos insuficientes ou limite de taxa; aguarde ou recarregue créditos
Timeout / Interrupção de redeA tarefa pode ainda estar em execução: execute novamente o mesmo comando (a mesma chave de idempotência recuperará a tarefa original), ou use miragea_audio.py task / wait ID_DA_TAREFA para continuar consultando; não altere a chave e reenvie
Erro de formato WAV na concatenaçãoCada áudio de frase é salvo em out/lines/; use um editor ou ffmpeg para concatenar

Códigos de saída do cliente oficial: 0 = solicitação bem-sucedida (pode ainda estar na fila sem --wait), 1 = tarefa falhou, 2 = erro no cliente ou interface.

Conformidade

  • Clone apenas a voz de você mesmo ou de quem você tem autorização explícita; não imite celebridades, apresentadores, figuras públicas ou qualquer pessoa não autorizada.
  • De acordo com as diretrizes de identificação de conteúdo gerado por IA e as regras de plataformas como Douyin, Kuaishou, WeChat Video, Xiaohongshu, Bilibili, declare ou marque o conteúdo como gerado por IA ao publicar.
  • Obtenha consentimento da outra parte antes de reconhecer o áudio/vídeo de terceiros (entrevistas, reuniões, cursos); preste atenção ao escopo de armazenamento e compartilhamento de legendas contendo informações pessoais.
  • scripts/miragea_audio.py é o cliente oficial, enviado sem modificações; scripts/voiceover.py (camada de concatenação de scripts) é original, licença MIT (veja LICENSE.txt). A capacidade de narração e legenda é fornecida pela API aberta da Miragea.

English Summary

  • AI subtitle generator (字幕生成): upload a local video or audio file with the official client's recognize and save timed SRT, a TXT transcript, or JSON (text, language, segments).
  • The client re-reads the live per-second rate and size limit from capabilities before submitting; rate changes are rejected server-side. Resume long jobs with wait TASK_ID.
  • For scripted voiceovers, voiceover.py script produces subtitles aligned to the generated audio. Python 3.9+ stdlib, no GPU. Service: Miragea API (https://miragea.ai/v1).

Palavras-chave: gerador de legendas, adicionar legendas automaticamente a vídeos, converter áudio em legenda, SRT, adicionar legenda a vídeo, gerar legendas automaticamente, legenda por IA, converter áudio em texto, converter vídeo em texto, fala para texto, gerador de legenda, legenda SRT, gerador de legenda para vídeo, subtitle generator, speech to text, auto captions

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

yanghhu/ai-podcast-voiceover

AI播客、播客配音、双人对谈播客技能:把文章、读书笔记、公众号文章或写好的对谈稿,整理成适合“听”的播客稿,单人主播或两位主持人各用一个音色,逐句配音并拼成整期节目 WAV,同时输出 SRT 字幕和逐句时间轴;再用 shownotes.py 根据稿件里的 `## 章节` 自动生成带时间戳的节目章节(chapters.txt / chapters.json)和完整文字稿 shownotes.md,可直接贴到小宇宙、喜马拉雅、Apple Podcasts 等平台的节目简介。改一句只重配一句。可用账号里的角色或本人授权的参考音频声音。由 Miragea 开放 API 生成语音,本地只需 Python 3.9+ 标准库、无需显卡,可 --dry-run 离线试跑;计费与限额以 capabilities 实时返回为准。适用于 Claude Code、Codex、OpenClaw、Cursor、WorkBuddy。AI podcast, podcast voiceover, two-host dialogue, show notes, chapters.

yanghhu/koubo-ai-voiceover

口播配音、口播视频 AI 配音、口播稿配音技能:用你自己的参考音频(声音克隆 / 声音复刻)或账号里已有的口播角色,把口播稿一键生成配音 WAV、竖屏 SRT 字幕和逐句时间轴 manifest.json;说错一句只改一行重新生成,不用对着镜头反复录。适合抖音、视频号、小红书、快手、B站的知识口播、财经口播、情感口播、职场口播博主和 MCN 批量更新;可用语气标签和语速控制口播节奏。配音由 Miragea 开放 API 完成,本地只需 Python 3.9+ 标准库、无需显卡,可 --dry-run 离线试跑。适用于 Claude Code、Codex、OpenClaw、Cursor、WorkBuddy。Talking-head AI voiceover, voice cloning, SRT subtitles.

yanghhu/miragea-video-voiceover

AI配音、视频配音、文字转语音(TTS)、声音克隆与字幕生成技能:把口播稿、电影解说稿、小说推文、广告脚本、带货文案、有声书章节写成带 [角色] 标签的稿件,一条命令生成多角色配音 WAV、带时间轴的 SRT 字幕和逐句时间 manifest.json,直接导入剪映 / CapCut / Premiere / ffmpeg。音色可用账号已有角色,也可用参考音频 + 对应文本做声音克隆;支持语气标签、0.25–4 倍语速、停顿控制;已有音频 / 视频可识别成 SRT / TXT / JSON 字幕。内置口播、解说、带货、数字人、广告片、有声书 6 个节奏预设;改一句只重配一句。配音与字幕由 Miragea 开放 API 生成,本地只需 Python 3.9+ 标准库、无需显卡,可 --dry-run 离线试跑。适用于 Claude Code、Codex、OpenClaw、Cursor、WorkBuddy。AI voiceover, text to speech, voice cloning, multi-speaker dubbing and SRT subtitles.

yanghhu/movie-recap-ai-voiceover

电影解说配音、短剧解说配音、影视解说配音技能:解说旁白(narrator)加多个角色台词,各用不同音色,一条命令生成整段 AI 配音 WAV、SRT 字幕和逐句时间轴 manifest.json,按时间轴在剪映 / CapCut / Premiere 里对画面。音色可用账号已有角色或参考音频声音克隆,打造解说号固定声线;语气标签和语速可调;改一句稿只重配一句。适合电影解说号、电视剧解说、短剧解说、动漫解说、纪录片旁白。配音由 Miragea 开放 API 完成,本地只需 Python 3.9+ 标准库、无需显卡,可 --dry-run 离线试跑。适用于 Claude Code、Codex、OpenClaw、Cursor、WorkBuddy。Movie recap AI voiceover, multi-voice narration, voice cloning, SRT subtitles.

yanghhu/novel-video-voiceover

小说推文配音、有声书配音、多角色配音技能:把小说推文文案、网文章节、故事、广播剧剧本按旁白和角色分配不同音色,一键生成整段配音 WAV、带角色名的 SRT 字幕和逐句时间轴 manifest.json,直接配画面做小说推文视频;段落、场景、章节停顿可控。适合小说推文号、故事号、网文作者有声化、睡前故事和广播剧小样。音色可用账号已有角色或参考音频声音克隆,固定旁白声线;语气标签和语速可调;改一句只重配一句。由 Miragea 开放 API 生成,本地只需 Python 3.9+ 标准库、无需显卡,可 --dry-run 离线试跑。适用于 Claude Code、Codex、OpenClaw、Cursor、WorkBuddy。Novel video voiceover, audiobook narration, multi-voice, SRT subtitles.

Habilidades Relacionadas