From 038dac49ec1098bcfc892a3d392f73339e6d375d Mon Sep 17 00:00:00 2001 From: 0xShug0 <231717474+0xShug0@users.noreply.github.com> Date: Thu, 3 Sep 2026 21:14:09 -0400 Subject: [PATCH] Fix Higgs Audio codec decode seams --- src/models/higgs_audio_tts/codec.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/models/higgs_audio_tts/codec.cpp b/src/models/higgs_audio_tts/codec.cpp index 658919d3c..33204ad08 100644 --- a/src/models/higgs_audio_tts/codec.cpp +++ b/src/models/higgs_audio_tts/codec.cpp @@ -62,7 +62,7 @@ constexpr int64_t kCodecDecodeCapacityBucketFrames = 32; constexpr int64_t kCodecHopLength = 960; constexpr int64_t kCodecPadSamples = kCodecHopLength / 2; constexpr int64_t kCodecDecodeWindowFrames = 128; -constexpr int64_t kCodecDecodeOverlapFrames = 8; +constexpr int64_t kCodecDecodeContextFrames = 32; constexpr int64_t kCodecFullDecodeMaxFrames = 512; constexpr int64_t kResidualDilations[] = {1, 3, 9}; @@ -1584,11 +1584,14 @@ HiggsCodecDecodeOutput HiggsCodecRuntime::decode_codes(const std::vector window_codes; int64_t emitted_frames = 0; while (emitted_frames < frames) { - const int64_t window_begin = - std::max(0, emitted_frames - kCodecDecodeOverlapFrames); + const int64_t emit_begin = emitted_frames; const int64_t emit_end = - std::min(frames, emitted_frames + kCodecDecodeWindowFrames); - const int64_t window_frames = emit_end - window_begin; + std::min(frames, emit_begin + kCodecDecodeWindowFrames); + const int64_t window_begin = + std::max(0, emit_begin - kCodecDecodeContextFrames); + const int64_t window_end = + std::min(frames, emit_end + kCodecDecodeContextFrames); + const int64_t window_frames = window_end - window_begin; window_codes.resize(static_cast(window_frames * kCodecCodebooks)); for (int64_t frame = 0; frame < window_frames; ++frame) { const auto src = @@ -1602,9 +1605,9 @@ HiggsCodecDecodeOutput HiggsCodecRuntime::decode_codes(const std::vector