funasr_onnx streaming Paraformer returns inconsistent structures for empty results
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 68/100
Hướng nghiên cứu
Đọc funasr_onnx/paraformer_online_bin.py, đặc biệt là phần chunking của lệnh gọi cuối quanh các dòng 172-186, nơi các kết quả được gộp vào res = {}, và so sánh các giá trị trả về rỗng của đường infer không phải lần cuối và đường cuối một chunk duy nhất. Issue đã kèm một script tái hiện với đầu vào tĩnh lặng và chunk_size=[5, 10, 5]; hãy chạy nó để thấy cả ba hình thức trả về. Lưu ý rằng hợp đồng trả về chính xác vẫn chưa được maintainer xác nhận (issue đã yêu cầu điều đó), vì vậy một bình luận xác nhận hình thức đích ([]) trước khi gửi PR cùng với một bài kiểm thử hồi quy là con đường an toàn để hoàn tất.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Python
- Star
- 20.9k
- Fork
- 2.1k
- Merge trung bình
- 1 ngày 3 giờ
- Pull request đã merge (30 ngày)
- 46
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của modelscope/FunASR
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
modelscope/FunASR#3801 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
modelscope/FunASR#3796 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`SentencepiecesTokenizer.ids2tokens` ignores `token_list` - root cause of the paraformer-en gibberish in #3040Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
modelscope/FunASR#3780 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
modelscope/FunASR#3762 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Bug: blank lines in wav.scp / jsonl file lists crash prepare_data_iterator (IndexError / JSONDecodeError)Có thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởneeds feedback
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
modelscope/FunASR#3757 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của modelscope/FunASR
Issue tương tự
-
HandyModRTransform.deriv3 is wrong for m > 2Có thể đã có người làm @SajalDevX đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
read_messages: the first read after subscribe/psubscribe returns no messages even when some are waitingCó thể đã có người làm @matheussilvano đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 80/100
The-Swarm-Corporation/swarms-framework-docs#399 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bump patch
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
autowarefoundation/autoware_carla_scenario#1321 ·
Maintainer thường phản hồi trong vòng 1 ngày