--- title: UTAU WebUI emoji: πŸ“‰ colorFrom: indigo colorTo: red sdk: gradio sdk_version: 5.33.1 app_file: app.py pinned: false license: mit --- # 🎡 UTAU WebUI - ν•œκ΅­μ–΄ μŒμ„± ν•©μ„±κΈ° ν”Όμ•„λ…Έλ‘€ 기반의 μ›Ή UTAU μŒμ„± ν•©μ„± μ‹œμŠ€ν…œμž…λ‹ˆλ‹€. ν•œκ΅­μ–΄ CVC λ³΄μ΄μŠ€λ±…ν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ μžμ—°μŠ€λŸ¬μš΄ ν•œκ΅­μ–΄ μŒμ„±μ„ ν•©μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ## ✨ νŠΉμ§• - 🎹 **직관적인 ν”Όμ•„λ…Έλ‘€ μΈν„°νŽ˜μ΄μŠ€**: μ›Ή λΈŒλΌμš°μ €μ—μ„œ λ°”λ‘œ μ‚¬μš© κ°€λŠ₯ν•œ ν”Όμ•„λ…Έλ‘€ νŽΈμ§‘κΈ° - πŸ‡°πŸ‡· **ν•œκ΅­μ–΄ μŒμ„± ν•©μ„±**: hanseol CVC λ³΄μ΄μŠ€λ±…ν¬λ₯Ό μ‚¬μš©ν•œ κ³ ν’ˆμ§ˆ ν•œκ΅­μ–΄ μŒμ„± ν•©μ„± - πŸ—œοΈ **HDF5 μ••μΆ• μ‹œμŠ€ν…œ**: 47.7MB β†’ 33.9MB (29% μ••μΆ•), 46개 파일 β†’ 1개 파일둜 μ΅œμ ν™” - πŸš€ **μžλ™ν™”λœ μ›Œν¬ν”Œλ‘œμš°**: Makefile을 ν†΅ν•œ 원클릭 μ„€μ •, μ••μΆ•, μ‹€ν–‰ - 🎡 **μ‹€μ‹œκ°„ νŽΈμ§‘**: λ…ΈνŠΈ μΆ”κ°€, μ‚­μ œ, 가사 μž…λ ₯이 μ‹€μ‹œκ°„μœΌλ‘œ κ°€λŠ₯ - πŸ”Š **μ›¨μ΄λΈŒνΌ μ‹œκ°ν™”**: ν•©μ„±λœ μŒμ„±μ˜ μ›¨μ΄λΈŒνΌμ„ ν”Όμ•„λ…Έλ‘€μ—μ„œ λ°”λ‘œ 확인 - 🎀 **CVC μŒμ†Œ μ‹œμŠ€ν…œ**: 585개의 ν•œκ΅­μ–΄ CVC μŒμ†Œλ‘œ μžμ—°μŠ€λŸ¬μš΄ 발음 κ΅¬ν˜„ - ☁️ **ν΄λΌμš°λ“œ μ΅œμ ν™”**: Gradio 및 Hugging Face Spaces ν™˜κ²½μ— μ΅œμ ν™” ## 🎀 λ³΄μ΄μŠ€λ±…ν¬ 정보 - **λ³΄μ΄μŠ€λ±…ν¬**: hanseol CVC (HDF5 μ••μΆ•) - **CV (Character Voice)**: KUNGOM - **UTAU**: KITANE λ°±ν•œμ„€ - **μŒμ†Œ 수**: 585개 CVC μŒμ†Œ - **μ–Έμ–΄**: ν•œκ΅­μ–΄ - **μ••μΆ•μœ¨**: 29% (원본 47.7MB β†’ μ••μΆ• 33.9MB) ## πŸš€ λΉ λ₯Έ μ‹œμž‘ ### ν•„μš” 쑰건 - Python 3.12+ - [uv](https://docs.astral.sh/uv/) (Python νŒ¨ν‚€μ§€ κ΄€λ¦¬μž) - GNU Make (μžλ™ν™” 슀크립트용) ### uv μ„€μΉ˜ ```bash # macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" ``` ### 🎯 ν•œ λ²ˆμ— μ„€μ •ν•˜κ³  μ‹€ν–‰ν•˜κΈ° ```bash # μ €μž₯μ†Œ 클둠 git clone cd utau-webui # λͺ¨λ“  μ„€μ •κ³Ό 싀행을 ν•œ λ²ˆμ— make all ``` ### πŸ“‹ 단계별 μ‹€ν–‰ ```bash # 1. 개발 ν™˜κ²½ μ„€μ • make setup # 2. λ³΄μ΄μŠ€λ±…ν¬ μ••μΆ• (졜초 1회만) make compress # 3. μ›ΉUI μ‹€ν–‰ make run ``` ### πŸ” ν˜„μž¬ μƒνƒœ 확인 ```bash # ν”„λ‘œμ νŠΈ μƒνƒœ 확인 make status # μ˜μ‘΄μ„± 및 ν™˜κ²½ 확인 make check-deps ``` ## πŸ“‹ Makefile λͺ…λ Ήμ–΄ | λͺ…λ Ήμ–΄ | μ„€λͺ… | |--------|------| | `make help` | μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  λͺ…λ Ήμ–΄ ν‘œμ‹œ | | `make setup` | 개발 ν™˜κ²½ 초기 μ„€μ • (μ˜μ‘΄μ„± μ„€μΉ˜) | | `make compress` | λ³΄μ΄μŠ€λ±…ν¬λ₯Ό HDF5 ν˜•νƒœλ‘œ μ••μΆ• | | `make run` | μ›ΉUI μ‹€ν–‰ | | `make dev` | 개발 λͺ¨λ“œλ‘œ μ‹€ν–‰ (auto-reload) | | `make test` | μ••μΆ•λœ λ³΄μ΄μŠ€λ±…ν¬ ν…ŒμŠ€νŠΈ | | `make status` | ν˜„μž¬ ν”„λ‘œμ νŠΈ μƒνƒœ 확인 | | `make clean` | μž„μ‹œ 파일 및 μΊμ‹œ 정리 | | `make all` | 전체 μ„€μ • 및 μ‹€ν–‰ (setup β†’ compress β†’ run) | ## 🎼 μ‚¬μš©λ²• 1. **λ…ΈνŠΈ μΆ”κ°€**: ν”Όμ•„λ…Έλ‘€μ—μ„œ μ›ν•˜λŠ” μœ„μΉ˜λ₯Ό ν΄λ¦­ν•˜μ—¬ λ…ΈνŠΈ μΆ”κ°€ 2. **가사 μž…λ ₯**: λ…ΈνŠΈλ₯Ό λ”λΈ”ν΄λ¦­ν•˜μ—¬ ν•œκ΅­μ–΄ 가사 μž…λ ₯ 3. **λ…ΈνŠΈ νŽΈμ§‘**: λ“œλž˜κ·Έν•˜μ—¬ λ…ΈνŠΈ 길이 μ‘°μ •, μœ„μ•„λž˜λ‘œ λ“œλž˜κ·Έν•˜μ—¬ μŒλ†’μ΄ μ‘°μ • 4. **μŒμ„± ν•©μ„±**: "🎡 μŒμ„± ν•©μ„±" λ²„νŠΌ ν΄λ¦­ν•˜μ—¬ μŒμ„± 생성 5. **μž¬μƒ**: μƒμ„±λœ μŒμ„±μ„ λ°”λ‘œ λ“€μ–΄λ³΄κ±°λ‚˜ λ‹€μš΄λ‘œλ“œ ### μ§€μ›ν•˜λŠ” ν•œκ΅­μ–΄ μŒμ†Œ - **κΈ°λ³Έ λͺ¨μŒ**: μ•„, 이, 우, 에, 였, 으, μ–΄ - **자음+λͺ¨μŒ μ‘°ν•©**: λ°”, λ‹€, κ°€, ν•˜, 자, μΉ΄, 라, 마, λ‚˜, 파, 사, 타 λ“± - **볡합 λͺ¨μŒ**: μ•Ό, 예, μ—¬, μš”, 유, 의, 와, 웨, μœ„, μ›Œ - **λ„λ ˆλ―Έ μŒκ³„**: 도, 레, λ―Έ, 파, 솔, 라, μ‹œ ## πŸ—œοΈ HDF5 μ••μΆ• μ‹œμŠ€ν…œ ### μž₯점 - **파일 관리 μ΅œμ ν™”**: 46개 WAV 파일 β†’ 1개 HDF5 파일 - **μš©λŸ‰ μ΅œμ ν™”**: 29% μ••μΆ• 효율 (47.7MB β†’ 33.9MB) - **μ„±λŠ₯ ν–₯상**: 더 λΉ λ₯Έ λ‘œλ”© 및 배포 - **ν΄λΌμš°λ“œ μΉœν™”μ **: Hugging Face Spaces λ“± ν΄λΌμš°λ“œ ν™˜κ²½μ— μ΅œμ ν™” ### μ••μΆ• κ³Όμ • ```bash # μžλ™ μ••μΆ• make compress # μˆ˜λ™ μ••μΆ• uv run python -c "from voice_data_converter import convert_voicebank_to_compressed_format; convert_voicebank_to_compressed_format('voice/hanseol CVC')" ``` ## πŸ› οΈ 기술 μŠ€νƒ - **Frontend**: Gradio + Custom PianoRoll Component - **Backend**: Python - **μŒμ„± ν•©μ„±**: UTAU Engine + Straycat Resampler - **데이터 μ••μΆ•**: HDF5 (with gzip compression) - **μ˜€λ””μ˜€ 처리**: SoundFile, NumPy - **νŒ¨ν‚€μ§€ 관리**: uv - **μžλ™ν™”**: GNU Make ## πŸ”§ κ°œλ°œν•˜κΈ° ### 개발 ν™˜κ²½ μ„€μ • ```bash # 전체 개발 ν™˜κ²½ μ„€μ • make setup # 개발 λͺ¨λ“œλ‘œ μ‹€ν–‰ (파일 λ³€κ²½ μ‹œ μžλ™ μž¬μ‹œμž‘) make dev # μ‰˜ μ§„μž… make shell ``` ### μ˜μ‘΄μ„± 관리 ```bash # μ˜μ‘΄μ„± μΆ”κ°€ uv add # 개발 μ˜μ‘΄μ„± μΆ”κ°€ uv add --dev # μ˜μ‘΄μ„± μ—…λ°μ΄νŠΈ make update ``` ### ν”„λ‘œμ νŠΈ 정보 ```bash # ν”„λ‘œμ νŠΈ 정보 확인 make info # μ˜μ‘΄μ„± 트리 확인 uv tree ``` ## 🚨 문제 ν•΄κ²° ### μ••μΆ•λœ λ³΄μ΄μŠ€λ±…ν¬κ°€ μ—†λŠ” 경우 ```bash # μƒνƒœ 확인 make status # λ³΄μ΄μŠ€λ±…ν¬ μ••μΆ• make compress ``` ### 원본 λ³΄μ΄μŠ€λ±…ν¬κ°€ μ—†λŠ” 경우 1. hanseol CVC λ³΄μ΄μŠ€λ±…ν¬λ₯Ό `voice/hanseol CVC` 디렉토리에 배치 2. `make compress` μ‹€ν–‰ ### ν™˜κ²½ 문제 ```bash # ν™˜κ²½ 확인 make check-deps # μ˜μ‘΄μ„± μž¬μ„€μΉ˜ make setup ``` ## πŸ“ μ €μž‘κΆŒ 및 λΌμ΄μ„ μŠ€ ### UTAU WebUI λ³Έ ν”„λ‘œμ νŠΈλŠ” μ˜€ν”ˆμ†ŒμŠ€ μ†Œν”„νŠΈμ›¨μ–΄μž…λ‹ˆλ‹€. ### Straycat Resampler λ³Έ ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” UTAU λ¦¬μƒ˜ν”ŒλŸ¬λŠ” [straycat](https://github.com/UtaUtaUtau/straycat)을 기반으둜 ν•©λ‹ˆλ‹€. **원본 μ €μž₯μ†Œ**: https://github.com/UtaUtaUtau/straycat **λΌμ΄μ„ μŠ€**: MIT License **μ €μž‘κΆŒ**: Copyright (c) UtaUtaUtau > Yet another WORLD-based UTAU resampler. MIT λΌμ΄μ„ μŠ€μ— 따라 λ³Έ ν”„λ‘œμ νŠΈμ— ν¬ν•¨λ˜μ—ˆμœΌλ©°, 원본 μ €μž‘κΆŒ ν‘œμ‹œλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€. ### hanseol CVC λ³΄μ΄μŠ€λ±…ν¬ - **CV**: KUNGOM - **UTAU**: KITANE λ°±ν•œμ„€ ν•΄λ‹Ή λ³΄μ΄μŠ€λ±…ν¬μ˜ μ‚¬μš© κΆŒν•œμ— λŒ€ν•΄μ„œλŠ” 원 μ €μž‘κΆŒμžμ˜ 이용 약관을 λ”°λ¦…λ‹ˆλ‹€.