티스토리 뷰
Paper/TTS
[Paper 리뷰] MobileSpeech: A Fast and High-Fidelity Framework for Mobile Zero-Shot Text-to-Speech
feVeRin 2024. 7. 5. 11:22반응형
MobileSpeech: A Fast and High-Fidelity Framework for Mobile Zero-Shot Text-to-Speech
- Zero-shot Text-to-Speech는 few-second unseen speaker voice prompt로 강력한 voice cloning capability를 달성할 수 있음
- BUT, 대부분의 기존 방식들은 우수한 합성 품질에 비해 추론 속도, model size 측면의 한계가 있음
- MobileSpeech
- Discrete codec를 기반으로 speech codec의 hierarchical information과 weight mechanism을 incorporate 하는 Speech Mask Decoder module을 도입
- 특히 text와 speech 간의 gap을 해소하기 위해 information flow를 less-to-more로 simulate 하는 high-level probabilistic mask를 적용 - Speaker prompt는 prompt speech와 incorporate text로부터 fine-grained prompt duration을 추출하도록 함
- Discrete codec를 기반으로 speech codec의 hierarchical information과 weight mechanism을 incorporate 하는 Speech Mask Decoder module을 도입
- 논문 (ACL 2024) : Paper Link
1. Introduction
- 대부분의 text-to-speech (TTS) 모델은 수백시간의 dataset으로 training 되고 추론에 적합한 추가적인 fine-tuning이 필요하므로 time-consuming 하고 user-friendly 하지 않음
- 한편으로 추론 시간을 줄이기 위해 VALL-E, NaturalSpeech 등은 zero-shot capability를 기반으로 few-second voice만으로 unseen speaker에 대한 cloning을 도입함
- BUT, 해당 모델들 역시 대규모의 cloud를 기반으로 하므로 model parameter나 추론 속도 측면에서 근본적인 해결책은 아님 - 따라서 보다 user-friendly한 mobile device에서 zero-shot TTS 모델을 활용하기 위해서는 다음의 조건들을 만족해야 함
- Fast
- 동일한 text에 대해 single mobile device에서 TTS를 수행하면 A100 GPU 보다 8~10배의 RTF 저하가 나타나므로, zero-shot TTS의 근본적인 추론 속도를 향상해야 함 - Lightweight
- Mobile, edge-device에 배포하기 위해서는 model size와 runtime memory footprint가 최소화되어야 함 - High Similarity and Diversity
- Zero-shot TTS는 동일한 text에 대해 다양한 음성을 생성하고 few-second prompt 만으로도 timbre와 prosody를 clone 할 수 있어야 함 - High Quality
- Naturalness를 향상하기 위해서는 adjacent harmonics 간의 frequency bin detail을 반영하고 강력한 duration modeling이 가능해야 함 - Robustness
- Word missing이나 repeating이 없어야 함
- Fast
- 한편으로 추론 시간을 줄이기 위해 VALL-E, NaturalSpeech 등은 zero-shot capability를 기반으로 few-second voice만으로 unseen speaker에 대한 cloning을 도입함
-> 그래서 위 문제들을 해결하면서 mobile device에 적합한 zero-shot TTS 모델인 MobileSpeech를 제안
- MobileSpeech
- FastSpeech2 framework와 mask generation module을 기반으로 speech의 discrete codec architecture를 고려한 Speech Mask Decoder (SMD) module을 설계
- 추가적으로 high similarity, high quality, low latency를 달성하기 위한 speaker prompt module을 도입
< Overall of MobileSpeech >
- Mobile device에 배포 가능한 zero-shot TTS 모델
- Discrete speech codec의 hierarchical token structure에 기반한 SMD module과 high quality generation을 위한 speaker prompt module을 채택
- 결과적으로 mobile device에서 빠른 latency와 우수한 합성 품질을 달성
2. Method
- Overall
- MobileSpeech는 아래 그림과 같이 FastSpeech2를 기반으로 구성됨
- 먼저 input text는 phoneme sequence로 처리되어 text encoder를 통해 target text representation을 얻음
- 한편으로 speech prompt는 EnCodec에 기반한 prompt encoder를 통해 prompt codec acouostic token의 channel dimension을 1-dimension으로 compress 함 - 이후 prompt codec acoustic token에서 fine-grained prompt duration을 추출한 뒤 target text와 결합하고, duration prediction module과 length regularizer에 전달하여 expanded target text를 얻음
- 다음으로 핵심 구조인 speech mask codec decoder을 통과함
- 이때 training 과정에서 aligned target text의 일부를 나머지 text generation을 guide 하는 prompt로 randomly select 하여 사용
- 특히 speech codec의 RVQ feature를 사용한 masking/parallel generation을 기반으로 multi-channel training과 priority training, text에 의존하여 acoustic token을 생성하도록 함
- 최종적으로 acoustic token은 pre-trained codec tokenizer인 Vocos를 사용하여 speech output으로 변환됨
- 먼저 input text는 phoneme sequence로 처리되어 text encoder를 통해 target text representation을 얻음
- Speech Codec Mask Decoder
- Paired text-speech data $\{X, Y\}$가 있다고 하자
- $X=\{x_{1}, x_{2}, x_{3},...,x_{T}\}$ : aligned text, $Y$ : pre-trained discrete codec encoder (EnCodec)으로 얻어지는 speech representation
- 이때 $Y=C_{1:T, 1:N} \in \mathbb{R}^{T\times N}$을 text length와 동일한 downsampled utterance length로 취급함
- $N$ : frame의 channel 수 - 그러면 각 acoustic code matrix row-vector는 $C_{t,:}$의 frame $t$에 대한 8개의 code를 represent 하고, 각 acoustic code matrix의 column-vector $C_{:,j}$는 $j$-th codebook의 code sequence를 의미함
- $j\in \{1,2,...,N\}$ - 한편 real-world scenario에서는 prompt text를 얻기 어려우므로, MobileSpeech에서는 VALL-E와 달리 target speech를 guide 하기 위해 text-agnostic speech prompt를 도입함
- 구체적으로 time length $T$의 sequence에 대해 length가 $k$인 segment를 randomly extract 하여 arbitrary length의 prompt를 simulate 함
- 이때 $k$는 다음 range에 속함:
(Eq. 1) $\frac{T}{3}\leq k \leq \frac{2\times T}{3}$ - Split point $k$가 select 되면, 해당하는 prompt speech $Y_{prompt}$와 target text를 얻을 수 있음:
(Eq. 2) $Y_{prompt}=C_{1:k,1:N},\,\, X_{target}=X_{k:T}$ - 결과적으로 Speech Codec Mask Decoder (SMD) module의 objective는 다음의 conditional probability function을 최대화하는 것이 됨:
(Eq. 3) $P(C_{k:T, 1:N}|C_{1:k, 1:N},X_{k:T};\theta)$
- $X=\{x_{1}, x_{2}, x_{3},...,x_{T}\}$ : aligned text, $Y$ : pre-trained discrete codec encoder (EnCodec)으로 얻어지는 speech representation
- RVQ-based speech discretization token을 사용하면 finer RVQ-level의 token이 perceptual quality에 less contribute 하는 hierarchical token structure가 유도됨
- 이를 통해 token sequence의 joint distribution을 효과적으로 factorization 하고 approximation 할 수 있음
- 따라서 MobileSpeech는 generation process를 first channel generation과 remaining channel generation의 두 부분으로 나누어서 수행함:
(Eq. 4) $P(C_{k:T,1:N}|C_{1:k,1:N},X_{k:T};\theta)=P(C_{k;T,1}|C_{1:k,1:N},X_{k:T};\theta)\times \prod_{j=2}^{N}P(C_{k:T,j}|C_{1:k,1:N},X_{k:T};\theta)$ - 먼저 first channel $P(C_{k:T,1}|C_{1:k,1:N},X_{k:T};\theta)$를 생성하기 위해 mask-based generative model을 parallel decoder로 채택함
- 이때 codec level $i$에 대한 cosine schedule에 따라 mask $M_{i}\in\{0,1\}^{T}$를 sampling 함
- 즉, $u\sim \mathcal{U}\left[0,\frac{\pi}{2}\right]$에서 masking ratio $p=\cos(u)$를 sampling 한 다음, mask $M_{i}\sim \text{Bernoulli}(p)$를 얻음 - $M_{i}$을 $i$-th level에서 mask 되는 portion, $\bar{M}_{i}$를 $i$i-th level에서 unmask 된 portion이라고 하면, 해당 예측은 prompt speech와 target text의 concatenation과 first channel의 unmasked portion으로 refine 됨:
(Eq. 5) $P(M_{1}C_{k:T,1}|C_{1:k,1:N},X_{k:T},\bar{M}_{1}C_{k:T,1};\theta)$
- 이때 codec level $i$에 대한 cosine schedule에 따라 mask $M_{i}\in\{0,1\}^{T}$를 sampling 함
- 추론 시에는 text에서 first-layer discrete token이 직접 얻어지므로, training 중에 masked environment를 simulation 하기 위해서는 higher-confidence token을 iteratively select 하는 multiple iteration이 필요함
- 이때 iteration 수를 줄이기 위해 논문은 training process에서 certain probability를 통해 first channel의 acoustic token을 completely mask 함
- 특히 first token masking은 모델을 easier-to-harder instance로 생성되도록 gudie 하므로 upper limit를 향상함 - 결과적으로 아래와 같이 probability parameter $\alpha$를 통해 first channel generation을 control 함:
(Eq. 6) $P(C_{k:T,1}|C_{1:k,1:N},X_{k:T};\theta)=\alpha P(M_{1}C_{k:T,1}|C_{1:k,1:N},X_{k:T},\bar{M}_{1}C_{k:T,1};\theta)+(1-\alpha)P(M_{1}C_{k:T,1}|C_{1:k,1:N},X_{k:T};\theta)$ - 한편으로 training 중에 remaining channel을 생성하기 위해, random selection process에 weighting mechanism을 incorporate 하여 channel importance가 layer-by-layer로 decrease 하도록 함
- 이를 위해 논문은 [Algorithm 1]과 같은 $P_{rank}$ mechanism을 채택
- 즉, $j$-th channel의 acoustic token을 예측할 때, $j$-th layer $\bar{M}_{j}$의 unmasked portion과 $j$-th layer 이전의 모든 acoustic token을 사용함:
(Eq. 7) $P(M_{j}C_{k:T,j}|C_{1:k,1:N},X_{k:T},C_{k:T,<j},\bar{M}_{j}C_{k:T,j};\theta)$
- 이때 iteration 수를 줄이기 위해 논문은 training process에서 certain probability를 통해 first channel의 acoustic token을 completely mask 함
- Speaker Prompt
- MobileSpeech는 encoder-decoder arhcitecture로 구성되고, prompt speech의 prosodic/timbre information을 capture 할 수 있도록 다양한 prompt strategy를 도입함
- 먼저 duration encoder는 Q-K-V attention layer를 활용하여 다양한 information을 integrate 함
- 이를 위해 prompt acoustic token에서 fine-grained prompt duration을 추출하고 이를 positional information과 함께 prompt duration encoder에 전달함
- 이후 prompt duration은 target text duration 예측을 guide 하는 데 사용됨
- 이를 통해 disfluent speech phenomena의 발생을 개선할 수 있음
- 구조적으로 duration extractor와 duration predictor는 동일한 구조를 따름
- 여기서 text는 normalization layer를 통과한 다음 query에 mapping 되고,
- Query는 prompt acoustic/prompt duration과 함께 Q-K-V attention layer와 convolutional layer를 통해 latent feature를 얻음
- 이후 latent feature는 output result를 생성하기 위해 residual connection을 통해 text에 더해짐
- Decoder에서는 (Eq. 1), (Eq. 2)와 같이 training 중에 target text와 speech에서 length $k$의 sequence를 randomly select 하여 text-independent speech prompt를 형성함
- 이때 model의 robustness를 위해 encoder의 speaker prompt와 decoder의 speaker prompt는 서로 다른 sequence를 사용함 - Speech Mask Codec Decoder (SMD)에서, UniCATS와 같이 모든 input prompt acoustic은 unmask 하고 acoustic token의 original feature를 preserve 함
- 추가적으로 SMD module에 prompt encoder를 통해 acoustic token을 전달하고, target text에 대한 cross-attention을 적용
- 이를 통해 weak condition token으로써 prompt acoustic token의 information을 반영할 수 있도록 하여 contextual capability를 향상
- 먼저 duration encoder는 Q-K-V attention layer를 활용하여 다양한 information을 integrate 함
- Train and Inference
- Training 중에 duration predictor와 duration extractor의 loss $\mathcal{L}_{dur}, \mathcal{L}_{promptdur}$는 Mean Squared Error (MSE)를 통해 최적화됨
- 한편으로 alignment accuracy를 향상하고 input/output 간의 information gap을 줄이기 위해 Montreal Forced Alignment (MFA)를 통해 phoneme duration을 추출함
- 이때 duration은 logarithmic domain에서 예측되어 Gaussian distribution을 유도해 training을 용이하게 함 - SMD module은 $P_{rank}$ strategy에 따라 randomly select 된 first channel과 discrete acoustic token을 기반으로 cross-entropy loss를 적용해 최적화됨
- 여기서 first channel과 $j$-th channel의 loss를 각각 $\mathcal{L}_{smd}^{1}, \mathcal{L}_{smd}^{j}$라고 하자
- 그러면 $2\leq j\leq N$일 때, overall loss $\mathcal{L}$은:
(Eq. 8) $\mathcal{L}=\mathcal{L}_{smd}^{1}+\mathcal{L}_{smd}^{j}+\mathcal{L}_{promptdur}+\mathcal{L}_{dur}$
- 추론 시에는 prompt speech를 original text state에 incorporate 하여 discrete acoustic token을 iteratively 생성함
- 이때 acoustic token의 first channel을 생성하기 위해 SoundStorm의 confidence-based sampling scheme을 활용
- 즉, multiple forward pass를 수행한 다음 각 iteration $i$마다 masked position에 대한 candidate를 sampling 함
- 이후 cosine schedule을 따르는 $P_{i}$에 대해 confidence score를 기준으로 $P_{i}$ candidate를 retain 함
- 나머지 channel에 대해서는 greedy strategy를 활용하여 highest probability를 가진 token을 directly select 함
- 한편으로 alignment accuracy를 향상하고 input/output 간의 information gap을 줄이기 위해 Montreal Forced Alignment (MFA)를 통해 phoneme duration을 추출함
3. Experiments
- Settings
- Dataset : LibriTTS, Mandarin Speech Dataset (internal)
- Comparisons : YourTTS, NaturalSpeech, VALL-E, MegaTTS
- Results
- 먼저 LibriTTS dataset에 대해서 MobileSpeech는 가장 우수한 합성 성능을 달성함
- Mandarin dataset에 대해서도 MobileSpeech가 가장 선호되는 것으로 나타남
- Ablation Study
- 먼저 fine-grained prompt duration을 제거하고, SMD module에서 prompt acoustic token을 input으로만 사용하는 경우를 비교해 보면
- 정량적, 정성적 지표 모두에서 MobileSpeech의 성능이 저하되는 것으로 나타남
- 추가적으로 추론 속도 측면에서, iteration 수는 RTF와 반비례하는 것으로 나타남
- 특히, iteration 수를 늘리는 것이 반드시 성능 향상으로 이어지지는 않음
반응형
'Paper > TTS' 카테고리의 다른 글
댓글