Spaces:
Runtime error
Runtime error
to python3.9
Browse files- best_model_gradio.ipynb +2 -2
- dataloading.py +7 -7
- gradio_utils.py +3 -5
- preprocessing.py +22 -22
best_model_gradio.ipynb
CHANGED
|
@@ -59,14 +59,14 @@
|
|
| 59 |
"torch.manual_seed(SEED)\n",
|
| 60 |
"\n",
|
| 61 |
"# Dataloading params\n",
|
| 62 |
-
"PATHS: list
|
| 63 |
" \"../data/\",\n",
|
| 64 |
" \"../new_data/JulienNestor\",\n",
|
| 65 |
" \"../new_data/classroom_data\",\n",
|
| 66 |
" \"../new_data/class\",\n",
|
| 67 |
" \"../new_data/JulienRaph\",\n",
|
| 68 |
"]\n",
|
| 69 |
-
"REMOVE_LABEL: list
|
| 70 |
" \"penduleinverse\", \"pendule\", \n",
|
| 71 |
" \"decollage\", \"atterrissage\",\n",
|
| 72 |
" \"plushaut\", \"plusbas\",\n",
|
|
|
|
| 59 |
"torch.manual_seed(SEED)\n",
|
| 60 |
"\n",
|
| 61 |
"# Dataloading params\n",
|
| 62 |
+
"PATHS: list = [\n",
|
| 63 |
" \"../data/\",\n",
|
| 64 |
" \"../new_data/JulienNestor\",\n",
|
| 65 |
" \"../new_data/classroom_data\",\n",
|
| 66 |
" \"../new_data/class\",\n",
|
| 67 |
" \"../new_data/JulienRaph\",\n",
|
| 68 |
"]\n",
|
| 69 |
+
"REMOVE_LABEL: list = [\n",
|
| 70 |
" \"penduleinverse\", \"pendule\", \n",
|
| 71 |
" \"decollage\", \"atterrissage\",\n",
|
| 72 |
" \"plushaut\", \"plusbas\",\n",
|
dataloading.py
CHANGED
|
@@ -7,11 +7,11 @@ from pathlib import Path
|
|
| 7 |
from typing import Callable, Literal, Optional
|
| 8 |
|
| 9 |
def load_dataset(
|
| 10 |
-
paths: list
|
| 11 |
-
remove_label: list
|
| 12 |
sr: int = 22050,
|
| 13 |
-
method
|
| 14 |
-
max_time: float = 4.0)
|
| 15 |
"""Folder dataset in memory loader (return fully loaded pandas dataframe).
|
| 16 |
- For sklearn, load the whole dataset if possible otherwise use `proportion` to only load a part of the dataset.
|
| 17 |
- For pytorch, load the whole dataset if possible otherwise use `proportion` to only load a part of the dataset.
|
|
@@ -31,7 +31,7 @@ def load_dataset(
|
|
| 31 |
|
| 32 |
Args:
|
| 33 |
paths (list[Path]): list of dataset directory to parse.
|
| 34 |
-
remove_label (list
|
| 35 |
shuffle (bool, optional): True to suffle the dataframe. Defaults to True.
|
| 36 |
proportion (float, optional): Proportion of file to load. Defaults to 1.0.
|
| 37 |
sr (int, optional): Sample Rate to resample audio file. Defaults to 22050.
|
|
@@ -41,7 +41,7 @@ def load_dataset(
|
|
| 41 |
Returns:
|
| 42 |
df (pd.DataFrame): A pd.DataFrame with such define column:
|
| 43 |
- absolute_path (str): file-system absolute path of the .wav file.
|
| 44 |
-
- labels (list
|
| 45 |
- ground_truth (str): ground_truth label meaning the last one after _ in the sound filename.
|
| 46 |
- y_original_signal (np.ndarray): sound signal normalize as `float64` and resample with the given sr by `librosa.load`
|
| 47 |
- y_original_duration (float): y_original_signal signal duration.
|
|
@@ -79,7 +79,7 @@ def load_dataset(
|
|
| 79 |
def uniformize(
|
| 80 |
audio: np.ndarray,
|
| 81 |
sr: int,
|
| 82 |
-
method
|
| 83 |
max_time: float = 4.0
|
| 84 |
):
|
| 85 |
if method == "fix_length":
|
|
|
|
| 7 |
from typing import Callable, Literal, Optional
|
| 8 |
|
| 9 |
def load_dataset(
|
| 10 |
+
paths: list,
|
| 11 |
+
remove_label: list = [""],
|
| 12 |
sr: int = 22050,
|
| 13 |
+
method = "fix_length",
|
| 14 |
+
max_time: float = 4.0):
|
| 15 |
"""Folder dataset in memory loader (return fully loaded pandas dataframe).
|
| 16 |
- For sklearn, load the whole dataset if possible otherwise use `proportion` to only load a part of the dataset.
|
| 17 |
- For pytorch, load the whole dataset if possible otherwise use `proportion` to only load a part of the dataset.
|
|
|
|
| 31 |
|
| 32 |
Args:
|
| 33 |
paths (list[Path]): list of dataset directory to parse.
|
| 34 |
+
remove_label (list, optional): list of label to remove. Defaults to None.. Defaults to [""].
|
| 35 |
shuffle (bool, optional): True to suffle the dataframe. Defaults to True.
|
| 36 |
proportion (float, optional): Proportion of file to load. Defaults to 1.0.
|
| 37 |
sr (int, optional): Sample Rate to resample audio file. Defaults to 22050.
|
|
|
|
| 41 |
Returns:
|
| 42 |
df (pd.DataFrame): A pd.DataFrame with such define column:
|
| 43 |
- absolute_path (str): file-system absolute path of the .wav file.
|
| 44 |
+
- labels (list): list of labels defining the sound file (ie, subdirectories and post _ filename).
|
| 45 |
- ground_truth (str): ground_truth label meaning the last one after _ in the sound filename.
|
| 46 |
- y_original_signal (np.ndarray): sound signal normalize as `float64` and resample with the given sr by `librosa.load`
|
| 47 |
- y_original_duration (float): y_original_signal signal duration.
|
|
|
|
| 79 |
def uniformize(
|
| 80 |
audio: np.ndarray,
|
| 81 |
sr: int,
|
| 82 |
+
method = "fix_length",
|
| 83 |
max_time: float = 4.0
|
| 84 |
):
|
| 85 |
if method == "fix_length":
|
gradio_utils.py
CHANGED
|
@@ -3,17 +3,15 @@ from typing import Callable, Optional
|
|
| 3 |
|
| 4 |
import numpy as np
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
| 8 |
import librosa
|
| 9 |
|
| 10 |
import gradio as gr
|
| 11 |
|
| 12 |
-
def predict_gradio(data
|
| 13 |
-
uniform_lambda
|
| 14 |
sklearn_model,
|
| 15 |
label_transform,
|
| 16 |
-
target_sr: int = 22_050)
|
| 17 |
if data is None:
|
| 18 |
return
|
| 19 |
|
|
|
|
| 3 |
|
| 4 |
import numpy as np
|
| 5 |
|
|
|
|
|
|
|
| 6 |
import librosa
|
| 7 |
|
| 8 |
import gradio as gr
|
| 9 |
|
| 10 |
+
def predict_gradio(data,
|
| 11 |
+
uniform_lambda,
|
| 12 |
sklearn_model,
|
| 13 |
label_transform,
|
| 14 |
+
target_sr: int = 22_050):
|
| 15 |
if data is None:
|
| 16 |
return
|
| 17 |
|
preprocessing.py
CHANGED
|
@@ -6,18 +6,18 @@ from sklearn.base import BaseEstimator, TransformerMixin
|
|
| 6 |
from typing import Callable, Optional
|
| 7 |
|
| 8 |
class ReductionTransformer(BaseEstimator, TransformerMixin):
|
| 9 |
-
def __init__(self, windows_number: int = 300, statistique
|
| 10 |
self.windows_number = windows_number
|
| 11 |
self.statistique = statistique
|
| 12 |
|
| 13 |
-
def fit(self, X: np.ndarray, y
|
| 14 |
return self
|
| 15 |
|
| 16 |
-
def fit_transform(self, X: np.ndarray, y
|
| 17 |
self.fit(X, y)
|
| 18 |
return self.transform(X, y)
|
| 19 |
|
| 20 |
-
def transform(self, X: np.ndarray, y
|
| 21 |
X_ = X.copy()
|
| 22 |
*c_, size_ = X_.shape
|
| 23 |
windows_size_ = size_//self.windows_number
|
|
@@ -34,14 +34,14 @@ class MeanTransformer(BaseEstimator, TransformerMixin):
|
|
| 34 |
self.windows_number = windows_number
|
| 35 |
self.windows_size = 0
|
| 36 |
|
| 37 |
-
def fit(self, X: np.ndarray, y
|
| 38 |
return self
|
| 39 |
|
| 40 |
-
def fit_transform(self, X: np.ndarray, y
|
| 41 |
self.fit(X, y)
|
| 42 |
return self.transform(X, y)
|
| 43 |
|
| 44 |
-
def transform(self, X: np.ndarray, y
|
| 45 |
X_ = X.copy()
|
| 46 |
*c_, size_ = X_.shape
|
| 47 |
windows_size_ = size_//self.windows_number
|
|
@@ -62,14 +62,14 @@ class StdTransformer(BaseEstimator, TransformerMixin):
|
|
| 62 |
def __init__(self, windows_number: int = 300):
|
| 63 |
self.windows_number = windows_number
|
| 64 |
|
| 65 |
-
def fit(self, X: np.ndarray, y
|
| 66 |
return self
|
| 67 |
|
| 68 |
-
def fit_transform(self, X: np.ndarray, y
|
| 69 |
self.fit(X, y)
|
| 70 |
return self.transform(X, y)
|
| 71 |
|
| 72 |
-
def transform(self, X: np.ndarray, y
|
| 73 |
X_ = X.copy()
|
| 74 |
*c_, size_ = X_.shape
|
| 75 |
windows_size_ = size_//self.windows_number
|
|
@@ -91,14 +91,14 @@ class MfccTransformer(BaseEstimator, TransformerMixin):
|
|
| 91 |
c_, *_ = X_.shape
|
| 92 |
return X_.reshape(c_, -1, self.N_MFCC)
|
| 93 |
|
| 94 |
-
def fit(self, X: np.ndarray, y
|
| 95 |
return self
|
| 96 |
|
| 97 |
-
def fit_transform(self, X: np.ndarray, y
|
| 98 |
self.fit(X, y)
|
| 99 |
return self.transform(X, y)
|
| 100 |
|
| 101 |
-
def transform(self, X: np.ndarray, y
|
| 102 |
X_ = X.copy()
|
| 103 |
c_, *_ = X_.shape
|
| 104 |
mfcc = librosa.feature.mfcc(y=X_,
|
|
@@ -130,14 +130,14 @@ class MelTransformer(BaseEstimator, TransformerMixin):
|
|
| 130 |
c_, *_ = X_.shape
|
| 131 |
return X_.reshape(c_, -1, self.N_MEL)
|
| 132 |
|
| 133 |
-
def fit(self, X: np.ndarray, y
|
| 134 |
return self
|
| 135 |
|
| 136 |
-
def fit_transform(self, X: np.ndarray, y
|
| 137 |
self.fit(X, y)
|
| 138 |
return self.transform(X, y)
|
| 139 |
|
| 140 |
-
def transform(self, X: np.ndarray, y
|
| 141 |
X_ = X.copy()
|
| 142 |
c_, *_ = X_.shape
|
| 143 |
mel = librosa.feature.melspectrogram(y=X,
|
|
@@ -162,14 +162,14 @@ class TorchTransform(BaseEstimator, TransformerMixin):
|
|
| 162 |
def __init__(self):
|
| 163 |
pass
|
| 164 |
|
| 165 |
-
def fit(self, X: np.ndarray, y
|
| 166 |
return self
|
| 167 |
|
| 168 |
-
def fit_transform(self, X: np.ndarray, y
|
| 169 |
self.fit(X, y)
|
| 170 |
return self.transform(X, y)
|
| 171 |
|
| 172 |
-
def transform(self, X: np.ndarray, y
|
| 173 |
return torch.tensor(X).unsqueeze(dim=1)
|
| 174 |
|
| 175 |
def inverse_transform(self, X: torch.Tensor) -> np.ndarray:
|
|
@@ -179,14 +179,14 @@ class ShuffleTransformer(BaseEstimator, TransformerMixin):
|
|
| 179 |
def __init__(self, p: float = 0.005):
|
| 180 |
self.p = p
|
| 181 |
|
| 182 |
-
def fit(self, X: np.ndarray, y
|
| 183 |
return self
|
| 184 |
|
| 185 |
-
def fit_transform(self, X: np.ndarray, y
|
| 186 |
self.fit(X, y)
|
| 187 |
return self.transform(X, y)
|
| 188 |
|
| 189 |
-
def transform(self, X: np.ndarray, y
|
| 190 |
will_swap = np.random.choice(X.shape[0], int(self.p*X.shape[0]))
|
| 191 |
will_swap_with = np.random.choice(X.shape[0], int(self.p*X.shape[0]))
|
| 192 |
if hasattr(X, "copy"):
|
|
|
|
| 6 |
from typing import Callable, Optional
|
| 7 |
|
| 8 |
class ReductionTransformer(BaseEstimator, TransformerMixin):
|
| 9 |
+
def __init__(self, windows_number: int = 300, statistique = np.mean):
|
| 10 |
self.windows_number = windows_number
|
| 11 |
self.statistique = statistique
|
| 12 |
|
| 13 |
+
def fit(self, X: np.ndarray, y = None):
|
| 14 |
return self
|
| 15 |
|
| 16 |
+
def fit_transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 17 |
self.fit(X, y)
|
| 18 |
return self.transform(X, y)
|
| 19 |
|
| 20 |
+
def transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 21 |
X_ = X.copy()
|
| 22 |
*c_, size_ = X_.shape
|
| 23 |
windows_size_ = size_//self.windows_number
|
|
|
|
| 34 |
self.windows_number = windows_number
|
| 35 |
self.windows_size = 0
|
| 36 |
|
| 37 |
+
def fit(self, X: np.ndarray, y = None):
|
| 38 |
return self
|
| 39 |
|
| 40 |
+
def fit_transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 41 |
self.fit(X, y)
|
| 42 |
return self.transform(X, y)
|
| 43 |
|
| 44 |
+
def transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 45 |
X_ = X.copy()
|
| 46 |
*c_, size_ = X_.shape
|
| 47 |
windows_size_ = size_//self.windows_number
|
|
|
|
| 62 |
def __init__(self, windows_number: int = 300):
|
| 63 |
self.windows_number = windows_number
|
| 64 |
|
| 65 |
+
def fit(self, X: np.ndarray, y = None):
|
| 66 |
return self
|
| 67 |
|
| 68 |
+
def fit_transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 69 |
self.fit(X, y)
|
| 70 |
return self.transform(X, y)
|
| 71 |
|
| 72 |
+
def transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 73 |
X_ = X.copy()
|
| 74 |
*c_, size_ = X_.shape
|
| 75 |
windows_size_ = size_//self.windows_number
|
|
|
|
| 91 |
c_, *_ = X_.shape
|
| 92 |
return X_.reshape(c_, -1, self.N_MFCC)
|
| 93 |
|
| 94 |
+
def fit(self, X: np.ndarray, y = None):
|
| 95 |
return self
|
| 96 |
|
| 97 |
+
def fit_transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 98 |
self.fit(X, y)
|
| 99 |
return self.transform(X, y)
|
| 100 |
|
| 101 |
+
def transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 102 |
X_ = X.copy()
|
| 103 |
c_, *_ = X_.shape
|
| 104 |
mfcc = librosa.feature.mfcc(y=X_,
|
|
|
|
| 130 |
c_, *_ = X_.shape
|
| 131 |
return X_.reshape(c_, -1, self.N_MEL)
|
| 132 |
|
| 133 |
+
def fit(self, X: np.ndarray, y = None):
|
| 134 |
return self
|
| 135 |
|
| 136 |
+
def fit_transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 137 |
self.fit(X, y)
|
| 138 |
return self.transform(X, y)
|
| 139 |
|
| 140 |
+
def transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 141 |
X_ = X.copy()
|
| 142 |
c_, *_ = X_.shape
|
| 143 |
mel = librosa.feature.melspectrogram(y=X,
|
|
|
|
| 162 |
def __init__(self):
|
| 163 |
pass
|
| 164 |
|
| 165 |
+
def fit(self, X: np.ndarray, y = None):
|
| 166 |
return self
|
| 167 |
|
| 168 |
+
def fit_transform(self, X: np.ndarray, y = None) -> torch.Tensor:
|
| 169 |
self.fit(X, y)
|
| 170 |
return self.transform(X, y)
|
| 171 |
|
| 172 |
+
def transform(self, X: np.ndarray, y = None) -> torch.Tensor:
|
| 173 |
return torch.tensor(X).unsqueeze(dim=1)
|
| 174 |
|
| 175 |
def inverse_transform(self, X: torch.Tensor) -> np.ndarray:
|
|
|
|
| 179 |
def __init__(self, p: float = 0.005):
|
| 180 |
self.p = p
|
| 181 |
|
| 182 |
+
def fit(self, X: np.ndarray, y = None):
|
| 183 |
return self
|
| 184 |
|
| 185 |
+
def fit_transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 186 |
self.fit(X, y)
|
| 187 |
return self.transform(X, y)
|
| 188 |
|
| 189 |
+
def transform(self, X: np.ndarray, y = None) -> np.ndarray:
|
| 190 |
will_swap = np.random.choice(X.shape[0], int(self.p*X.shape[0]))
|
| 191 |
will_swap_with = np.random.choice(X.shape[0], int(self.p*X.shape[0]))
|
| 192 |
if hasattr(X, "copy"):
|