Control tags (<|emotion:...|>, <|style:...|>, <|prosody:...|>) shift the speaker's timbre — happens both with and without voice cloning

#20
by Ankerf - opened

Note: I have separately reported the intermittent silence / infinite-repetition
that also occurs when using tags — this issue is NOT about that. It focuses on a
different symptom: timbre drift.

Environment

  • Model: Higgs-Audio-V3 (self-hosted)
  • API: OpenAI-compatible POST /v1/audio/speech
  • Fixed sampling params: temperature=0.6, repetition_penalty=1.3, seed=42
  • Only variable: a single control tag prepended to the SAME input text
  • Tag types tested: <|emotion:xxx|> (anger / elation / sadness / fear / ...),
    <|style:whispering|>, <|prosody:expressive_high|>

Symptom: adding a control tag changes the speaker's timbre (with AND without cloning)

We isolate "tag present vs. absent" as the only variable — same seed, same
sampling params, same text — and compare two modes.

A. Voice-clone mode (ref_audio provided)

Same reference voice; only the leading <|emotion:xxx|> changes. Deviation from
baseline (no tag), measured as spectral-envelope cosine distance + median F0:

  • baseline: F0 ~= 181.8 Hz (reference)
  • <|emotion:anger|>: F0 ~= +7.62 semitones, timbre drift ~= 21.3%
  • <|emotion:elation|>: F0 ~= +8.46 semitones, timbre drift ~= 16.7%
  • <|emotion:relief|>: F0 ~= +4.47 semitones, timbre drift ~= 14.8%

Perceptually, several emotion tags make it sound like a DIFFERENT speaker, not the
same speaker expressing an emotion.

Input text (zh): 大家好,欢迎回到我的频道!今天我要给你们带来超级精彩的内容!
("Hi everyone, welcome back to my channel! Today I'm bringing you super exciting content!")

B. No-clone mode (no ref_audio, default voice)

Even with no cloning at all, simply prepending <|emotion:...|> / <|style:...|>
/ <|prosody:...|> makes the speaker's F0, formants, and accent audibly deviate
from the baseline (no-tag) output.

Input text (zh): 今天我想和你说一件事情,希望你能好好听我把话讲完。
("There's something I want to tell you today; I hope you'll hear me out.")

Expected vs. actual

  • Expected: the tag adds the emotion/style while KEEPING the speaker's timbre stable.
  • Actual: the timbre itself changes (pitch, formants, sometimes perceived identity).

Questions for the maintainers

  1. Is this timbre drift the intended behavior of control tags? Is there a
    recommended way to apply emotion/style while keeping the speaker timbre stable?
  2. What is the officially supported tag set (valid values for emotion / style
    / prosody)? Are certain tags known to shift timbre more than others?

ATTACHMENTS (audio — same text, only the tag differs)

Reference voice used for clone mode:

A) Clone mode (ref_audio = the reference voice above):

  • (no tag — baseline)

  • (<|emotion:anger|>, +7.62 st / drift 21.3%)

  • (<|emotion:elation|>, +8.46 st / drift 16.7%)

  • (<|emotion:relief|>, +4.47 st / drift 14.8%)

B) No-clone mode (no ref_audio, default voice):

  • (no tag — baseline)

  • (<|emotion:enthusiasm|>)

  • (<|emotion:elation|>)

  • (<|emotion:sadness|>)

  • (<|emotion:anger|>)

  • (<|emotion:surprise|>)

  • (<|emotion:fear|>)

  • (<|emotion:disgust|>)

  • (<|style:whispering|>)

  • (<|prosody:expressive_high|>)

Sign up or log in to comment