funasr_onnx streaming Paraformer returns inconsistent structures for empty results
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 68/100
Línea de trabajo
Lee funasr_onnx/paraformer_online_bin.py, especialmente el chunking de la llamada final alrededor de las líneas 172-186, donde los resultados se fusionan en res = {}, y compara los retornos de resultado vacío del camino infer no final y el camino final de un solo chunk. El issue ya incluye un script de reproducción con entrada de silencio y chunk_size=[5, 10, 5]; ejecútalo para ver las tres formas de retorno. Ten en cuenta que el contrato exacto de retorno aún no está confirmado por los maintainers (el issue lo pide), así que un comentario que confirme la forma objetivo ([]) antes de enviar el PR con un test de regresión es el camino seguro para terminarlo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
funasr_onnx.paraformer_online_bin.Paraformer.__call__ returns different structures when there is no recognition result, depending on which path is taken:
| case | return value |
|---|---|
non-final call, no tokens (infer → asr_res = []) |
[] |
| final call handled as one chunk, decoder runs but text is empty | [{'preds': ['', []]}] |
final call split into two chunks, neither chunk has a result (lines 172-186 merge into res = {}) |
[{}] |
The last case means callers that read res[0]["preds"] after checking if res: hit KeyError: 'preds'; they have to check for an empty dict as well.
Reproduction
main (fbbfe01), iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online v2.0.5 exported to ONNX, onnxruntime 1.20.1, CPU. Silence is enough to trigger it; chunk_size=[5, 10, 5] (the package default) is used, so this is unrelated to #3789.
import numpy as np
from funasr_onnx.paraformer_online_bin import Paraformer
model = Paraformer(model_dir, batch_size=1, chunk_size=[5, 10, 5], quantize=False)
for n_final in (9600, 16000):
cache = {}
r1 = model(np.zeros(9600, np.float32), param_dict={"cache": cache, "is_final": False})
r2 = model(np.zeros(n_final, np.float32), param_dict={"cache": cache, "is_final": True})
print(n_final, r1, r2)
Output:
9600 [] [{'preds': ['', []]}]
16000 [] [{}]
Question
What is the intended return value when there is no result? Returning [] in the split-final path, consistent with the non-final path, looks simplest, but I am not sure whether existing callers rely on [{}] or on [{'preds': ['', []]}]. If you confirm the expected contract, I can send a small PR with a regression test.
- Lenguaje dominante
- Python
- Estrellas
- 20.9k
- Forks
- 2.1k
- Merge medio
- 1 d 3 h
- PR fusionados (30 d)
- 46
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de modelscope/FunASR
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
modelscope/FunASR#3801 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
modelscope/FunASR#3796 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
`SentencepiecesTokenizer.ids2tokens` ignores `token_list` - root cause of the paraformer-en gibberish in #3040Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
modelscope/FunASR#3780 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
modelscope/FunASR#3762 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Bug: blank lines in wav.scp / jsonl file lists crash prepare_data_iterator (IndexError / JSONDecodeError)Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoneeds feedback
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
modelscope/FunASR#3757 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de modelscope/FunASR
Issues similares
-
Backend issue lists report in-patch warnings and out-of-patch errors as not publishablePosiblemente ocupada @RaphaelFakhri la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
mozilla/code-review#3794 ·
Los mantenedores suelen responder en 1 día
-
[oblt-aw][autodoc] Update docs that still describe the security registry as emptyPosiblemente ocupada @github-actions la tomó hoy. Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
[Bug] adb backup script reports "Done" & exits 0 when the backup failsPosiblemente ocupada @bhattmanthan la tomó hoy. Abiertorequest-issue-assignment
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
OWASP/mastg#4034 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
-
agent-ui bug p2
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
amd/gaia#6580 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
correction metadata
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
acl-org/acl-anthology#10768 · 1 comentario ·
Los mantenedores suelen responder en 1 día