Communitygithub.com

NoizAI/skills

텍스트 설명과 가사로 노래를 생성하거나, 기존 노래를 새로운 스타일로 커버하는 AI 기술입니다.

skills란 무엇인가요?

이 스킬은 NoizAI의 text-to-music API를 활용하여 사용자가 텍스트 프롬프트와 가사로 보컬과 반주가 포함된 완전한 노래를 생성하거나, 기존 오디오 파일의 멜로디를 유지하면서 새로운 스타일로 커버할 수 있게 해줍니다. 'Generate' 모드는 장르, 분위기, 악기, 템포를 설명하는 프롬프트와 함께 가사를 직접 제공하거나 AI가 주제에 맞게 작성하도록 할 수 있습니다. 'Cover' 모드는 원본 곡의 음원을 입력하고 새로운 스타일(예: 재즈, 어쿠스틱)을 지정하여 같은 멜로디를 새로운 편곡으로 재창조합니다. 각 요청은 두 개의 변형(MP3)을 생성하며, 생성형 AI가 작성한 가사는 별도 텍스트 파일로 저장됩니다. 이 스킬은 Claude Code, Cursor, Codex 등 명령줄 도구를 지원하는 AI 에이전트와 함께 사용하도록 설계되었으며, API 키를 설정하고 Python 스크립트를 실행하기만 하면 됩니다. 단, 순수 악기 연주곡은 지원하지 않으며 항상 가사가 필요합니다.

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

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

텍스트-음악 변환

보컬과 반주가 포함된 노래를 MP3 파일로 만드는 두 가지 방법. 모든 요청은 두 개의 변형을 생성합니다.

  • 생성 — 음악 설명과 가사로 새로운 노래를 만듭니다.
  • 커버 — 기존 노래의 멜로디는 유지하고 새로운 스타일로 다시 부릅니다. 가사는 원본(자동 인식) 또는 새 가사를 사용할 수 있습니다.

트리거

  • 노래 만들어 줘 / 음악 생성 / 텍스트를 음악으로 / 작곡
  • 이 가사로 노래 만들어 줘 / 이걸 불러 줘 / 징글 / 테마송 / 생일 축하 노래
  • 이 노래 커버해 줘 / 재즈 버전으로 만들어 줘 / 다른 스타일로 다시 만들어 줘
  • 写歌 / 生成音乐 / 作曲 / 唱首歌 / 歌词谱曲 / 翻唱 / 改编 / 换个风格唱

생성 — 텍스트로 새 노래 만들기

요청에는 프롬프트(음악 설명)와 정확히 하나의 가사 출처가 필요합니다:

# 서버가 주제로 가사를 작성하도록 함
python3 skills/text-to-music/scripts/t2m.py "밝은 인디 팝, 경쾌한 기타, 120 BPM" \
  --lyrics-prompt "친구들과의 여름 여행에 관한 노래"

# 직접 가사 사용 (인라인 또는 파일에서)
python3 skills/text-to-music/scripts/t2m.py "만돕 발라드, 피아노와 현악기" \
  --lyrics $'[Verse]\n창밖에 비가 그쳤어\n[Chorus]\n난 아직 널 기다려' --vocal-gender Female --title "비 그친 후"
python3 skills/text-to-music/scripts/t2m.py "로파이 힙합, 부드러운, LP 잡음" \
  --lyrics-file song.txt --duration 120 -o chill.mp3

# 보컬/스타일을 참조 곡에 모델링 (로컬 파일 20MB 이하 또는 공개 URL)
python3 skills/text-to-music/scripts/t2m.py "꿈꾸는 듯한 신스팝" --lyrics-file song.txt --ref-audio ./ref.mp3

출력: song_v1.mp3 및 song_v2.mp3 (또는 -o 사용 시 <stem>_v1.mp3 / <stem>_v2.mp3). 서버가 가사를 작성한 경우 <stem>_lyrics.txt에도 저장됩니다.

인자기본값설명
prompt필수음악 설명: 장르, 분위기, 악기, 템포 (최대 1500자)
--lyrics / -l—가사 텍스트; [Verse], [Chorus], [Bridge] 마커가 구조에 도움
--lyrics-file—가사가 포함된 UTF-8 .txt 파일 (최대 64KB)
--lyrics-prompt—서버 측 가사 작성을 위한 주제
--tags—스타일 태그, 쉼표로 구분 (최대 50자)
--negative-tags—피해야 할 스타일
--duration / -d자동대상 길이 힌트: 60, 120, 또는 180초. 힌트이며 보장되지 않습니다.
--ref-audio—참조 곡, 로컬 경로 또는 공개 URL

--lyrics, --lyrics-file, --lyrics-prompt는 상호 배타적입니다. 하나는 필수입니다.

커버 — 기존 노래 다시 부르기

원본 곡, 가사, 그리고 새로운 사운드에 대한 설명(--style 및/또는 --prompt)이 필요합니다:

# 같은 가사, 새로운 스타일: 원본에서 가사를 인식한 다음 커버
python3 skills/text-to-music/scripts/t2m.py cover original.mp3 \
  --style "재즈, 스모키한 여성 보컬" --recognize-lyrics -o jazz_cover.mp3

# 원본 멜로디에 새 가사, 더 자유로운 편곡
python3 skills/text-to-music/scripts/t2m.py cover https://example.com/song.mp3 \
  --prompt "어쿠스틱 포크, 핑거픽 기타, 친밀한" --lyrics-file new_lyrics.txt \
  --adherence main_melody --vocal-gender Male

# 가사만 인식 (커버 전에 검토하거나 편집하려는 경우)
python3 skills/text-to-music/scripts/t2m.py lyrics original.mp3 -o lyrics.txt

사용자가 가사를 수정하려는 경우 권장 흐름: lyrics 실행 → 파일 편집 → cover --lyrics-file.

인자기본값설명
source필수원본 곡: 로컬 파일 (최대 100MB; mp3/wav/m4a/aac/flac/ogg) 또는 공개 URL
--style / -s—짧은 스타일 태그, 예: "록, 남성 보컬" (최대 50자)
--prompt / -p—커버 사운드에 대한 긴 설명 (최대 1500자)
--adherencehighhigh = 원본 편곡을 밀접하게 따름; main_melody = 메인 멜로디만 유지, 더 자유로움
--lyrics / -l—부를 가사
--lyrics-file—가사가 포함된 UTF-8 .txt 파일 (최대 64KB)
--recognize-lyrics꺼짐원본의 가사를 먼저 전사하여 사용
--output / -ocover.mp3출력 경로; 변형에는 _v1 / _v2 접미사가 붙음

--style / --prompt 중 하나 이상은 필수입니다. 정확히 하나의 가사 출처가 필요합니다.

공통 인자

인자기본값설명
--title—노래 제목 (최대 80자)
--vocal-gender—Male 또는 Female
--vocal-timbre—자유 형식 음성 설명, 예: "허스키하고 따뜻한 알토" (최대 50자)
--output / -osong.mp3 (커버는 cover.mp3)출력 경로; 변형에는 _v1 / _v2 접미사가 붙음
--no-wait꺼짐제출하고 작업 ID를 출력한 후 종료
--poll-interval10상태 확인 사이의 간격(초)
--timeout1800최대 대기 시간(초) (작업은 서버에서 계속 실행됨)
--api-key환경/설정에서Noiz API 키 (저장된 키를 재정의)

작업 재개 / 확인

생성은 두 개의 gen_product_id를 출력하고, 커버는 하나의 task_id를 출력합니다. 대기가 시간 초과되거나 --no-wait를 사용한 경우 다음으로 재개하세요:

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   # 상태만 출력

상태는 submitted → running → succeeded / failed 순서입니다. 커버는 또한 stage를 보고합니다 (분석이 노래보다 먼저 실행되므로 커버가 더 오래 걸립니다). 다운로드 URL은 약 24시간 후에 만료됩니다. 새 URL을 받으려면 status를 다시 실행하세요.

좋은 프롬프트 작성법

  • 프롬프트 / 스타일 = 사운드: 장르 + 분위기 + 악기 + 템포. "시네마틱 오케스트라 팝, 웅장한 현악기, 90 BPM, 희망찬".
  • 가사: 섹션을 짧게 유지하고 레이블을 붙이세요. 중국어, 영어, 혼합 가사 모두 작동합니다.
  • 짧은 노래: 징글이나 인사말의 경우 -d 60을 전달하고 절과 후렴만 작성하세요.
  • 커버: high를 선택하면 커버를 알아볼 수 있게 유지하고, 더 큰 장르 변경을 원하면 main_melody를 선택하세요.
  • 마음에 들지 않으면 다시 실행하세요 — 각 실행은 두 개의 새로운 변형을 제공합니다.

비용

  • 노래 및 커버는 작업당 한 번 청구됩니다(변형당 아님): ceil(가장 긴 변형 초) × 15 크레딧, 두 변형이 모두 성공한 후 청구됩니다. 2분짜리 노래는 약 1,800크레딧입니다. 구독 크레딧이 전체 작업을 충당하지 못하면 종량제로 $0.00015/초로 청구됩니다. 스크립트는 완료 시 청구된 금액을 출력합니다.
  • 가사 인식(lyrics / --recognize-lyrics): 100크레딧 (또는 종량제 $0.001), 보컬이 감지된 경우에만 청구됩니다.

속도 제한: 키당 엔드포인트당 분당 5개 제출; 상태 폴링 분당 60회.

제한 사항

  • 순수 악기 음악은 지원되지 않습니다 — 가사가 항상 필요합니다.
  • --duration은 힌트일 뿐입니다. 실제 길이는 다를 수 있습니다. 커버는 원본의 길이를 따릅니다.
  • 민감한 내용을 포함하는 프롬프트 또는 가사는 거부됩니다(code=400).

설정

python3 skills/text-to-music/scripts/t2m.py config --set-api-key YOUR_KEY
# 또는
export NOIZ_API_KEY=YOUR_KEY

API 키는 developers.noiz.ai에서 받으세요.

요구 사항

  • Python 3.6+
  • requests 패키지: uv pip install requests
  • Noiz API 키 (developers.noiz.ai에서)

보안 및 데이터 공개

  • API 키: ~/.config/noiz/api_key (권한 0600) 또는 NOIZ_API_KEY 환경 변수를 통해 저장됩니다.
  • 네트워크: 프롬프트, 가사, 모든 참조/원본 오디오(파일 업로드 또는 URL)는 https://noiz.ai/v1/text-to-music 및 https://noiz.ai/v1/text-to-music/cover*로 전송되며, 작업 상태는 동일한 엔드포인트에서 폴링됩니다. 다른 데이터는 전송되지 않습니다.
  • 출력: 생성된 MP3(및 가사 텍스트 파일)는 서명된 Noiz 스토리지 URL에서 다운로드되어 출력 경로에 저장됩니다. 다른 파일은 수정되지 않습니다.

Individual skills in this repo

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

관련 스킬