HuggingFace 모델 URL을 받아 실행 가능한 Python 예제 + 샘플 출력 + RTF 측정 +
REPORT.md를 한 세트로 생성하는 실험 스킬. TTS·음성·오디오 모델이 주 타겟.
상태: 실험 단계 (
contrib/experimental/huggingface-model-example/). 자동 등록된 슬래시 커맨드 없음 → 에이전트가 SKILL.md 절차로 호출한다. 승격 기준 충족 시skills/domain/huggingface-model-example/로 이동.
사용자 메시지에 huggingface.co/... URL과 "예제/샘플/데모 만들어줘" 류 요청이
함께 있을 때 트리거. 다음을 한 세트로 생성한다.
out/*.wav (최소 1개, 0바이트 아님)gen_sec / audio_secREPORT.md — 모델 정보 + 추론 상세(verbatim) + 스트리밍 가능성범위 밖: 배포, 대규모 벤치마크, 모델 비교 보고.
HF_EXAM_DIR)산출물은 레포 바깥의 별도 작업 공간에 둔다. 환경 변수로 지정.
export HF_EXAM_DIR=/path/to/your/hf_model_exam_workspace
$HF_EXAM_DIR/
_ref/ # 공용 레퍼런스 자산 (모델 간 재사용)
ref_spk_a.wav
ref_spk_b.wav
prompt.txt # 레퍼런스 전사 (포맷은 스크립트가 파싱)
<model-name>/ # HF URL 의 model 부분 그대로
<feature>.py
REPORT.md
out/
<sample>.wav
os.environ["HF_EXAM_DIR"] 같은
런타임 참조 금지. 재현성 우선.작업 공간을 처음 꾸밀 때 준비하면 좋은 것들 (파일명은 자유).
| 슬롯 | 용도 | 예시 파일명 |
|---|---|---|
| 화자 A (예: 남성) | 보이스 클로닝 레퍼런스 1 | ref_spk_a.wav |
| 화자 B (예: 여성) | 멀티스피커 대화용 레퍼런스 2 | ref_spk_b.wav |
| 감정 레퍼런스 | emotional TTS 시연용 (옵션) | ref_emo_*.wav |
prompt.txt | 각 레퍼런스의 전사 (JSON/TSV/free-form) | — |
레퍼런스 언어는 작업 공간이 다루는 주력 언어에 맞추면 됨. 스킬 자체는 언어를 가정하지 않는다.
model 부분을 풀네임 그대로.
Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign → Qwen3-TTS-12Hz-1.7B-VoiceDesign/OpenMOSS-Team/MOSS-TTSD-v1.0 → MOSS-TTSD-v1.0/"orpheus 폴더에").같은 계열의 다른 체크포인트(-VoiceDesign vs -CustomVoice)가 한 작업 공간에서
충돌하지 않도록 풀네임 유지가 기본.
1. HF_EXAM_DIR 확인 + _ref/ 자산 점검
│
▼
2. 모델 카드 + (필요 시) GitHub 원본 코드 수집
│
▼
3. 자매 폴더 스타일 답습
│
▼
4. 대표 기능 1개 선정 (스크립트당 1 기능)
│
▼
5. 꼭 필요한 입력만 사용자에게 질의
│
▼
6. 스크립트 작성 (절대경로 + perf_counter 측정)
│
▼
7. Python 환경 선택 (transformers 버전 매칭)
│
▼
8. 실행 → out/*.wav + RTF stdout
│
▼
9. REPORT.md 작성 (verbatim, 꾸며내지 않음)
상세 절차·예시는 SKILL.md 참조.
모델 코드가 import 하는 transformers API 를 근거로 선택. 사용자의 환경 관리자 (conda/venv/uv/poetry)는 스킬이 결정하지 않음.
| 요구 transformers | 신호 |
|---|---|
<4.47 | 구 API 를 pinned 로 명시한 레포 |
>=4.50, <5.0 | 대부분의 AutoModel + trust_remote_code 경로 |
>=5.0 | PreTrainedConfig (대문자 C) import, 최신 audio tokenizer API |
애매하면 최신 호환 버전부터 시도. ImportError 발생 시 한 단계 낮춤.
| RTF 범위 | 의미 |
|---|---|
< 0.3 | 실용적 스트리밍 가능 수준 |
< 1 | 실시간 이상 |
> 1 | 배치용 |
주의: 카드·코드에 스트리밍 지원이 명시돼 있지 않으면 "RTF 는 낮으나 공식 스트리밍 API 는 확인 안 됨" 식으로 구분 표기.
REPORT.md 핵심 원칙리포트는 재현성이 최상위 가치.
- 또는 (카드 미기재). 꾸며내지 말 것.(확인 불가) — black-box 캡슐화로 외부에서 확정 불가한
경우 명시.리포트 필수 섹션: 모델 기본정보 / 특장점 / 저자·라이선스 / 샘플 생성 결과(RTF 포함) / 추론 상세 / 스트리밍 가능성 / 재현 방법 / 함정. 템플릿 전문은 SKILL.md.
| 증상 | 대처 |
|---|---|
ImportError: cannot import name 'PreTrainedConfig' | transformers 5.x 환경. 옛 버전은 PretrainedConfig (소문자 c) |
You are trying to access a gated repo | HF 캐시(~/.cache/huggingface/hub/)에서 ungated 미러 확인. 원본 slug는 주석에 명시 |
| HF 카드가 한 줄 요약뿐 | 코드는 GitHub에 있음. engine_class.py / decoder.py / inference.py 등을 raw.githubusercontent.com에서 직접 fetch |
| 생성은 되는데 wav가 무음/"삐-" | 오디오 토크나이저 weights 미로딩 가능성. 프로세서가 자체 토크나이저를 들고 오는지 확인 |
| 특정 언어 전용 모델에 타 언어 입력 | 고집 X. 지원 언어로 바꾸고 docstring에 제약 명시 |
| 출력이 조기 절단 | max_new_tokens 부족. 오디오 프레임 레이트 × 목표 지속시간 × 1.5 산출 |
| CUDA OOM | torch_dtype=torch.bfloat16 → attn_implementation="sdpa" → 배치 축소 순 |
skills/)HF_EXAM_DIR로 재현 성공.skills/domain/huggingface-model-example/ 로 이동 + PR 리뷰.| 종류 | 위치 |
|---|---|
| 스킬 정의 (절차·템플릿 전문) | contrib/experimental/huggingface-model-example/SKILL.md |
| 트리거 키워드 | huggingface 예제, hf 모델 예제, huggingface.co, 모델 샘플 만들어줘, 데모 만들어줘 |
| 환경 변수 | HF_EXAM_DIR (필수, 기본값 없음) |