Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

TDT beam search fails above ~40-90s of audio: "zero-duration expansion did not reduce score" (greedy on the same audio is fine)

Abierto
#61 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
58/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
cpp

Línea de trabajo

Reproduce el fallo mediante parakeet_capi_transcribe_pcm_nbest_json usando el caso PCM mono de 16 kHz proporcionado y compáralo después con los puntos de entrada greedy y con audio truncado. Sigue el recorrido de TDT beam-search alrededor de la invariante notificada “zero-duration expansion did not reduce score” y el comportamiento del modelo tdt-0.6b-v3. La tarea estará terminada cuando la decodificación N-best de entradas largas ya no se aborte, mientras el comportamiento existente para entradas greedy y más cortas permanezca intacto.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

parakeet_capi_transcribe_pcm_nbest_json aborts on longer inputs with

tdt_beam_search: zero-duration expansion did not reduce score

while greedy decoding of the same audio with the same model succeeds. It reads like an internal invariant that long inputs violate, rather than a bad-input case.

Environment

  • parakeet.cpp v0.5.0, released lib-macos-metal-arm64 bundle (ABI 6)
  • macOS arm64, Metal backend
  • Model: mudler/parakeet-cpp-gguf → tdt-0.6b-v3-q4_k.gguf
  • Audio: 16 kHz mono float PCM, AMI meeting recordings (~100s each)

What fails

22 of 23 AMI clips (~100s each) fail. One succeeded, and only at beam 4.

It is not a beam-width interaction — beam 1 fails identically to beam 8:

beam_size=1  FAIL   beam_size=2  FAIL   beam_size=4  FAIL   beam_size=8  FAIL

What succeeds on the identical audio

  • parakeet_capi_transcribe_pcm (greedy) — 242 words, no error
  • parakeet_capi_transcribe_pcm_batch_json (greedy + timestamps) — 242 words, 242 word records
  • The same N-best call on the first 30s or 40s of that same file

So the encoder, the model and the audio are all fine; it is specific to the beam search path at length.

Threshold varies with content, not a fixed limit

Truncating each file to N seconds and decoding at beam 4:

file length 30s 40s 50s 60s 70s 80s 90s
ES2004a_FEE013 100.6s ok ok ok fail fail fail fail
EN2002c_MEE071 100.0s ok ok ok ok ok ok fail
ES2004b_MEO015 105.7s ok ok fail fail fail fail fail

All three pass at 30s and 40s and fail before 100s, at different points — consistent with something accumulating over frames rather than a hard cap.

Possibly model-specific

The same 100.6s clip decodes fine at beam 2, 4 and 8 with tdt_ctc-1.1b-q4_k.gguf. Only tdt-0.6b-v3 failed here, so it may be an interaction between that checkpoint's duration predictions and the expansion check.

Minimal reproduction

# ctypes against libparakeet.dylib from the v0.5.0 release
ptr = lib.parakeet_capi_transcribe_pcm_nbest_json(
    ctx, samples_p, len(samples), 16000, 4, 1, 1, None)
# ptr is NULL; parakeet_capi_last_error(ctx) reports the message above.
# Truncating `samples` to 40s makes the same call succeed.

Possibly related to #55 (error above 5 min), though the threshold here is far lower and the message differs.

Not blocking for us — we moved to transcribe_pcm_batch_json, which gives greedy output with per-word timestamps and no beam search. Reporting because the failure is silent-until-it-isn't for anyone relying on N-best over long audio.

Lenguaje dominante
C++
Estrellas
786
Forks
93
Merge medio
9 d 19 h
PR fusionados (30 d)
4

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de mudler/parakeet.cpp

Todos los issues de mudler/parakeet.cpp

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.