From 174de2d7bdcd94411f7514896d6f841c69d166f6 Mon Sep 17 00:00:00 2001 From: Dhevenddra Date: Fri, 31 Jul 2026 14:38:09 +0530 Subject: [PATCH] fix: match audio and video extensions case-insensitively Path.suffix preserves case while AUDIO_EXTENSIONS and VIDEO_EXTENSIONS are lowercase, so list_files dropped RECORDING.WAV and similar without a warning. Recorders, phones and camera firmware commonly write uppercase extensions, so a directory of them scanned as empty and every command reported success having processed nothing. merge_lab and transcribe re-filter on AUDIO_EXTENSIONS after calling list_files, so they carried the same comparison. --- fish_audio_preprocess/cli/merge_lab.py | 4 +++- fish_audio_preprocess/cli/transcribe.py | 4 +++- fish_audio_preprocess/utils/file.py | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/fish_audio_preprocess/cli/merge_lab.py b/fish_audio_preprocess/cli/merge_lab.py index 4267def..fbde8e4 100644 --- a/fish_audio_preprocess/cli/merge_lab.py +++ b/fish_audio_preprocess/cli/merge_lab.py @@ -24,7 +24,9 @@ def merge_lab( recursive: bool, ): audio_files = list_files(input_dir, recursive=recursive) - audio_files = [str(file) for file in audio_files if file.suffix in AUDIO_EXTENSIONS] + audio_files = [ + str(file) for file in audio_files if file.suffix.lower() in AUDIO_EXTENSIONS + ] results = [] for audio_file in tqdm(audio_files): # logger.info(f"Processing {audio_file}") diff --git a/fish_audio_preprocess/cli/transcribe.py b/fish_audio_preprocess/cli/transcribe.py index 8fe6dff..2ac771e 100644 --- a/fish_audio_preprocess/cli/transcribe.py +++ b/fish_audio_preprocess/cli/transcribe.py @@ -95,7 +95,9 @@ def transcribe( logger.info(f"Transcribing audio files in {input_dir}") # 扫描出所有的音频文件 audio_files = list_files(input_dir, recursive=recursive) - audio_files = [str(file) for file in audio_files if file.suffix in AUDIO_EXTENSIONS] + audio_files = [ + str(file) for file in audio_files if file.suffix.lower() in AUDIO_EXTENSIONS + ] if len(audio_files) == 0: logger.error(f"No audio files found in {input_dir}.") diff --git a/fish_audio_preprocess/utils/file.py b/fish_audio_preprocess/utils/file.py index ae0cb2c..82bfc8e 100644 --- a/fish_audio_preprocess/utils/file.py +++ b/fish_audio_preprocess/utils/file.py @@ -72,7 +72,11 @@ def list_files( ) if extensions is not None: - files = [f for f in files if f.suffix in extensions] + # Match case-insensitively. Recorders, cameras and phones routinely + # write .WAV/.MP3/.MP4, and Path.suffix preserves that case, so an + # exact match silently skipped those files. + extensions = {ext.lower() for ext in extensions} + files = [f for f in files if f.suffix.lower() in extensions] if sort: files = sorted(files)