Skip to content

long audio quality degradation #7

Description

@mzbac

using pip package and transcribe the audio 92 from dataset voxmlx --audio obama_longest_idx92.wav, it generated the result

They can't simply ignore the talents of half their people. And as husbands and fathers and brothers, we have to step up, because every girl's life matters, every daughter deserves the same chance as our sons, every woman should be able to go about her day, to walk the streets or ride the bus and be safe and be treated with respect and dignity. She deserves that. One of the favorite things about this trip for me has been to sleep all these incredible women in their forces.

but I have tried voxtral.c it generated the correct output

They can't simply ignore the talents of half their people. And as husbands and fathers and brothers, we have to step up, because every girl's life matters, every daughter deserves the same chance as our sons, every woman should be able to go about her day, to walk the streets or ride the bus and be safe and be treated with respect and dignity. She deserves that. And one of the favorite things about this trip for me has been to see all these incredible Indian women in the armed forces. Including the person who commanded the guard that greeted me when I arrived. It's remarkable, and it's a sign of great strength and great progress.

looks like some sliding window issues, haven't dig in the details but codex patch something, seems fix the issue:

diff --git a/voxmlx/cache.py b/voxmlx/cache.py
@@
-            trim_size = self._idx - self.max_size + 1
+            trim_size = self._idx + keys.shape[2] - self.max_size

diff --git a/voxmlx/model.py b/voxmlx/model.py
@@
-        x = self.encoder(mel)  # [1, T/2, encoder_dim]
+        x = self.encoder.forward_conv(mel.astype(self.encoder.conv1.weight.dtype))
+        seq_len = x.shape[1]
+        if seq_len == 0:
+            return mx.zeros((0, self.language_model._dim), dtype=x.dtype)
+        encoder_window = max(1, self.encoder.sliding_window)
+        chunk_size = max(1, min(256, encoder_window))
+        cache = [RotatingKVCache(encoder_window) for _ in range(len(self.encoder.layers))]
+        chunks = []
+        for start in range(0, seq_len, chunk_size):
+            end = min(seq_len, start + chunk_size)
+            chunks.append(self.encoder.forward_transformer(x[:, start:end, :], cache=cache))
+        x = mx.concatenate(chunks, axis=1)
         x = x[0]
@@
-            encoder_cache = [RotatingKVCache(100_000) for _ in range(len(self.encoder.layers))]
+            encoder_window = max(1, self.encoder.sliding_window)
+            encoder_cache = [RotatingKVCache(encoder_window) for _ in range(len(self.encoder.layers))]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions