Communitygithub.com

NoizAI/skills

Use esta habilidade quando o usuário quiser gerar uma música com vocais a partir de uma descrição em texto e/ou letra, ou fazer um cover de uma música existente em um novo estilo. Os gatilhos incluem: qualquer menção a 'criar uma música', 'gerar música', 'texto para música', 'compor', 'escrever e cantar uma música', 'jingle', 'tema musical', 'música de aniversário', 'música com letra', 'cover', 'versão cover', 'refazer esta música como jazz', 'cantar esta música em outro estilo', ou pedidos como 'transforme estas letras em música' ou 'faça uma faixa lo-fi sobre café'. Use também quando o usuário fornecer letras e quiser que sejam cantadas, quiser uma música modelada a partir de uma faixa de referência, quiser novas letras cantadas sobre uma melodia existente, ou quiser extrair letras de uma música para fazer um cover. NÃO use para efeitos sonoros curtos (use sound-fx), fala/locução (use tts) ou faixas puramente instrumentais (não suportado).

O que é skills?

Este skill do NoizAI permite que desenvolvedores e agentes de IA criem músicas completas com vocais a partir de descrições textuais, gerando duas variantes MP3 por solicitação. Ele suporta duas operações principais: 'Generate', que cria uma nova música com base em uma descrição musical e letras (podendo ser escritas pelo servidor ou fornecidas pelo usuário), e 'Cover', que recanta uma música existente em um novo estilo, mantendo sua melodia original ou permitindo novas letras. É útil para campanhas publicitárias, prototipagem musical, personalização de conteúdo e experimentação criativa, operando exclusivamente via linha de comando com Python. A ferramenta aceita argumentos como prompt musical, tags de estilo, duração alvo, gênero vocal e timbre, além de permitir referência a uma faixa de áudio para modelagem. Os custos são baseados em créditos por job (cerca de 15 créditos por segundo de áudio), com limite de 5 submissões por minuto. A configuração requer uma chave de API do desenvolvedor noiz.ai, e o script gerencia todo o fluxo de submissão, polling de status e download dos resultados.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/NoizAI/skills/tree/HEAD/skills/text-to-music

Perguntar na sua IA favorita

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

Documentação

texto-para-música

Duas formas de criar uma música com vocais + acompanhamento, salva como MP3. Cada solicitação produz duas variantes.

  • Gerar — uma nova música a partir de uma descrição musical mais letra.
  • Cover — recantar uma música existente em um novo estilo, mantendo sua melodia. A letra pode ser a original (reconhecida automaticamente) ou nova.

Gatilhos

  • criar uma música / gerar música / texto para música / compor
  • transforme estas letras em música / cantar isto / jingle / tema musical / música de aniversário
  • fazer um cover desta música / fazer uma versão jazz / refazer em outro estilo
  • 写歌 / 生成音乐 / 作曲 / 唱首歌 / 歌词谱曲 / 翻唱 / 改编 / 换个风格唱

Gerar — nova música a partir de texto

Uma solicitação precisa de um prompt (a descrição musical) e exatamente uma fonte de letra:

# Deixe o servidor escrever a letra a partir de um tema
python3 skills/text-to-music/scripts/t2m.py "indie pop animado, guitarras brilhantes, 120 BPM" \
  --lyrics-prompt "uma música sobre viagens de verão com amigos"

# Use sua própria letra (inline ou de um arquivo)
python3 skills/text-to-music/scripts/t2m.py "balada mandopop, piano e cordas" \
  --lyrics $'[Verso]\nA chuva lá fora parou\n[Refrão]\nEu ainda estou esperando por você' --vocal-gender Female --title "A chuva parou"
python3 skills/text-to-music/scripts/t2m.py "lo-fi hip hop, suave, estalo de vinil" \
  --lyrics-file song.txt --duration 120 -o chill.mp3

# Modele o vocal/estilo a partir de uma música de referência (arquivo local ≤20 MB ou URL pública)
python3 skills/text-to-music/scripts/t2m.py "synth-pop sonhador" --lyrics-file song.txt --ref-audio ./ref.mp3

Saída: song_v1.mp3 e song_v2.mp3 (ou <prefixo>_v1.mp3 / <prefixo>_v2.mp3 com -o). Quando a letra foi escrita pelo servidor, ela também é salva em <prefixo>_lyrics.txt.

ArgumentoPadrãoDescrição
promptobrigatórioDescrição musical: gênero, clima, instrumentos, andamento (≤1500 caracteres)
--lyrics / -l—Texto da letra; marcadores [Verso], [Refrão], [Ponte] ajudam na estruturação
--lyrics-file—Arquivo .txt UTF-8 com a letra (≤64 KB)
--lyrics-prompt—Tema para escrita da letra pelo servidor
--tags—Tags de estilo, separadas por vírgula (≤50 caracteres)
--negative-tags—Estilos a evitar
--duration / -dautoSugestão de duração alvo: 60, 120 ou 180 segundos. Uma sugestão, não uma garantia.
--ref-audio—Música de referência, caminho local ou URL pública

--lyrics, --lyrics-file e --lyrics-prompt são mutuamente exclusivos; um é obrigatório.

Cover — recantar uma música existente

Requer a música fonte, a letra, e uma descrição do novo som (--style e/ou --prompt):

# Mesma letra, novo estilo: reconhece a letra da original e depois faz o cover
python3 skills/text-to-music/scripts/t2m.py cover original.mp3 \
  --style "jazz, vocal feminino defumado" --recognize-lyrics -o jazz_cover.mp3

# Nova letra sobre a melodia original, arranjo mais livre
python3 skills/text-to-music/scripts/t2m.py cover https://exemplo.com/musica.mp3 \
  --prompt "folk acústico, viola dedilhada, intimista" --lyrics-file nova_letra.txt \
  --adherence main_melody --vocal-gender Male

# Apenas reconhecer a letra (para revisar ou editar antes do cover)
python3 skills/text-to-music/scripts/t2m.py lyrics original.mp3 -o letra.txt

Fluxo recomendado quando o usuário quer ajustar a letra: execute lyrics → edite o arquivo → cover --lyrics-file.

ArgumentoPadrãoDescrição
sourceobrigatórioMúsica original: arquivo local (≤100 MB; mp3/wav/m4a/aac/flac/ogg) ou URL pública
--style / -s—Tags curtas de estilo, ex.: "rock, vocal masculino" (≤50 caracteres)
--prompt / -p—Descrição mais longa do som do cover (≤1500 caracteres)
--adherencehighhigh = seguir o arranjo original de perto; main_melody = manter apenas a melodia principal, mais liberdade
--lyrics / -l—Letra a ser cantada
--lyrics-file—Arquivo .txt UTF-8 com a letra (≤64 KB)
--recognize-lyricsdesligadoTranscrever a letra da fonte primeiro e usá-la
--output / -ocover.mp3Caminho de saída; as variantes recebem os sufixos _v1 / _v2

Pelo menos um de --style / --prompt é obrigatório; exatamente uma fonte de letra é obrigatória.

Argumentos Compartilhados

ArgumentoPadrãoDescrição
--title—Título da música (≤80 caracteres)
--vocal-gender—Male ou Female
--vocal-timbre—Descrição livre da voz, ex.: "contralto quente e encorpado" (≤50 caracteres)
--output / -osong.mp3 (cover.mp3 para covers)Caminho de saída; as variantes recebem os sufixos _v1 / _v2
--no-waitdesligadoEnviar, imprimir o(s) ID(s) do job e sair
--poll-interval10Segundos entre verificações de status
--timeout1800Máximo de segundos para aguardar (o job continua rodando no servidor)
--api-keyde env/configChave da API Noiz (substitui a chave armazenada)

Retomando / Verificando Jobs

A geração imprime dois gen_product_ids; um cover imprime um task_id. Se o tempo limite expirar ou você usou --no-wait, retome com:

python3 skills/text-to-music/scripts/t2m.py status <id_v1> <id_v2> -o song.mp3
python3 skills/text-to-music/scripts/t2m.py status --cover <task_id> -o cover.mp3
python3 skills/text-to-music/scripts/t2m.py status --cover <task_id> --no-wait   # apenas imprime o status

O status passa por submitted → running → succeeded / failed. Covers também relatam um stage (a análise ocorre antes do canto, então covers demoram mais). URLs de download expiram após ~24h; execute status novamente para obter novas.

Escrevendo Bons Prompts

  • Prompt / estilo = o som: gênero + clima + instrumentação + andamento. "pop orquestral cinematográfico, cordas crescentes, 90 BPM, esperançoso".
  • Letra: mantenha as seções curtas e rotuladas. Letras em chinês, inglês e misturadas funcionam.
  • Músicas curtas: para jingles ou saudações, use -d 60 e escreva apenas um verso + refrão.
  • Covers: escolha high para manter o cover reconhecível; escolha main_melody para uma mudança maior de gênero.
  • Não satisfeito? Execute novamente — cada execução dá duas novas variantes.

Custo

  • Músicas e covers são cobrados uma vez por job (não por variante): ceil(segundos da variante mais longa) × 15 créditos, cobrados após ambas as variantes terem sucesso. Uma música de 2 minutos custa cerca de 1.800 créditos. Se os créditos da assinatura não cobrirem o job inteiro, ele é cobrado como pay-as-you-go a $0,00015/s. O script imprime o valor cobrado ao finalizar.
  • Reconhecimento de letra (lyrics / --recognize-lyrics): 100 créditos (ou $0,001 pay-as-you-go), cobrado apenas quando vocais são detectados.

Limite de taxa: 5 submissões por minuto por chave por endpoint; polling de status 60 por minuto.

Limitações

  • Música puramente instrumental não é suportada — letras são sempre obrigatórias.
  • --duration é apenas uma sugestão; a duração real pode diferir. Covers seguem a duração da fonte.
  • Prompts ou letras contendo conteúdo sensível são rejeitados (code=400).

Configuração

python3 skills/text-to-music/scripts/t2m.py config --set-api-key SUA_CHAVE
# ou
export NOIZ_API_KEY=SUA_CHAVE

Obtenha sua chave de API em developers.noiz.ai.

Requisitos

  • Python 3.6+
  • Pacote requests: uv pip install requests
  • Chave de API Noiz de developers.noiz.ai

Segurança e Divulgação de Dados

  • Chave de API: Armazenada em ~/.config/noiz/api_key (permissões 0600) ou via variável de ambiente NOIZ_API_KEY.
  • Rede: Prompts, letras e qualquer áudio de referência/fonte (upload de arquivo ou URL) são enviados para https://noiz.ai/v1/text-to-music e https://noiz.ai/v1/text-to-music/cover*; o status do job é consultado nos mesmos endpoints. Nenhum outro dado é transmitido.
  • Saída: Os MP3s gerados (e arquivos de texto de letra) são baixados de URLs assinadas do armazenamento Noiz e salvos no caminho de saída. Nenhum outro arquivo é modificado.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Habilidades Relacionadas