Skip to content

feat: add senselab VAD, eGeMAPS, and embedding processors (#566)#1169

Open
Chelsy-AI wants to merge 1 commit into
sunlabuiuc:masterfrom
Chelsy-AI:feat/senselab-processor
Open

feat: add senselab VAD, eGeMAPS, and embedding processors (#566)#1169
Chelsy-AI wants to merge 1 commit into
sunlabuiuc:masterfrom
Chelsy-AI:feat/senselab-processor

Conversation

@Chelsy-AI

Copy link
Copy Markdown

Closes #566

Summary

Adds three FeatureProcessor subclasses wrapping senselab for voice/speech analysis in pyhealth/processors/senselab_processor.py:

  • SenselabVADProcessor — removes non-speech segments, returns speech-only waveform tensor
  • SenselabEGeMAPSProcessor — extracts 88 hand-crafted eGeMAPS acoustic features
  • SenselabEmbeddingProcessor — extracts deep neural embeddings via WavLM or ECAPA-TDNN

All three follow the existing AudioProcessor pattern: lazy imports, ImportError with install hint, process() takes a file path, returns a torch.Tensor. Processors are registered in the processor registry and exported from __init__.py.

Tests are in tests/processors/test_senselab_processor.py using pytest.importorskip("senselab") so they skip gracefully in environments where senselab is unavailable.

Note on dev environment

senselab>=1.3.0 requires torch>=2.8.0 with CUDA libraries (~3GB), which conflicts with available disk space on GitHub Codespaces alongside PyHealth's own dependencies. Local macOS testing is blocked by llvmlite 0.47 requiring LLVM 20 while Homebrew ships LLVM 22. Happy to test in a larger environment if maintainers can advise on the recommended dev setup for audio dependencies.

@jhnwu3

jhnwu3 commented Jun 28, 2026

Copy link
Copy Markdown
Collaborator

Hey, do you mind giving more context for what this is for?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Integrate senselab for speech analysis in health

2 participants