Skip to content

Build Resilient Multi-Layered AudioDecoder Preprocessor Fallback Pipeline #7

Description

@purvanshjoshi

Technical Overview

src/preprocess.py relies on standard torchaudio or dynamic library codecs to decode raw audio signals. In minimal runtime environments or virtual systems where OS-level FFmpeg codecs are missing, standard audio loading throws unhandled decoding errors.

Affected Modules

  • File: src/utils.py & src/preprocess.py

Acceptance Criteria

  1. Platform Independence: Preprocessing succeeds even in minimalist systems lacking native OS-level media codecs.
  2. Format Support: Processes various target formats (WAV, MP3, M4A) and standardizes them to 16kHz mono.
  3. Silent Fallback: Automatically tries alternative Python-native decoders if the default C++ system libraries fail.

Proposed Implementation Approach

Implement a multi-layered fallback loop within our dataset audio parsing module:

def load_audio_resilient(audio_path, target_sr=16000):
    try:
        # Layer 1: Attempt standard torchaudio loading
        import torchaudio
        waveform, sr = torchaudio.load(audio_path)
        # Resample if needed
        # ...
        return waveform
    except Exception as e1:
        try:
            # Layer 2: Fall back to native soundfile loading
            import soundfile as sf
            data, sr = sf.read(audio_path)
            # ...
            return torch.tensor(data).float()
        except Exception as e2:
            # Layer 3: Final fallback to pydub/librosa if installed
            import librosa
            data, sr = librosa.load(audio_path, sr=target_sr)
            return torch.tensor(data)

Severity & Priority

  • Severity: Medium (Enhances cross-environment compatibility)
  • Priority: P2

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions