Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Bug: blank lines in wav.scp / jsonl file lists crash prepare_data_iterator (IndexError / JSONDecodeError)

Ouverte Adaptée aux débutants
#3,757 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

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
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
backend

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

needs feedback

🐛 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 data branch does lines = line.strip().split(maxsplit=1) and then indexes lines[0], so an empty line raises IndexError: list index out of range;
  • the .jsonl branch calls json.loads(line.strip()) on the empty line and raises json.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

  1. Install from source: pip install -e .
  2. Run the snippet below (it calls prepare_data_iterator directly, so no model weights or download are needed).
  3. See IndexError for the .scp list and JSONDecodeError for the .jsonl list.

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 main at 66d7a4c264a5993a2a63ed00c1f402c296ee521a
  • 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

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de modelscope/FunASR

Toutes les issues de modelscope/FunASR

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.