Bug: blank lines in wav.scp / jsonl file lists crash prepare_data_iterator (IndexError / JSONDecodeError)
Les mainteneurs répondent en général sous 1 jour
Une pull request liée a déjà été fusionnée.
- #3758 par @Lesereingrape — fusionnée
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 85/100
Piste de recherche
Commencez dans funasr/auto/auto_model.py, au niveau de prepare_data_iterator(), en particulier dans les branches d’analyse de .jsonl et de id/data décrites dans l’issue. Exécutez la reproduction fournie avec des lignes vides et des lignes ne contenant que des espaces, à la fois pour wav.scp et pour data.jsonl. C’est terminé lorsque les lignes vides sont ignorées et que les deux appels renvoient les deux IDs et chemins de données attendus sans produire l’une ou l’autre exception.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
🐛 Bug
AutoModel.generate() with a file list (wav.scp, text.txt, file.jsonl, ...) crashes if the list contains a blank or whitespace-only line. prepare_data_iterator() in funasr/auto/auto_model.py iterates over every line without skipping empty ones:
- the
id \t databranch doeslines = line.strip().split(maxsplit=1)and then indexeslines[0], so an empty line raisesIndexError: list index out of range; - the
.jsonlbranch callsjson.loads(line.strip())on the empty line and raisesjson.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0).
Blank lines are easy to produce in practice — lists concatenated from several sources, lists edited by hand, or files written with an extra separator line — and one of them aborts the whole batch instead of being ignored.
To Reproduce
- Install from source:
pip install -e . - Run the snippet below (it calls
prepare_data_iteratordirectly, so no model weights or download are needed). - See
IndexErrorfor the.scplist andJSONDecodeErrorfor the.jsonllist.
Code sample
from funasr.auto.auto_model import prepare_data_iterator
open("wav.scp", "w", encoding="utf-8").write("utt1 /a.wav\n\nutt2 /b.wav\n")
open("data.jsonl", "w", encoding="utf-8").write(
'{"key": "k1", "source": "/a.wav"}\n\n{"key": "k2", "source": "/b.wav"}\n'
)
prepare_data_iterator("wav.scp") # IndexError: list index out of range
prepare_data_iterator("data.jsonl") # json.decoder.JSONDecodeError
The same crash reaches users through model.generate(input="wav.scp").
Expected behavior
Blank lines carry no utterance, so they should be skipped; the two real entries should come back as (['utt1', 'utt2'], ['/a.wav', '/b.wav']) and (['k1', 'k2'], ['/a.wav', '/b.wav']), exactly as they do when the blank line is deleted manually.
Error logs
Traceback (most recent call last):
File "repro.py", line 8, in <module>
prepare_data_iterator("wav.scp")
File ".../funasr/auto/auto_model.py", line 479, in prepare_data_iterator
data = lines[1] if len(lines) > 1 else lines[0]
IndexError: list index out of range
Traceback (most recent call last):
File "repro.py", line 9, in <module>
prepare_data_iterator("data.jsonl")
File ".../funasr/auto/auto_model.py", line 474, in prepare_data_iterator
lines = json.loads(line.strip())
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Environment
- OS: Windows 11 26200 (the file-list reader is pure Python, so this reproduces on Linux too)
- Python version: 3.11.14
- FunASR version: source
mainat66d7a4c264a5993a2a63ed00c1f402c296ee521a - ModelScope version: not used by this code path
- PyTorch / torchaudio version: 2.14.1+cpu
- Install method (
pip, source, Docker): source,pip install -e .equivalent - Device (
cuda,cpu,mps): cpu - GPU model: n/a
- CUDA/cuDNN version: n/a
- Docker image tag, if used: n/a
Audio details
No audio is needed — the crash happens while parsing the list file itself.
- Langage dominant
- Python
- Étoiles
- 20.7k
- Forks
- 2.1k
- Merge moyen
- 23 h 18 min
- PR mergées (30 j)
- 38
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de modelscope/FunASR
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
modelscope/FunASR#3762 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
modelscope/FunASR#3730 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
modelscope/FunASR#3704 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
没有vllm时使用fun-asr-nano每次都重新加载模型Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertebug needs feedback
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
modelscope/FunASR#3401 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 28/100
modelscope/FunASR#3777 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de modelscope/FunASR
Issues similaires
-
`lvm_compact` has no self-hosted twin, and `docs/158` §5 says every language-face component mustOuvertebug sev-3 vm
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
sierra-research/tau2-bench#635 ·
Les mainteneurs répondent en général sous 1 jour
-
The add-ssm-model skill requires a Cython simulator; the contributing guide allows Python onesPeut-être pris @fmuia l’a pris aujourd’hui. Ouvertedocumentation skill
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
lnccbrown/ssm-simulators#406 ·
Les mainteneurs répondent en général sous 4 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 95/100
btclib-org/btclib-ecc#309 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
autowarefoundation/autoware_carla_scenario#281 ·
Les mainteneurs répondent en général sous 1 jour