Skip to content

속도·운율 조절

퀵스타트 권장: 일단 speed

대부분의 경우 speed 외의 파라미터는 그대로 두는 쪽이 가장 자연스럽게 들립니다.

pitch_scale 이나 intonation_scale 은 1.0 에서 벗어나면 약간의 음질 저하까지 따라옵니다.

"좀 빠르게/느리게만 하고 싶다" 면 speed 하나만 만져 보고, 나머지는 필요해졌을 때 고급 파라미터 섹션으로 내려가시면 됩니다.

generate() 는 말속도·피치·억양·변동성을 조절할 수 있는 키워드 인자 여섯 개를 받습니다.

모두 생략 가능하고, 아무것도 넘기지 않으면 학습된 기본값으로 합성됩니다.

아래 샘플은 모두 같은 문장 ("今日はどんな国に辿り着くのでしょうか。新しい出会いが楽しみです。") 을 tsukuyomi_chan 화자로, 해당 파라미터만 바꿔서 뽑은 결과입니다.

파라미터 동작은 HayaKoe 가 포크한 Style-Bert-VITS2infer() 와 동일합니다.

speed — 말속도

기본값 1.0 을 기준으로, 작을수록 빠르고 클수록 느립니다.

내부적으로 Duration Predictor 가 예측한 음소 길이에 speed 를 그대로 곱하는 방식이라, 발음 자체는 잘 유지됩니다.

つくよみちゃんspeed = 1.0기본
0:00 / 0:00

0.8 보다 아래로 내려가면 발음이 뭉개지고, 1.3 을 넘기면 "느리다" 보다 "늘어진다" 쪽에 가까워집니다.

실전에서는 0.9 ~ 1.1 정도가 가장 자연스럽습니다.

python
speaker.generate(text, speed=0.9)   # 약간 빠르게
speaker.generate(text, speed=1.1)   # 약간 느리게

고급 파라미터

여기서부터는 기본값으로도 충분히 자연스럽지만, 세밀한 튜닝이 필요할 때 건드리는 설정입니다.

전체 요약

파라미터기본값권장 범위효과
pitch_scale1.00.95 ~ 1.05음높이 배율. 1.0 에서 벗어나면 약간 음질 저하
intonation_scale1.00.8 ~ 1.3억양의 기복. 1.0 에서 벗어나면 약간 음질 저하
sdp_ratio0.20.0 ~ 0.5결정적 DP 와 확률적 SDP 의 혼합 비율
noise0.60.3 ~ 0.9음성 변동성 (음색 랜덤성)
noise_w0.80.5 ~ 1.2발화 리듬 변동성 (SDP 노이즈)

한 번에 하나씩만 움직여 보는 걸 권합니다.

아래 샘플에서는 차이를 귀로 확인할 수 있도록 일부러 권장 범위 바깥까지 밀어봤습니다.

pitch_scale — 음높이

음높이를 전반적으로 올리거나 내리는 단순한 배율입니다.

1.0 에서 벗어나면 약간의 음질 저하가 따라와서, 다른 파라미터보다 좁게 움직이는 걸 권합니다.

つくよみちゃんpitch_scale = 1.0기본
0:00 / 0:00

0.95 ~ 1.05 범위는 화자 정체성이 거의 유지되지만, 극단 값에서는 "다른 사람" 이 되거나 음질이 눈에 띄게 떨어집니다.

python
speaker.generate(text, pitch_scale=1.05)

intonation_scale — 억양 기복

억양 변화의 "폭" 을 조절합니다.

0.0 은 거의 완전히 단조로운 로봇 톤, 2.0 은 과장된 낭독 톤입니다.

pitch_scale 과 마찬가지로 1.0 에서 벗어나면 약간의 음질 저하가 있습니다.

つくよみちゃんintonation_scale = 1.0기본
0:00 / 0:00

실전에서는 0.85 ~ 1.3 정도가 자연스럽습니다.

python
speaker.generate(text, intonation_scale=1.2)

sdp_ratio — 결정적/확률적 길이 예측 혼합

HayaKoe (와 Style-Bert-VITS2) 는 두 종류의 길이 예측기를 함께 씁니다.

  • DP (Deterministic Duration Predictor) — 같은 텍스트에 대해 항상 같은 길이를 내놓습니다
  • SDP (Stochastic Duration Predictor) — 호출할 때마다 조금씩 다른 길이를 내놓습니다

sdp_ratio 는 두 예측기의 혼합 비율이고, 0.0 은 DP 만 쓰고, 1.0 은 SDP 만 쓴다 는 뜻입니다.

높을수록 문장 내 리듬 기복이 커지고, 같은 텍스트를 여러 번 돌렸을 때 결과가 매번 달라집니다.

つくよみちゃんsdp_ratio = 0.25DP 주도
0:00 / 0:00

재현성이 중요한 서비스 (예: 자막 타이밍 고정) 에서는 0.0 으로 두고, 일회성 생성이라면 0.2 ~ 0.4 가 자연스럽습니다.

python
speaker.generate(text, sdp_ratio=0.0)   # 항상 똑같이

noise / noise_w — 음성 · 리듬 변동성

각각 다른 단계에 작용하는 노이즈입니다 (음소 자체의 노이즈가 아닙니다).

  • noise — 음성 변동성. Flow 단계에서 음색의 전반적 랜덤성을 조절합니다. sdp_ratio 와 무관하게 항상 영향을 줍니다.
  • noise_w — 발화 리듬 변동성. SDP (확률적 예측기) 에 들어가는 노이즈입니다. sdp_ratio 가 0 이면 영향이 없습니다.

아래 샘플은 나머지 파라미터를 전부 기본값으로 두고, 해당 노이즈 하나만 바꿔서 뽑은 결과입니다.

つくよみちゃんnoise = 0.6기본
0:00 / 0:00
つくよみちゃんnoise_w = 0.8기본
0:00 / 0:00

대부분은 기본값 (0.6, 0.8) 을 그대로 두면 가장 자연스럽습니다.

"자꾸 흔들리는 것 같다" 싶으면 해당 쪽 노이즈를 살짝 내려 보고, "너무 기계적이다" 싶으면 조금 올려 보는 식으로 쓰면 됩니다.