This repository contains a series of Python scripts implementing the Manner of ARTiculation Analysis (MARTA) based in a Gaussian Mixture Variational Autoencoder (GMVAE) with metric learning model for speech feature analysis, specifically manner class articulation, in Parkinson's Disease (PD) research. These scripts focus on different aspects of speech analysis, ranging from unsupervised learning to supervised approaches emphasizing latent space distinctions.
https://www.techrxiv.org/doi/full/10.36227/techrxiv.171084943.31044695
The project includes the following key scripts:
- MARTA: Focuses on analyzing manner class articulations of healthy individuals and evaluating latent space cluster distances between healthy subjects from differents datasets, such as Albayzin and NeuroVoz. This is an unsupervised analysis and the script associated to it is MARTA_unsupervised.py
- MARTA with Supervision: A supervised variant of MARTA, maximizing distances between clusters in the latent space for different conditions (parkinsonian and nosomorphic speech). This study involves two experiments. The first is a supervised studio of the cluster distances (MARTA_Supervised.py). The second is a discriminative power studio based on the manner classes clusters (MARTA-S_classifier.py).
Each script is designed to process speech data, train the MARTA model, and analyze the results, providing insights into the potential indicators of Parkinson's Disease in speech patterns.
To set up the project using Conda, follow these steps:
# Clone the repository
git clone https://github.com/BYO-UPM/MARTA.git
cd MARTA
# Create a Conda environment from the .yml file
conda env create -f environment.yml
# Activate the Conda environment
conda activate your-env-name
Each script can be run independently, depending on the specific analysis you wish to perform. Here are the general steps to follow:
-
Prepare Your Data: Ensure your speech data is correctly formatted and stored in the required directories.
-
Configure Hyperparameters: Adjust the hyperparameters in each script according to your data and analysis needs.
-
Run the Script: Execute the script using a Python interpreter. For example:
python MARTA_unsupervised.py --fold 0 --gpu 1 python MARTA_Supervised.py --fold 0 --gpu 1 python MARTA-S_classifier.py --fold 0 --gpu 1
-
Analyze Results: Check the output files and visualizations generated by the scripts for analysis.
Detailed usage for each script is documented within the script files themselves.
In case you want to train all folds, you can use run_parallel.sh bash script.
In the reproducibility folder, a pickle file for each fold used in the experiments is provided. Each .pkl file is a dictionary with three keys: train_ids, val_ids, test_ids, indicating the patient IDs for each partition.
The final_models_weights directory contains .pt files with the trained model weights. Four versions are available:
- trained_with_albayzin: MARTA trained only with the Albayzin dataset, both unsupervised (MARTA) and supervised (MARTA-S).
- trained_with_albayzin_and_neurovoz: MARTA trained with both the Albayzin and NeuroVoz datasets, in unsupervised (MARTA) and supervised modes (MARTA-S).
Contributions to this project are welcome. Please follow the standard fork-and-pull request workflow on GitHub. If you have any suggestions or improvements, feel free to fork the repository, make your changes, and submit a pull request.
This project is licensed under the MIT License. Please see the LICENSE
file for more details.
For any queries or further assistance, please reach out to Dr. Alejandro Guerrero-López.
If you find our work helpful, please consider citing the paper:
@article{guerrero2024marta,
title={{MARTA}: a model for the automatic phonemic grouping of the parkinsonian speech},
author={Guerrero-L{\'o}pez, Alejandro and Arias-Londo{\~n}o, Juli{\'a}n D and Shattuck-Hufnagel, Stefanie and Godino-Llorente, Juan I},
journal={TechRxiv preprint TechRxiv.171084943.31044695},
year={2024}
}