Communitygithub.com

0xsline/openchatcut

Conversão de texto em fala (TTS), narração, sincronização/posicionamento de voiceover e gerador de efeitos sonoros (SFX) personalizados. Use quando o usuário deseja fala gerada a partir de texto, adicionar/substituir/alinhar narração ou voiceover para um vídeo/linha do tempo existente, manter o voiceover sincronizado após edições de retiming visual, precisa de audição/seleção de vozes ou explicitamente deseja um efeito sonoro novo/personalizado que não está disponível na biblioteca de efeitos sonoros.

O que é openchatcut?

Esta skill é um gerador versátil de voz (TTS) e efeitos sonoros para ferramentas de IA agentiva como Claude Code, Cursor ou Codex. Ela permite criar narrações e voiceovers a partir de texto, sincronizá-los com cronogramas de vídeo existentes e gerar efeitos sonoros personalizados quando a biblioteca integrada não atende à necessidade. A skill suporta múltiplos provedores de TTS, como Doubao, ElevenLabs, MiniMax, OpenAI, Gemini, Mistral, Cartesia, e outros, cada um com seus próprios controles e vozes curadas. Para TTS, o fluxo de trabalho envolve a escolha de um provedor e ID de voz concretos, podendo usar audição antes da geração com amostras reais. Para efeitos sonoros, a skill recomenda primeiro consultar a biblioteca integrada e só gerar sons personalizados quando não houver correspondência adequada. A skill também inclui lógica sofisticada para manter a narração sincronizada com as imagens após edições de tempo, por meio de ferramentas de linha do tempo. Ela utiliza chamadas de função MCP como `submit_voice`, `ask_followup_questions`, `browse_library`, `edit_item` e `submit_sound` para realizar suas tarefas.

Funciona com~Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/0xsline/openchatcut/tree/HEAD/src/agent/skills/voice

Perguntar na sua IA favorita

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

Documentação

Gerador de Voz e Efeitos Sonoros

Gera voiceovers (TTS) e efeitos sonoros. Para TTS, escolha um provedor concreto e uma voz antes de chamar submit_voice.

Quando Usar

  • Gerar voiceover/narração a partir de texto
  • Criar áudio de texto para fala para vídeos
  • Adicionar, substituir ou refazer narração/voiceover para um vídeo, linha do tempo, gravação de tela, animação de slides, demonstração de produto, edição B-roll, explicador de MG ou outra sequência visual existente
  • Manter a narração/voiceover existente alinhada após cortar, acelerar, desacelerar, mover, reordenar ou substituir os visuais que ela descreve
  • Oferecer e permitir a audição de opções de voz TTS quando o usuário não escolheu uma voz concreta
  • Gerar efeitos sonoros personalizados a partir de descrições de texto somente após verificar a biblioteca de Efeitos Sonoros primeiro

TTS (Texto para Fala)

Se a solicitação atual tem um alvo visual existente e o usuário deseja narração, voiceover, dublagem ou fala de substituição para esse alvo, leia references/video-sync.md antes de redigir uma nova narração, usar texto de narração existente para gerar TTS ou posicionar áudio. Faça isso mesmo quando o usuário não disse explicitamente "sincronizar" ou "combinar com os visuais"; a existência de um alvo visual significa que o tempo e o significado da narração podem precisar seguir o conteúdo na tela. Use o caminho TTS autônomo normal apenas quando não houver um alvo visual ou o usuário apenas quiser um ativo de áudio a partir de texto.

Leia também references/video-sync.md quando a linha do tempo já tiver narração/voiceover e o usuário pedir para alterar os visuais enquanto mantém esse voiceover alinhado. Esta é uma tarefa de manutenção de sincronia, mesmo que nenhum novo TTS seja necessário.

Use submit_voice para criar um ativo de áudio TTS. O contrato atual da ferramenta MCP é:

  • provider é obrigatório. As opções configuradas podem ser doubao, elevenlabs, minimax, inworld, fishaudio, speechify, openai, gemini, mistral ou cartesia. Todos os provedores são opt-in; use apenas provedores mostrados como configurados no prompt de capacidades.
  • voiceId é obrigatório, concreto e específico do provedor. A única exceção é a mistura deliberada de timbreWeights do MiniMax, onde voiceId deve estar vazio. Não misture catálogos.
  • O catálogo curado em references/voices.md cobre apenas Doubao, ElevenLabs e MiniMax. Outros provedores não têm preset incluído ou catálogo de amostras no OpenChatCut. Exija um ID de voz concreto do usuário ou da conta do provedor; nunca invente um preset ou URL /voice-samples/....
  • Campos com suporte a SDK de IA são específicos do provedor: OpenAI suporta modelId, speed, outputFormat e instructions; Gemini suporta modelId, outputFormat e instructions; Mistral suporta modelId e outputFormat; Cartesia suporta modelId, speed, languageCode e outputFormat. Omita campos não suportados ou não solicitados.
  • Inworld, Fish Audio e Speechify aceitam apenas voiceId mais modelId opcional. Não passe controles expressivos, de velocidade, idioma ou saída para esses provedores.
  • submit_voice cria apenas um ativo de áudio. Posicionamento na linha do tempo, substituição, corte e alinhamento acontecem depois com ferramentas de linha do tempo.
  • Para narrações longas, várias chamadas submit_voice podem ser úteis: divida em pausas naturais, grupos de frases ou limites de batida de roteiro quando o fluxo de trabalho se beneficiar de clipes de voz com tempo ou posicionamento separados.
  • Doubao suporta speedRatio, loudnessRatio, pitch, emotion, emotionScale, performancePrompt e explicitDialect, mas nem toda voz suporta todos os controles expressivos. Verifique references/voices.md antes de usá-los.
  • ElevenLabs retém suas configurações oficiais de voz, idioma, semente, saída, normalização, dicionário de pronúncia, continuidade, registro e latência controles. MiniMax retém seus controles dedicados documentados em references/minimax-tts.md.

Suporte a controle Doubao para vozes curadas atuais:

  • vivi, xiaohe, yunzhou, xiaotian, naiqimengwa, yingtaowanzi, wenroumama, zhixingnv, dayi, jitangnv, liuchang, ruyayichen, morgan, qingcang, huiben, popo, yuanboxiaoshu, baqiqingshu e tangseng suportam emotion / emotionScale explícito, performancePrompt e direções de prompt estilo ASMR.
  • shuanglangshaonian suporta performancePrompt e seguimento de instrução estilo COT/QA, mas não suporta emotion / emotionScale explícito ou controle estilo ASMR.
  • explicitDialect é suportado apenas por vivi e pode ser dongbei, shaanxi ou sichuan.

Suporte a controle ElevenLabs para vozes curadas atuais:

  • amelia, brittney, hope, jessica, arabella, jane, maria, mark, frederick, peter, james, jon, sully, david e alex todos suportam os mesmos controles de nível de solicitação; suporte específico de modelo ainda é validado pelo ElevenLabs.
  • Esses controles não são garantias por voz de um estilo de atuação específico. Use as tags/amostras predefinidas para escolher uma voz naturalmente adequada e, em seguida, use os controles para mudanças de entrega moderadas.
  • Para o ElevenLabs eleven_v3, tags de áudio inline estão disponíveis quando o usuário pede entrega expressiva, como emoção, tom, dicas não verbais, sotaque ou ritmo local. Exemplos oficiais se encaixam nestas categorias úteis de TTS: tags de emoção/tom como [happy], [sad], [angry], [excited], [curious], [sarcastic], [crying], [annoyed], [appalled], [thoughtful], [surprised] e [mischievously]; tags de entrega vocal e dica não verbal como [whispers], [laughs], [sighs], [exhales], [inhales deeply], [clears throat], [snorts], [swallows], [wheezing] e [coughs]; tags de ritmo/pausa/velocidade local como [slowly], [pause], [short pause], [long pause], [rushed] e [drawn out]; e tags de sotaque/performance especial como [strong X accent], por exemplo [strong French accent], além de [sings], [singing], [woo] e [pirate voice]. Exemplos oficiais são não exaustivos; tags auditivas semelhantes podem ser tentadas quando o usuário explicitamente pedir essa entrega e a tag descrever como a voz deve soar, não uma ação visual. Escreva tags diretamente em text, perto da frase curta que devem afetar. Trate as tags como orientação local, não controles em todo o parágrafo.
  • Para pausas e ritmo em eleven_v3, use pontuação, estrutura de texto, segmentos gerados mais curtos ou tags de áudio locais como [short pause] e [slowly] quando necessário.
// Inglês / multilíngue via ElevenLabs
submit_voice({
  provider: "elevenlabs",
  text: "Hello world",
  voiceId: "peter",
});

// Chinês via Doubao
submit_voice({
  provider: "doubao",
  text: "你好世界",
  voiceId: "liuchang",
});

// Com ajuste de velocidade (apenas Doubao)
submit_voice({
  provider: "doubao",
  text: "这是一段稍快的中文旁白。",
  voiceId: "liuchang",
  speedRatio: 1.5,
});

// Com controles expressivos Doubao
submit_voice({
  provider: "doubao",
  text: "这次事故提醒我们,安全永远不能侥幸。",
  voiceId: "liuchang",
  emotion: "sad",
  emotionScale: 3,
  performancePrompt: "痛心但克制,语速稍慢,像新闻专题旁白",
  pitch: -1,
  speedRatio: 0.92,
});

// Com controles de entrega ElevenLabs
submit_voice({
  provider: "elevenlabs",
  text: "The launch changed how teams plan their daily work.",
  voiceId: "peter",
  speed: 0.95,
  stability: 0.4,
  similarityBoost: 0.8,
  outputFormat: "wav_44100",
});

// MiniMax TTS (quando configurado) — veja references/minimax-tts.md
submit_voice({
  provider: "minimax",
  text: "欢迎使用视频编辑助手。",
  voiceId: "female-yujie",
  speed: 1,
  name: "VO · welcome",
});

// Cartesia forma após o usuário confirmar o ID de voz exato da conta.
// confirmedCartesiaVoiceId representa esse valor fornecido, não um preset.
submit_voice({
  provider: "cartesia",
  text: "A concise product introduction.",
  voiceId: confirmedCartesiaVoiceId,
  modelId: "sonic-3",
  speed: 1,
  languageCode: "en",
  outputFormat: "mp3",
});

Audição de Voz Antes da Geração

Quando o usuário precisa de TTS e ainda não escolheu uma voz concreta, primeiro separe provedores com opções curadas do OpenChatCut daqueles provedores que exigem um ID de voz específico da conta.

Para Doubao, ElevenLabs ou MiniMax, leia references/voices.md antes de recomendar, renderizar ou enviar uma opção. Use-o como a única fonte para IDs de preset curados, escolha do provedor, rótulos de exibição, tags e URLs de amostras incluídas. Não crie opções de voz a partir de memória, nomes traduzidos ou descrições amplas do usuário.

Para Inworld, Fish Audio, Speechify, OpenAI, Gemini, Mistral ou Cartesia, não ofereça uma lista de audição inventada ou URL de amostra. Peça ao usuário o ID de voz concreto desse provedor configurado. Uma descrição ampla como "feminino quente" não é um voiceId válido.

Primeiro, determine dois idiomas separados:

  • Idioma da conversa do usuário: o idioma que o usuário usou para falar com você. Use isso para a resposta circundante, form-visual label, visual-option name e summary.
  • Idioma alvo da narração: o idioma do texto que está sendo sintetizado. Use isso apenas para escolher o provedor e o catálogo de vozes.

O botão de envio do widget de audição é fixo no rótulo padrão desta compilação (submitLabel é aceito, mas não renderizado); mantenha o rótulo da pergunta e os rótulos das opções no idioma da conversa do usuário, não no idioma alvo da narração. Por exemplo: Usuários de inglês veem submit_label="Submit", usuários de chinês veem submit_label="提交" e usuários de espanhol veem submit_label="Enviar".

"me ajude a gerar ... voice over em chinês" é uma conversa em inglês pedindo narração em chinês, então a cópia do widget de audição permanece em inglês enquanto os candidatos a voz vêm do Doubao.

Para um provedor curado:

  1. Filtre references/voices.md pelo idioma alvo da narração / provedor e requisitos explícitos como gênero, faixa etária, tom e caso de uso.
  2. Se nenhum preset corresponder a todos os requisitos explícitos, diga que não há correspondência exata e ofereça os presets suportados mais próximos com uma ressalva clara.
  3. Escolha de 2 a 4 presets curados correspondentes.
  4. Carregue widget-forms, depois chame ask_followup_questions com opções de voz e amostras de áudio reais incluídas.
  5. Aguarde a escolha do usuário.
  6. Chame submit_voice com o ID do preset selecionado como voiceId.

Para um provedor sem catálogo curado do OpenChatCut, peça um ID de voz do provedor concreto em texto livre. Não adicione media ou sintetize um caminho /voice-samples/.... Aguarde o usuário fornecer/confirmar o ID exato antes de chamar submit_voice.

Para cada opção de audição curada, mantenha value, rótulo de exibição, media e summary vinculados à mesma linha de preset de references/voices.md. Use apenas as URLs de amostra registradas lá. Mantenha value como o ID do preset e media como sua URL de amostra correspondente. Escreva name e summary no idioma de conversa do usuário. O idioma alvo da narração apenas decide o catálogo de provedor/voz. Após o envio, mapeie o nome de exibição de volta ao ID do preset da mesma lista de candidatos.

Solicitação em inglês para narração em chinês:

<widget submit_label="Submit">
  <form-visual
    id="voiceId"
    label="For Chinese voiceover, I recommend a few voices to try:"
    required="true"
  >
    <visual-option
      value="vivi"
      name="Vivi"
      media="/voice-samples/doubao-vivi.mp3"
      aspect-ratio="16:5"
      summary="Female / young / friendly, general"
    />
    <visual-option
      value="xiaohe"
      name="Xiaohe"
      media="/voice-samples/doubao-xiaohe.mp3"
      aspect-ratio="16:5"
      summary="Female / young / soft, clear"
    />
    <visual-option
      value="yunzhou"
      name="Yunzhou"
      media="/voice-samples/doubao-yunzhou.mp3"
      aspect-ratio="16:5"
      summary="Male / young / neutral, business"
    />
  </form-visual>
</widget>

Solicitação em chinês para narração em chinês:

<widget submit_label="提交">
  <form-visual
    id="voiceId"
    label="我推荐这几个中文旁白音色,先试听一下:"
    required="true"
  >
    <visual-option
      value="morgan"
      name="Morgan"
      media="/voice-samples/doubao-morgan.mp3"
      aspect-ratio="16:5"
      summary="男 / 中年 / 低沉知识解说"
    />
    <visual-option
      value="zhixingnv"
      name="知性女声"
      media="/voice-samples/doubao-zhixingnv.mp3"
      aspect-ratio="16:5"
      summary="女 / 中年 / 冷静知识讲解"
    />
    <visual-option
      value="vivi"
      name="Vivi"
      media="/voice-samples/doubao-vivi.mp3"
      aspect-ratio="16:5"
      summary="女 / 年轻 / 亲切通用口播"
    />
  </form-visual>
</widget>

Efeitos Sonoros

Para efeitos sonoros (SFX) de edição comuns, não gere primeiro. Use a biblioteca de Efeitos Sonoros integrada antes de gerar:

  1. Chame browse_library com category:"sound-effects" e uma consulta como "whoosh", "camera shutter", "notification", "censor beep" ou "record scratch".
  2. Inspecione o library:sound:<id> retornado.
  3. Posicione-o com edit_item, usando fromFrame como o quadro de âncora/momento editorial do som:
browse_library({
  category: "sound-effects",
  query: "short whoosh transition",
});

edit_item({
  adds: [
    {
      type: "audio",
      assetId: "library:sound:whoosh-short",
      fromFrame: 120,
      trackId: "A1",
    },
  ],
});

Gere efeitos sonoros a partir de descrições de texto com submit_sound apenas quando:

  • O usuário explicitamente pedir um som gerado/original/personalizado.
  • O som solicitado for muito específico para a biblioteca de Efeitos Sonoros existente.
  • browse_library({ category:"sound-effects", query }) não retornar nenhuma correspondência adequada.
// Efeito sonoro personalizado/gerado após a biblioteca não ter correspondência adequada
submit_sound({ prompt: "A dog barking in the distance" });

// Com duração personalizada (0,5-22 segundos)
submit_sound({
  prompt: "Thunder and heavy rain",
  durationSeconds: 15,
});

// Alta aderência ao prompt
submit_sound({
  prompt: "Sci-fi laser gun firing",
  promptInfluence: 0.8,
});

Dicas para melhores resultados:

  • Seja específico: "Um cachorro latindo alto" em vez de apenas "latido de cachorro".
  • Considere a duração: sons mais curtos geralmente são mais nítidos.
  • Camadas de sons podem ser combinadas para obter paisagens sonoras complexas.

Manutenção de Narração Sincronizada

Ao retirar (aparar, acelerar, desacelerar, mover, reordenar ou substituir) visuais que têm uma narração correspondente existente:

  1. Leia references/video-sync.md para orientação sobre sincronização de linha do tempo.
  2. Use ferramentas de edição de linha do tempo para ajustar o segmento de áudio existente para corresponder aos visuais alterados.
  3. Se a narração existente não puder ser ajustada para se adequar aos novos visuais, considere gerar um novo TTS com texto revisado.
  4. Use várias chamadas submit_voice para segmentos mais longos para melhor alinhamento e flexibilidade de posicionamento.

Provedores e Configuração

A skill suporta vários provedores TTS, cada um com configuração diferente:

  • Provedores Curados (com presets incluídos): Doubao, ElevenLabs, MiniMax - têm vozes predefinidas e amostras em references/voices.md
  • Provedores sob Demanda (exigem ID de voz da conta): Inworld, Fish Audio, Speechify, OpenAI, Gemini, Mistral, Cartesia - exigem IDs de voz específicos do usuário

Consulte sempre a documentação do provedor e as referências da skill para obter os IDs de voz corretos, opções de suporte e parâmetros.

Individual skills in this repo

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

0xsline/openchatcut

Connect an MCP-capable coding agent to OpenChatCut and edit local video projects. Use when the user asks to install, connect, or set up OpenChatCut; inspect or edit an OpenChatCut project; work with its timeline, transcript, captions, media, generation, motion graphics, audio, color, or export tools; or recover from an OpenChatCut MCP error.

0xsline/openchatcut

Use when acquiring or importing media into a OpenChatCut project asset library for video editing or creation, including local/attached videos, user-provided paths, public media URLs, web video/audio/image assets, upload fallback decisions, and deciding between import_media, download_media, or manual user action.

0xsline/openchatcut

Use when a OpenChatCut video editing or creation workflow needs export, render, download, share, final delivery, subtitle-file export, render choice, local-only asset handling, or export fallback explanation.

0xsline/openchatcut

AI image generation via Fal.ai, gpt-image-2, nano-banana, MiniMax image-01, and xAI Grok Imagine. Use when the user wants to generate or create an image / picture / still.

0xsline/openchatcut

Use when a OpenChatCut tool call fails or returns an unexpected shape.

0xsline/openchatcut

Music generation via Mureka, MiniMax, Atlas Cloud, and Sonilo. Use for instrumentals, songs, soundtracks, track/stem generation, covers, or video-conditioned scoring of the finished cut through `submit_music`.

0xsline/openchatcut

OpenChatCut product knowledge — UI layout, editor features, and how generation providers are configured. Use when the user asks about the product interface, how to use a feature, where to find something, or needs GUI guidance for something the agent cannot do directly. Also use as fallback when a task fails and the user needs to complete it manually in the UI. NOT for live project-state queries ("where are my folders?", "what's on my timeline?", "where is clip X?") — those are answered by `read_project`, not by this skill.

0xsline/openchatcut

AI shader generator for WebGL video effects, transitions, masks, and color grading (LUT / 调色 / 电影感 / film look). Use when the user wants a video effect (滤镜 / 特效), a transition (转场 / crossfade / wipe / cube / 3d), a mask (蒙版 / 遮罩 / reveal), a zoom / push-in (推近 / 推镜头), or a color grade — try the built-in effects (zoom, builtin LUTs) before generating a new shader.

0xsline/openchatcut

Use when checking whether agent edits are reflected in the OpenChatCut project and editor.

0xsline/openchatcut

AI video generation via Fal.ai, Seedance 2.0, Kling, MiniMax Hailuo, xAI Grok Imagine, and OFox. Use when the user wants to generate a video clip — text-to-video, image-to-video, first/last-frame transitions, reference-guided generation, multi-shot, or generatively editing / extending an existing clip.

0xsline/openchatcut

Use when the agent should ask the user for structured input with an in-chat form, including single-select, multi-select, text fields, style pickers, or voice audition choices.

Habilidades Relacionadas