UTAU-WebUI / README.md
crlotwhite's picture
Add UTAU WebUI project with LFS support for voice files
1056960

A newer version of the Gradio SDK is available: 6.2.0

Upgrade
metadata
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 (Python νŒ¨ν‚€μ§€ κ΄€λ¦¬μž)
  • GNU Make (μžλ™ν™” 슀크립트용)

uv μ„€μΉ˜

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

🎯 ν•œ λ²ˆμ— μ„€μ •ν•˜κ³  μ‹€ν–‰ν•˜κΈ°

# μ €μž₯μ†Œ 클둠
git clone <repository-url>
cd utau-webui

# λͺ¨λ“  μ„€μ •κ³Ό 싀행을 ν•œ λ²ˆμ—
make all

πŸ“‹ 단계별 μ‹€ν–‰

# 1. 개발 ν™˜κ²½ μ„€μ •
make setup

# 2. λ³΄μ΄μŠ€λ±…ν¬ μ••μΆ• (졜초 1회만)
make compress

# 3. μ›ΉUI μ‹€ν–‰
make run

πŸ” ν˜„μž¬ μƒνƒœ 확인

# ν”„λ‘œμ νŠΈ μƒνƒœ 확인
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 λ“± ν΄λΌμš°λ“œ ν™˜κ²½μ— μ΅œμ ν™”

μ••μΆ• κ³Όμ •

# μžλ™ μ••μΆ•
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

πŸ”§ κ°œλ°œν•˜κΈ°

개발 ν™˜κ²½ μ„€μ •

# 전체 개발 ν™˜κ²½ μ„€μ •
make setup

# 개발 λͺ¨λ“œλ‘œ μ‹€ν–‰ (파일 λ³€κ²½ μ‹œ μžλ™ μž¬μ‹œμž‘)
make dev

# μ‰˜ μ§„μž…
make shell

μ˜μ‘΄μ„± 관리

# μ˜μ‘΄μ„± μΆ”κ°€
uv add <package-name>

# 개발 μ˜μ‘΄μ„± μΆ”κ°€
uv add --dev <package-name>

# μ˜μ‘΄μ„± μ—…λ°μ΄νŠΈ
make update

ν”„λ‘œμ νŠΈ 정보

# ν”„λ‘œμ νŠΈ 정보 확인
make info

# μ˜μ‘΄μ„± 트리 확인
uv tree

🚨 문제 ν•΄κ²°

μ••μΆ•λœ λ³΄μ΄μŠ€λ±…ν¬κ°€ μ—†λŠ” 경우

# μƒνƒœ 확인
make status

# λ³΄μ΄μŠ€λ±…ν¬ μ••μΆ•
make compress

원본 λ³΄μ΄μŠ€λ±…ν¬κ°€ μ—†λŠ” 경우

  1. hanseol CVC λ³΄μ΄μŠ€λ±…ν¬λ₯Ό voice/hanseol CVC 디렉토리에 배치
  2. make compress μ‹€ν–‰

ν™˜κ²½ 문제

# ν™˜κ²½ 확인
make check-deps

# μ˜μ‘΄μ„± μž¬μ„€μΉ˜
make setup

πŸ“ μ €μž‘κΆŒ 및 λΌμ΄μ„ μŠ€

UTAU WebUI

λ³Έ ν”„λ‘œμ νŠΈλŠ” μ˜€ν”ˆμ†ŒμŠ€ μ†Œν”„νŠΈμ›¨μ–΄μž…λ‹ˆλ‹€.

Straycat Resampler

λ³Έ ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” UTAU λ¦¬μƒ˜ν”ŒλŸ¬λŠ” straycat을 기반으둜 ν•©λ‹ˆλ‹€.

원본 μ €μž₯μ†Œ: https://github.com/UtaUtaUtau/straycat λΌμ΄μ„ μŠ€: MIT License μ €μž‘κΆŒ: Copyright (c) UtaUtaUtau

Yet another WORLD-based UTAU resampler.

MIT λΌμ΄μ„ μŠ€μ— 따라 λ³Έ ν”„λ‘œμ νŠΈμ— ν¬ν•¨λ˜μ—ˆμœΌλ©°, 원본 μ €μž‘κΆŒ ν‘œμ‹œλ₯Ό μœ μ§€ν•©λ‹ˆλ‹€.

hanseol CVC λ³΄μ΄μŠ€λ±…ν¬

  • CV: KUNGOM
  • UTAU: KITANE λ°±ν•œμ„€

ν•΄λ‹Ή λ³΄μ΄μŠ€λ±…ν¬μ˜ μ‚¬μš© κΆŒν•œμ— λŒ€ν•΄μ„œλŠ” 원 μ €μž‘κΆŒμžμ˜ 이용 약관을 λ”°λ¦…λ‹ˆλ‹€.