File size: 1,784 Bytes
aa9892b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
-- B-1: user_voices.register 컬럼 μΆ”κ°€ (2026-04-27)
--
-- ν•œ μ‚¬μš©μžκ°€ 같은 ν™”μž(display_name)둜 두 개의 register λ₯Ό 등둝할 수 있게 ν•œλ‹€.
--   - casual: 자유 λͺ¨λ“œ λŒ€ν™”μš© (친근/일상 톀)
--   - formal: Voice Moments μ½˜ν…μΈ  λ‚­λ…μš© (μ°¨λΆ„/낭독 톀)
--
-- λ°°κ²½: ICL TTS λŠ” reference audio 의 prosody λΆ„ν¬μ—μ„œ λ©€μ–΄μ§„ ν…μŠ€νŠΈλ₯Ό
-- λ§Œλ‚˜λ©΄ μŒμƒ‰μ„ ν¬μƒν•˜κ³  prior 둜 λ―Έλ„λŸ¬μ§„λ‹€ (μ‚¬μš©μž 보고: "κ³ μš”ν•˜κ³  μ•„λŠ‘ν•œ 밀이
-- 당신을 감싸쀄 κ±°μ˜ˆμš”" β†’ reference latent λ°– β†’ λ‹€λ₯Έ λͺ©μ†Œλ¦¬). LLM ν”„λ‘¬ν”„νŠΈλ§ŒμœΌλ‘œλŠ”
-- μ–΄νœ˜ λΆ„ν¬κΉŒμ§€ 작기 μ–΄λ €μ›Œ, 같은 ν™”μžμ— λŒ€ν•΄ register 별 reference λ₯Ό 뢄리.
--
-- λΌμš°νŒ…:
--   - 자유 λͺ¨λ“œ 호좜 β†’ register='casual' voice μš°μ„ 
--   - Voice Moment μ½˜ν…μΈ  호좜 β†’ register='formal' μš°μ„ , μ—†μœΌλ©΄ casual fallback

ALTER TABLE public.user_voices
  ADD COLUMN IF NOT EXISTS register VARCHAR(16) NOT NULL DEFAULT 'casual'
    CHECK (register IN ('casual', 'formal'));

-- κΈ°μ‘΄ row λŠ” λͺ¨λ‘ DEFAULT 'casual' 둜 λΆ„λ₯˜ (νšŒκ·€ 0).
-- μ‚¬μš©μžκ°€ μŒμ„± μ„€μ •μ—μ„œ "μ°¨λΆ„ν•œ 톀 μΆ”κ°€ 등둝" 으둜 formal row λ₯Ό μΆ”κ°€ κ°€λŠ₯.

-- (user_id, display_name, register) μœ λ‹ˆν¬ 인덱슀 β€”
-- 같은 ν™”μžμ˜ 같은 register 쀑볡 등둝 λ°©μ§€.
-- display_name 이 λΉ„μ–΄μžˆλŠ” μ˜› row λŠ” μ œμ•½ λŒ€μƒ μ™Έ (partial index).
CREATE UNIQUE INDEX IF NOT EXISTS user_voices_user_display_register_uniq
  ON public.user_voices (user_id, display_name, register)
  WHERE display_name IS NOT NULL AND display_name != '';

COMMENT ON COLUMN public.user_voices.register IS
  'Voice register: casual (자유 λͺ¨λ“œ λŒ€ν™”μš©) | formal (Voice Moments μ½˜ν…μΈ μš©). 같은 display_name 으둜 두 register 등둝 κ°€λŠ₯.';