Higgs TTS

Sujin Koo·2026년 8월 8일

Higgs TTS 3 사용 후기: Expressive TTS는 정말 원하는 감정을 그대로 만들어줄까?

오늘은 최근 공개된 TTS 모델 중 꽤 인상적으로 사용했던 Higgs TTS 3에 대해 간단히 소개하고, 실제로 사용하면서 느꼈던 장점과 아쉬운 점들을 공유해보려고 합니다.

Higgs TTS 3는 Boson AI가 2026년 6월 공개한 TTS 모델입니다. 단순히 텍스트를 자연스럽게 읽어주는 것을 넘어, voice agent나 conversational AI에서 사용할 수 있는 expressive speech generation을 주요 목표로 하고 있습니다. 100개 이상의 언어와 zero-shot voice cloning을 지원하며, emotion, style, prosody, pause, sound effect 등을 텍스트 내부의 control token으로 제어할 수 있습니다.

모델 구조

Higgs TTS 3의 backbone은 약 4B 규모의 autoregressive decoder입니다.

최근 audio language model 계열에서 많이 사용되는 것처럼 텍스트와 음성을 모두 token으로 표현하고, text token과 audio token을 autoregressive하게 생성하는 구조를 사용합니다.

구체적으로는 audio를 Higgs Tokenizer를 이용해 25 fps의 8개 codebook으로 표현하고, 이를 text token과 함께 decoder에서 처리합니다. 최종적으로 생성된 audio token을 다시 waveform으로 복원하며, 출력 sample rate는 24 kHz입니다.

즉 구조 자체만 놓고 보면 최근의 audio language model 기반 TTS들과 크게 동떨어져 있지는 않습니다.

제가 Higgs TTS를 흥미롭게 본 이유는 구조 자체보다는 오히려 control과 expressiveness 쪽에 있습니다.


Control Tag

Higgs TTS 3는 텍스트 안에 control token을 넣어서 음성의 특성을 조절할 수 있습니다.

공식적으로 제공되는 tag는 총 43개이며 크게 네 종류로 나뉩니다.

  • Emotion: 21개
  • Prosody: 10개
  • Style: 3개
  • Sound Effect: 9개

예를 들어,

<|emotion:anger|>I can't believe you did that.

과 같이 입력하면 화난 음성으로 생성하도록 유도할 수 있습니다.

Emotion tag로는 다음과 같은 것들이 제공됩니다.

Tag의미
<|emotion:elation|>환희, 강한 기쁨
<|emotion:amusement|>재미, 장난스러움
<|emotion:enthusiasm|>열정, 흥분
<|emotion:determination|>결의, 단호함
<|emotion:pride|>자부심, 자신감
<|emotion:contentment|>만족, 평온
<|emotion:affection|>애정, 따뜻함
<|emotion:relief|>안도
<|emotion:contemplation|>사색, 숙고
<|emotion:confusion|>혼란
<|emotion:surprise|>놀람
<|emotion:awe|>경이, 감탄
<|emotion:longing|>그리움, 갈망
<|emotion:arousal|>강한 욕구·각성
<|emotion:anger|>분노
<|emotion:fear|>공포
<|emotion:disgust|>혐오
<|emotion:bitterness|>원망, 씁쓸함
<|emotion:sadness|>슬픔
<|emotion:shame|>수치심
<|emotion:helplessness|>무력감

감정 이외의 control도 재미있습니다.

예를 들어,

<|style:whispering|>

을 이용해 속삭이게 할 수도 있고,

<|prosody:speed_slow|>

처럼 속도를 바꾸거나,

<|prosody:pitch_high|>

처럼 pitch를 조절할 수도 있습니다.

laughter, crying, sigh, sniff, screaming 같은 sound effect도 지원합니다. 공식 가이드에서는 sound effect token 뒤에 Haha, Ahem, Achoo처럼 해당 소리를 나타내는 표현을 함께 적는 것을 권장합니다.


실제로 써보니 어땠나?

전반적인 음질과 expressiveness는 상당히 괜찮았습니다.

특히 일반적인 TTS의 깨끗하고 안정적인 음성보다는 조금 더 과감한 억양이나 감정 표현이 필요한 데이터를 만들 때 꽤 유용했습니다. Boson AI 역시 Higgs TTS 3를 단순 narration보다 conversational speech에 초점을 둔 모델로 소개하고 있습니다.

공식 Emergent TTS benchmark에서 위와 같이 준수한 성능을 기록하고 있습니다. 다만, 모델이 expressive 하기는 하나 모든 감정을 항상 정확하게 제어하는 모델을 아니라는 인상을 받았습니다.

1. 음성 끝부분에 artifact가 생기는 경우

가장 먼저 발견했던 문제는 음성 끝부분에 불필요한 소리가 생성되는 경우였습니다.

음성을 직접 들어보거나 mel-spectrogram을 확인해보면 발화가 이미 끝났는데 뒤에 아주 짧게

  • 마이크에 바람이 닿는 듯한 소리
  • click 혹은 tick 같은 소리
  • 작은 호흡음
  • 의미 없는 짧은 noise

등이 생성되는 경우가 있었습니다.

특히 제 실험에서는 local inference보다 server를 통해 생성했을 때 이런 현상이 조금 더 자주 관찰되었습니다.

이를 해겨랗고자 아예 마지막 구간의 energy와 speech activity를 확인하여 불필요한 trailing audio를 잘라내도록 처리하고 있습니다. 특히 대규모로 합성하는 경우라면 이런 작은 artifact도 그냥 넘기지 않는 것이 좋습니다. 별것 아닌 것처럼 보여도 training sample에 반복적으로 포함되면 모델이 그것까지 데이터의 특성으로 학습할 수 있기 때문입니다.


2. 발화 앞부분에 존재하지 않는 단어가 생성되는 경우

빈도는 훨씬 적었지만 반대의 문제도 있었습니다.

제가 입력하지 않은

Yes!

같은 짧은 단어나 interjection이 실제 음성 앞부분에 붙어서 생성되는 경우입니다.

전통적인 deterministic TTS라는 관점에서 보면 꽤 이상한 결과지만, Higgs TTS를 audio language model이라는 관점에서 보면 조금 다르게 볼 수 있습니다.

Higgs TTS의 decoder는 text와 audio token을 autoregressive하게 생성하는 구조입니다. 따라서 모델이 단순하게 text를 acoustic feature로 변환한다기보다, 주어진 context에 적절하다고 판단한 speech realization을 생성한다고 볼 수 있습니다.

expressiveness 측면에서는 이것이 장점이 될 수 있지만, 정확하게 입력 transcript와 일치하는 데이터를 생성해야 하는 상황에서는 문제가 됩니다.

그래서 저는 생성한 음성에 대해 다시 ASR 및 추가적인 전처리를 수행하고,

target text ↔ generated speech

가 충분히 일치하는지 확인한 뒤 사용하고 있습니다.


3. 생각보다 Emotion Tag가 강한 Constraint는 아니다

제가 가장 흥미롭게 본 부분입니다.

처음에는

<|emotion:sadness|>

를 넣으면 거의 항상 sad speech가 생성되고,

<|emotion:anger|>

를 넣으면 angry speech가 생성될 것이라고 생각했습니다.

실제로는 그렇게 단순하지 않았습니다.

제가 사용했을 때는 emotion tag 자체보다 문장의 의미나 특정 단어가 최종 음성의 감정 표현에 꽤 강한 영향을 주는 경우가 있었습니다.

예를 들어 최대한 neutral한 음성을 만들고 싶어도 문장에

angry, furious, hate

처럼 강한 감정적 의미를 가진 단어가 들어가 있으면 음성이 조금 더 angry하게 생성되는 경우가 있었습니다.

반대로 emotion tag를 설정했는데도 문장 자체가 해당 감정과 잘 맞지 않으면 감정이 약하게 표현되는 경우도 있었습니다.

이 부분은 Higgs TTS의 구조를 생각하면 꽤 자연스럽게 해석할 수도 있습니다.

Higgs는 emotion classifier 뒤에 단순히 style embedding을 붙이는 형태의 시스템이 아니라 language-model backbone이 text와 audio context를 함께 보고 다음 audio token을 생성하는 모델입니다.

따라서 생성 결과는

Emotion Tag

하나만으로 결정되는 것이 아니라,

Emotion Tag + Text Semantics + Reference Audio + Sampling

등 여러 조건이 함께 작용한다고 보는 편이 더 적절합니다.

즉 emotion tag는 “이 감정으로 반드시 생성하라” 라는 hard constraint라기보다는 “이 방향의 표현을 선호하라” 에 가까운 soft control로 생각하는 것이 실제 사용 경험과 더 잘 맞았습니다.

이러한 특성은 controllability 측면에서는 오히려 문제가 될 수 있습니다.

예를 들어 동일한 문장에 서로 다른 emotion tag를 적용했을 때, 우리가 원하는 것은 text의 semantic content는 그대로 유지하면서 vocal emotion만 독립적으로 변화하는 것입니다. 하지만 실제로는 문장이 가지고 있는 semantic emotion과 emotion tag가 서로 영향을 주면서 원하는 감정으로 생성되지 않는 경우가 발생할 수 있습니다.

따라서 text semantics와 vocal emotion을 얼마나 잘 disentangle할 수 있는가도 expressive TTS에서 하나의 중요한 연구 방향이 될 수 있을 것 같습니다.

특히 최근처럼 language model 기반의 generative TTS를 사용할수록 이러한 문제는 더 중요해지고 있습니다. Language model은 text, context, reference audio 등 여러 정보를 종합적으로 해석하여 음성을 생성하기 때문에 표현력과 자연스러움은 높아질 수 있지만, 반대로 특정 속성 하나만 독립적으로 제어하는 것은 전통적인 TTS 모델보다 어려워질 수 있기 때문입니다.

결국 앞으로의 expressive TTS에서는 단순히 얼마나 자연스럽고 다양한 음성을 생성할 수 있는가뿐만 아니라, content, speaker identity, emotion, prosody등의 요소를 얼마나 독립적이고 일관되게 제어할 수 있는가 역시 더욱 중요한 연구 문제가 될 것 같습니다.


기타사항

  1. 사실 Neutral Emotion Tag는 없다

여기서 꽤 중요한 부분이 하나 있습니다. Higgs TTS 3에서 공식적으로 제공하는 21개의 Emotion tag를 보면 neutral이 없습니다. 따라서 <|emotion:neutral|> 같은 방식으로 neutral speech를 직접 지정할 수 있는 것은 아닙니다. 대신 공식 prosody control에는 <|prosody:expressive_low|> 가 존재합니다. 이는 보다 flat한 delivery를 유도하기 위한 token입니다. 따라서 neutral한 데이터를 만들고 싶다면 개인적으로는 neutral reference audio + semantically neutral text + expressive_low 의 조합을 먼저 실험해보는 것이 더 합리적이라고 생각합니다. 그리고 여기서도 결국 생성된 결과를 emotion classifier 등으로 다시 검증하는 것이 필요합니다.

  1. Tag를 사용할 때 알아두면 좋은 것

공식 prompting guide에서도 tag 사용 위치가 중요하다고 설명합니다. Emotion, style, speed, pitch, expressiveness처럼 문장 전체의 delivery를 바꾸는 tag는 문장 맨 앞에 넣는 것이 권장됩니다.

예를 들어 <|emotion:anger|><|prosody:expressive_high|>I told you not to do that! 처럼 사용하는 방식입니다.

반면 pause나 sound effect는 실제 발생시키고 싶은 위치에 inline으로 넣습니다.

이 규칙을 지키지 않고 아무 위치에 tag를 삽입하면 제어력이 떨어질 가능성이 있기 때문에, tag가 잘 동작하지 않는다고 판단하기 전에 prompt format부터 확인해보는 것이 좋습니다.

  1. Reference Audio도 중요하다

Higgs TTS는 zero-shot voice cloning을 지원하기 때문에 reference audio를 넣어 원하는 speaker의 목소리를 생성할 수 있습니다. 이때 reference audio의 영향도 무시할 수 없습니다.

공식 문서에서도 reference audio와 함께 reference transcript를 제공하면 cloning quality가 유의미하게 개선된다고 안내하고 있습니다.

실제로 사용해보면 reference audio가 좋지 않을 경우 최종 생성 음성에서도 문제가 나타나는 경우가 있습니다.

예를 들어 reference에

  • background noise
  • room reverberation
  • clipping
  • 지나치게 강한 emotion
  • 불안정한 volume

등이 포함돼 있으면 생성 음성에서도 비슷한 acoustic characteristic이 나타날 수 있습니다.

따라서 voice cloning용 reference를 사용할 때는 단순히 “목소리가 비슷한가?”만 보는 것이 아니라 recording condition과 speaking style까지 함께 확인하는 것이 좋습니다.


결론

개인적으로는 expressive speech가 필요한 경우 Higgs TTS는 상당히 매력적인 모델이라고 생각합니다.

특히

  • 감정 음성 데이터 생성
  • conversational agent
  • character speech
  • audiobook / dialogue
  • expressive voice agent

같은 분야에서는 일반적인 TTS보다 훨씬 다양한 speech behavior를 만들어볼 수 있습니다.

100개 이상의 언어를 지원하고 Korean도 공식 지원 언어에 포함되어 있습니다. 다만, Higgs TTS는 tag를 통해 다양한 감정과 prosody를 제어할 수 있지만 최종 생성 결과는 tag 하나만이 아니라 text semantics, reference audio, generation sampling 등 여러 조건의 영향을 함께 받습니다.

과거의 TTS가 주로 “주어진 문장을 얼마나 정확하고 자연스럽게 읽느냐” 의 문제였다면, 최근의 audio language model 기반 TTS는 점점 “주어진 context를 어떻게 해석하고 어떤 방식으로 연기하느냐” 의 문제로 이동하고 있습니다. Higgs TTS의 강점인 expressiveness는 바로 여기에서 나오지만, 동시에 우리가 원하는 데이터를 정확하게 통제하기 어렵게 만드는 원인이 되기도 합니다.

그래서 생성 후 다시 검증하는 과정이 반드시 필요하다는 점을 유의하여 사용하시면 좋을 것 같습니다.


참고 자료

  • Boson AI, Higgs TTS 3: Beyond Reading, Toward Real Speech for Voice AI (Boson AI)
  • Boson AI, Higgs TTS 3 Model Card (Hugging Face)
  • Higgs TTS 3 Prompting Guide (Hugging Face)
  • SGLang-Omni, Higgs TTS Cookbook (SGLang)
  • Boson AI Higgs Audio GitHub Repository (GitHub)
profile
AI 😎

0개의 댓글