Probabilistic machine learning project for lyric/dramatic voice structure prediction.
The aim of this work is to use Bayesian inference to explore this theme:
Given a known voice type and a set of vocalizations from a singer unseen during training, estimate the probability that the singer is lyric or dramatic. Then we study how uncertainty changes as more vocalizations from that singer are observed.
- Python 3.9
- packages listed in
requirements.txt
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtThe raw workbook used by the project is committed here:
data/raw/Timbre-Nov-21-SciRep-All-Data.xlsx
Processed tables are generated by the pipeline:
data/processed/vocalization_table.csv
data/processed/singer_level_table.csv
We took raw data from https://www.nature.com/articles/s41598-022-22821-w#data-availability
From the repository root:
source .venv/bin/activate
bash scripts/run_pipeline.shThis runs the complete pipeline and the evaluation with seed 2026.
Pipeline details can be found inside the scripts/ folder
outputs/tables/final_metrics.csv
outputs/tables/bootstrap_intervals.csv
outputs/tables/mcmc_diagnostics_summary.csv
outputs/tables/uncertainty_by_m.csv
outputs/figures/test_uncertainty_vs_m.png
outputs/models/final_train_model_idata.nc
outputs/models/final_train_model_metadata.json
EDA and baseline outputs are written under:
outputs/tables/
outputs/figures/
- known voice type: soprano, tenor, baritone, bass
- target class: lyric vs dramatic
- main features:
PHE,SC - model: one hierarchical Bayesian model indexed by voice type
- covariance: diagonal
python -m pytest -q -p no:cacheprovider