jiajunzeng789/cantonese-subtitle-skill

Converte áudios e vídeos de carros em cantonês para legendas SRT em chinês escrito simplificado, com quebras de linha por quadro vertical/horizontal, linha única e sem pontuação, preservando símbolos necessários de valores e nomes próprios e alinhando ao eixo temporal original.

O que é cantonese-subtitle-skill?

Esta skill é especializada em transcrição e legendagem de conteúdo automotivo em cantonês, operando localmente no dispositivo sem depender de APIs de reconhecimento online. Ela utiliza um pipeline de dois modelos (Whisper large-v3 e Qwen3-ASR-1.7B) para reconhecimento de fala, seguido de calibração textual e segmentação semântica adaptada ao formato do vídeo (horizontal ou vertical). A saída é um arquivo SRT codificado em UTF-8, com cada legenda contendo uma única linha de texto em chinês escrito simplificado, sem pontuação de frase, mas preservando símbolos essenciais como números, unidades (e.g., '1.8m'), porcentagens, temperaturas e marcas/termos técnicos (e.g., 'CX-5'). A skill é particularmente útil para profissionais de pós-produção, criadores de conteúdo e entusiastas automotivos que precisam de legendas precisas em cantonês para materiais de vídeo, oferecendo um fluxo de trabalho robusto que inclui verificação cruzada entre modelos, correção de termos específicos do domínio automotivo, e segmentação inteligente que respeita a duração ideal por quadro. Ela suporta plataformas como Claude Code e Cursor, e seu design modular permite retomada de falhas, preservação de logs e arquivos intermediários, garantindo transparência e rastreabilidade no processo.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jiajunzeng789/cantonese-subtitle-skill/tree/HEAD/skills/auto-cantonese-subtitles

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Legenda em Cantonês Automotivo em Linha Única e Chinês Escrito Simplificado

Limites de Execução

  • O reconhecimento de fala e o processamento de mídia são feitos localmente, sem enviar áudio/vídeo para APIs de reconhecimento. Durante a preparação, é permitido baixar modelos e dependências públicas; durante o processamento offline, nenhum download automático ou uso de nuvem é realizado.
  • A calibração textual é feita pelo assistente atual. Quando o assistente usa um modelo online, o texto transcrito será enviado a esse modelo; portanto, o fluxo não pode ser descrito como totalmente offline. Se o usuário exigir que o texto também seja offline, deve-se usar um modelo de texto local; na falta deste, as limitações reais devem ser explicadas.
  • O resultado final é um arquivo UTF-8 .srt com exatamente uma linha de texto por legenda, acompanhado do eixo temporal correspondente à mídia original. Não deve ser substituído por texto puro.
  • Por padrão, não há pontuação de frase (vírgulas, pontos finais, etc.), mas os símbolos necessários para valores, unidades e nomes próprios são preservados, como 1.8米, 30%, -5℃, 0—100km/h, CX-5. Não se deve interpretar "sem pontuação" como deletar todos os caracteres não-Chineses.
  • A entrada, os resultados do reconhecimento original, os registros de calibração e a legenda final devem ser salvos separadamente, sem sobrescrever os arquivos originais.

Ambiente e Feedback de Tarefa

  • Primeiro mostre a lista, depois execute. Use as convenções de estado em references/task-progress.md; marque cada etapa como concluída após verificação. Atualize imediatamente ao entrar em uma etapa, concluir, falhar ou aguardar o usuário. Em tarefas longas, com oportunidades de execução, reporte aproximadamente a cada 60 segundos o passo atual, o tempo decorrido e o progresso recente; não invente porcentagens nem prometa notificações em segundo plano que o software não suporte.
  • Preparação e autoverificação unificadas. Na primeira preparação ou em caso de falha de ambiente, execute scripts/setup_runtime.py seguindo references/runtime-setup.md. Não monte comandos de instalação improvisados nem altere versões de dependências arbitrariamente. O script primeiro verifica apenas o registro local, o ambiente conhecido e o interpretador especificado pelo usuário; se válido, reutiliza, caso contrário, cria um ambiente dedicado passo a passo. Logs de instalação e progresso são salvos em disco. A decodificação de áudio, o carregamento de modelo e a inferência com amostras curtas são verificados separadamente. Para falhas de dependência, consulte references/environment-recovery.md. Não modifique o Python do sistema nem codifique caminhos do computador do desenvolvedor.
  • Para redes na China, verifique as fontes de download primeiro. Quando for realmente necessário instalar dependências, verifique primeiro a acessibilidade de mirrors HTTPS confiáveis nacionais e as versões necessárias; então, especifique temporariamente para o comando atual. Não modifique as configurações globais do pip. A notificação deve mostrar os nomes reais dos pacotes, as fontes e o progresso do download disponível; não diga apenas "PyTorch é grande, aguarde" nem calcule o volume de todas as dependências como se fosse o tamanho do PyTorch. Consulte as instruções de recuperação de ambiente para mais detalhes.
  • Primeiro tenha evidência, depois corrija o problema. Preserve erros completos e códigos de saída; distinga entre falhas de rede, construção/versão, permissão e bloqueios de segurança confirmados. Apenas com base em falha do pip, diretório temporário ou remoção de arquivo não se pode determinar um bloqueio de segurança. Não exija por padrão desabilitar proteções, permitir arquivos desconhecidos ou reiniciar. Quando for necessária ação do usuário, explique a evidência específica, a operação alvo, o impacto e como reverter.
  • Falhas podem ser retomadas. Ferramentas base, Whisper e Qwen são preparadas em etapas separadas, com logs salvos. Para o mesmo erro, após correção com base, repita no máximo uma vez automaticamente; se ainda falhar, pare essa etapa, reporte o ponto de interrupção e continue o trabalho que não depende dela. Quando o usuário disser "continuar", primeiro verifique os registros e tarefas em andamento, retome do ponto de interrupção ainda válido e não reinicie a instalação ou download.

Fluxo de Trabalho

  1. Determinar o formato do quadro final. Para vídeos, use scripts/subtitle_profile.py para detectar as dimensões de exibição, considerando rotação e proporção de pixels, ignorando imagens anexadas como capas de MP3. As dimensões de corte final têm prioridade sobre as do vídeo fonte; se o usuário especificar vertical, não se pode usar um preset horizontal baseado no arquivo fonte horizontal. Áudio não tem formato de quadro: use as configurações finais já fornecidas pelo usuário; se não souber, pergunte se é horizontal ou vertical, ou, se o usuário quiser, pode produzir ambas, sem chamar suposições de "detecção automática". Consulte references/subtitle-layout.md.
  2. Reconhecimento local e verificação cruzada. Verifique a integridade dos modelos; use Whisper large-v3 e Qwen3-ASR-1.7B, preservando o texto original e dados de tempo. A saída padrão do Qwen é usada para calibração cruzada; o alinhamento temporal se baseia no Whisper e no áudio original. Somente quando for necessário alinhamento extra e a verificação for aprovada é que se carrega o ForcedAligner opcional; não torne o modelo de alinhamento um download obrigatório para a execução básica. Compare os mesmos materiais com o mesmo contexto de fala de fundo. Execute amostras curtas em sequência; para amostras acima de 180 segundos, use scripts/transcribe_long.py para gerenciar janelas sobrepostas, nomes de arquivo únicos, deslocamentos de tempo e reutilização de resultados já processados, sem escrever loops de shell improvisados. O script apenas remove conservadoramente segmentos duplicados que correspondam tanto em tempo quanto em texto; as demais junções vão para revisão. A desduplicação semântica deve combinar os dois modelos e o áudio original; não se deve concatenar texto de janelas como resultado final. Consulte references/local-testing.md para instruções de execução. A primeira comparação usa a saída sem prompt como linha de base. Segmentos ausentes, repetições ou conteúdo suspeito adicional devem ser reexaminados com pequenos trechos do áudio original; não se pode confiar em apenas um modelo para determinar a correção.
  3. Primeiro calibre, depois segmente. O assistente atual, comparando os textos originais dos dois modelos, o contexto adjacente e materiais de terminologia local, seguindo references/editorial-rules.md, corrige nomes próprios e candidatos homofônicos, e gera um rascunho de trabalho em chinês escrito simplificado com pontuação preservada. Condições, negações, números, suposições e pontos de vista devem ser mantidos. Inferências de linguagem geram apenas candidatos, não equivalem a audição ou verificação externa.
  4. Dividir em unidades semânticas de linha única de acordo com o formato do quadro. Não é mais necessário que uma frase inteira ocupe uma única legenda. É permitido reescrever frases longas em frases curtas, naturais e semanticamente contínuas, cada uma expressando uma ideia clara. Não se deve cortar por número fixo de caracteres, nem separar marcas/modelos, nomes, termos fixos, números e unidades, nem produzir conectores isolados ou estruturas sujeito-predicado/verbo-objeto incompletas. Tente ajustar-se ao comprimento sugerido pelo formato do quadro; respostas curtas não devem ser preenchidas com conteúdo. Não se deve perder condições, números ou mudar pontos de vista para encurtar. Se o limite máximo de comprimento for excedido, reescreva ou divida novamente; não quebre linhas nem trunque.
  5. Tratar falas de múltiplas pessoas separadamente. Não combine perguntas e respostas de pessoas diferentes em uma única frase ou linha; não use duas linhas de diálogo na mesma tela para evitar legendas curtas. Respostas curtas devem usar os intervalos reais de fala; pode-se estender ligeiramente a exibição em pausas de silêncio, mas não ultrapassar a fala seguinte. Sem separação de falantes, não invente identidades com base no texto. Rodadas pouco claras ou vozes sobrepostas entram em revisão; não se garante que a questão de confusão de falantes foi resolvida.
  6. Casamento temporal por unidade semântica. Use os pontos inicial e final das palavras/segmentos originais correspondentes, preservando o mapeamento da fonte e o deslocamento da mídia. Novas frases curtas criadas devem ser reposicionadas no som; não divida o tempo de uma frase longa antiga igualmente pelo número de caracteres. Use apenas a transcrição original em cantonês para alinhamento forçado; não use texto em mandarim reescrito para alinhar a pronúncia em cantonês. Se o alinhamento falhar, reescute/realinhe; não invente tempos precisos.
  7. Limpeza final da pontuação e exportação. Após determinar as quebras de linha e os tempos, o exportador limpa a pontuação de frase, mescla espaços extras e converte para simplificado, protegendo símbolos necessários. Depois da limpeza, verifique novamente a linha única, largura, velocidade, sobreposição e ultrapassagem de quadro. O JSON da legenda deve conter media_duration, subtitle_profile, cues, e opcionalmente protected_terms; o esquema e chamada estão nas instruções de formato. O scripts/export_srt.py rejeita exportação se encontrar quebras de linha, largura excessiva ou resíduos óbvios de cantonês; é necessário corrigir a semântica/tempo e tentar novamente, sem contornar a verificação.
  8. Pré-visualização e aceitação. Ao configurar fonte, tamanho e zona de segurança do quadro final, meça a largura da fonte primeiro; ao usar apenas largura de caracteres chineses, indique claramente a limitação. SRT não pode carregar de forma confiável informações de quadro ou estilo; softwares de edição podem quebrar linhas automaticamente; é necessário combinar com a mesma predefinição de legenda e visualizar no formato final. Somente com reprodução/audição real é que se pode relatar verificação de sincronia; somente verificação estrutural não pode ser considerada precisa ou sincronizada.

Entrega

  • <nome_do_material>_horizontal.srt / <nome_do_material>_vertical.srt; para nomes próprios, conteúdo, rodadas ou dúvidas de tempo não resolvidos, use .review.srt para identificar como rascunho em revisão.
  • A lista de dúvidas deve registrar separadamente a posição temporal, reconhecimento original, candidatos, fundamentação e motivo da não resolução; não coloque explicações no corpo da legenda publicada.
  • Registre a origem da predefinição do quadro final: detecção real, especificação do usuário ou apenas opção de formato; não se pode igualar o tamanho do vídeo original ao tamanho do quadro final.
  • Mantenha os resultados originais de cada modelo e os registros de calibração integrados, distinguindo entre problemas de reconhecimento, reescrita, segmentação e eixo temporal. Não trate o rascunho de calibração integrado como a precisão independente de um único modelo; não forneça taxas de precisão sem um rascunho de referência humana.

Habilidades Relacionadas