├── data_utils ├── __init__.py ├── show_data_utils │ ├── __init__.py │ ├── get_j.py │ ├── lower_body.py │ ├── show_dataloader.py │ └── consts.py ├── gesture_datasets.py └── show_data_module.py ├── scripts ├── __init__.py ├── nets │ ├── __init__.py │ ├── adapter.py │ ├── diffusion_util.py │ ├── transformer_model.py │ └── diffuser.py ├── run.py └── renderer.py ├── config └── diffusion.json └── README.md /data_utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scripts/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scripts/nets/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /data_utils/show_data_utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .show_dataloader import SHOWDataset -------------------------------------------------------------------------------- /data_utils/gesture_datasets.py: -------------------------------------------------------------------------------- 1 | from data_utils.show_data_module import SHOWDataModule 2 | from typing import List, Union 3 | 4 | def get_gesture_dataset(dataset: str, data_root: str, batch_size: int, num_frames: int, speakers: List[Union[str, int]], **kwargs): 5 | if dataset == 'show': 6 | return SHOWDataModule( 7 | data_root, 8 | batch_size, 9 | num_frames, 10 | speakers, 11 | **kwargs 12 | ) 13 | 14 | -------------------------------------------------------------------------------- /config/diffusion.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "audio_map_dim": 64, 4 | "num_poses": 88, 5 | "num_pre_poses": 8, 6 | "input_dim": 64, 7 | "prediction_target": "sample", 8 | "use_class_labels": false, 9 | "predict_parts": [ 10 | "face", "upper_body" 11 | ], 12 | "num_hiddens": 512, 13 | "num_hidden_layers": 8, 14 | "classifier_free": true, 15 | "adapter_reduction_factor": 8 16 | }, 17 | "trainer": { 18 | "devices": 1, 19 | "strategy": "auto", 20 | "accelerator": "gpu", 21 | "log_every_n_steps": 100, 22 | "max_epochs": 250, 23 | "enable_progress_bar": true, 24 | "precision": 32, 25 | "accumulate_grad_batches": 1, 26 | "gradient_clip_val": 1.0, 27 | "gradient_clip_algorithm": "norm", 28 | "num_sanity_val_steps": 0, 29 | "limit_val_batches": 0 30 | }, 31 | "data": { 32 | "dataset": "show", 33 | "data_root": "ExpressiveWholeBodyDatasetReleaseV1.0/", 34 | "pkl_name": "_3d_raw16_full_34.pkl", 35 | "speakers": [ 36 | "oliver", 37 | "conan", 38 | "seth", 39 | "chemistry" 40 | ], 41 | "batch_size": 512, 42 | "num_workers": 8 43 | } 44 | } -------------------------------------------------------------------------------- /scripts/nets/adapter.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | 5 | from einops import repeat 6 | 7 | class Adapter(nn.Module): 8 | def __init__(self, input_dim, output_dim, reduction_factor=8, num_tokens=2, conv_groups=1): 9 | super().__init__() 10 | self.down_size = input_dim // reduction_factor 11 | self.down = nn.Conv1d(input_dim, self.down_size, kernel_size=1, groups=conv_groups, bias=False) 12 | self.up = nn.Conv1d(self.down_size, output_dim, kernel_size=1, groups=conv_groups, bias=False) 13 | 14 | self.activation = nn.ReLU(inplace=True) 15 | 16 | self.latent_tokens = nn.Parameter(torch.rand((num_tokens, input_dim))) 17 | self.gate = nn.Parameter(torch.zeros(1)) 18 | 19 | def forward(self, x, y): 20 | # do cross attention 21 | rep_tokens = repeat(self.latent_tokens, 't d -> b t d', b=x.size(0)) 22 | 23 | att_y2t = rep_tokens @ y.transpose(-2, -1) 24 | att_y2t = F.softmax(att_y2t, dim=-1) 25 | rep_tokens_res = att_y2t @ y 26 | 27 | rep_tokens = rep_tokens + rep_tokens_res 28 | 29 | att_t2x = x @ rep_tokens.transpose(-2, -1) 30 | att_t2x = F.softmax(att_t2x, dim=-1) 31 | x_res = att_t2x @ rep_tokens 32 | 33 | x = x + self.gate * x_res.contiguous() 34 | 35 | # bottleneck 36 | z = self.down(x.permute(0, 2, 1)) 37 | z = self.activation(z) 38 | output = self.up(z) 39 | 40 | return output.permute(0, 2, 1) 41 | -------------------------------------------------------------------------------- /scripts/nets/diffusion_util.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | from torch.nn import Module 4 | 5 | class VarianceSchedule(Module): 6 | def __init__(self, num_steps, beta_1, beta_T, mode='linear'): 7 | super().__init__() 8 | assert mode in ('linear', ) 9 | self.num_steps = num_steps 10 | self.beta_1 = beta_1 11 | self.beta_T = beta_T 12 | self.mode = mode 13 | 14 | if mode == 'linear': 15 | betas = torch.linspace(beta_1, beta_T, steps=num_steps) 16 | 17 | betas = torch.cat([torch.zeros([1]), betas], dim=0) # Padding 18 | 19 | alphas = 1 - betas 20 | log_alphas = torch.log(alphas) 21 | for i in range(1, log_alphas.size(0)): # 1 to T 22 | log_alphas[i] += log_alphas[i - 1] 23 | alpha_bars = log_alphas.exp() 24 | 25 | sigmas_flex = torch.sqrt(betas) 26 | sigmas_inflex = torch.zeros_like(sigmas_flex) 27 | for i in range(1, sigmas_flex.size(0)): 28 | sigmas_inflex[i] = ((1 - alpha_bars[i-1]) / (1 - alpha_bars[i])) * betas[i] 29 | sigmas_inflex = torch.sqrt(sigmas_inflex) 30 | 31 | self.register_buffer('betas', betas) 32 | self.register_buffer('alphas', alphas) 33 | self.register_buffer('alpha_bars', alpha_bars) 34 | self.register_buffer('sigmas_flex', sigmas_flex) 35 | self.register_buffer('sigmas_inflex', sigmas_inflex) 36 | 37 | def uniform_sample_t(self, batch_size): 38 | ts = np.random.choice(np.arange(1, self.num_steps+1), batch_size) 39 | return ts.tolist() 40 | 41 | def get_sigmas(self, t, flexibility): 42 | assert 0 <= flexibility and flexibility <= 1 43 | sigmas = self.sigmas_flex[t] * flexibility + self.sigmas_inflex[t] * (1 - flexibility) 44 | return sigmas -------------------------------------------------------------------------------- /data_utils/show_data_utils/get_j.py: -------------------------------------------------------------------------------- 1 | import torch 2 | 3 | 4 | def to3d(poses, config): 5 | if config.Data.pose.convert_to_6d: 6 | if config.Data.pose.expression: 7 | poses_exp = poses[:, -100:] 8 | poses = poses[:, :-100] 9 | 10 | poses = poses.reshape(poses.shape[0], -1, 5) 11 | sin, cos = poses[:, :, 3], poses[:, :, 4] 12 | pose_angle = torch.atan2(sin, cos) 13 | poses = (poses[:, :, :3] * pose_angle.unsqueeze(dim=-1)).reshape(poses.shape[0], -1) 14 | 15 | if config.Data.pose.expression: 16 | poses = torch.cat([poses, poses_exp], dim=-1) 17 | return poses 18 | 19 | 20 | def get_joint(smplx_model, betas, pred): 21 | joint = smplx_model(betas=betas.repeat(pred.shape[0], 1), 22 | expression=pred[:, 165:265], 23 | jaw_pose=pred[:, 0:3], 24 | leye_pose=pred[:, 3:6], 25 | reye_pose=pred[:, 6:9], 26 | global_orient=pred[:, 9:12], 27 | body_pose=pred[:, 12:75], 28 | left_hand_pose=pred[:, 75:120], 29 | right_hand_pose=pred[:, 120:165], 30 | return_verts=True)['joints'] 31 | return joint 32 | 33 | 34 | def get_joints(smplx_model, betas, pred): 35 | if len(pred.shape) == 3: 36 | B = pred.shape[0] 37 | x = 4 if B>= 4 else B 38 | T = pred.shape[1] 39 | pred = pred.reshape(-1, 265) 40 | smplx_model.batch_size = L = T * x 41 | 42 | times = pred.shape[0] // smplx_model.batch_size 43 | joints = [] 44 | for i in range(times): 45 | joints.append(get_joint(smplx_model, betas, pred[i*L:(i+1)*L])) 46 | joints = torch.cat(joints, dim=0) 47 | joints = joints.reshape(B, T, -1, 3) 48 | else: 49 | smplx_model.batch_size = pred.shape[0] 50 | joints = get_joint(smplx_model, betas, pred) 51 | return joints -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Joint Co-Speech Gesture and Expressive Talking Face Generation using Diffusion with Adapters [WACV2025] 2 | 3 | The official PyTorch implementation of the **WACV2025** paper [**"Joint Co-Speech Gesture and Expressive Talking Face Generation using Diffusion with Adapters"**](https://arxiv.org/abs/2412.14333). 4 | 5 | Please visit our [**webpage**](https://Ditzley.github.io/joint-gestures-and-face) for more details. 6 | 7 | 8 | ## Getting started 9 | 10 | This code was tested on `Ubuntu 20.04.6 LTS`. 11 | 12 | ### 1. Setup environment 13 | 14 | Clone the repo: 15 | ```bash 16 | git clone https://github.com/Ditzley/joint-gestures-and-face 17 | cd joint-gestures-and-face 18 | ``` 19 | Create conda environment: 20 | ```bash 21 | conda create --name joint python=3.11 22 | conda activate joint 23 | ``` 24 | Install pytorch: 25 | 26 | ```bash 27 | pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 --index-url https://download.pytorch.org/whl/cu118 28 | ``` 29 | 30 | Install other requirements: 31 | 32 | ```bash 33 | pip install lightning smplx trimesh opencv-python timm einops transformers lmdb jsonargparse[signatures]>=4.27.7 34 | ``` 35 | 36 | Download SMPLX model at https://smpl-x.is.tue.mpg.de/. Place it in ``/visualise/smplx_model``. Also download the extra files from https://github.com/yhw-yhw/TalkSHOW/tree/main/visualise/smplx and place in ``/visualise/smplx_model``. 37 | 38 | 39 | ### 2. Get data 40 | 41 | Please follow [TalkSHOW](https://github.com/yhw-yhw/TalkSHOW) for downloading and preparing the dataset. 42 | 43 | ### 4. Training 44 | 45 | To train the model run: 46 | ```bash 47 | python scripts/run.py --config config/diffusion.json --train --exp_name 48 | ``` 49 | 50 | ### 5. Testing 51 | 52 | To test the model run: 53 | ```bash 54 | python scripts/run.py --config config/diffusion.json --model_path --infer 55 | ``` 56 | 57 | ### 5. Visualization 58 | 59 | Our prediction code outputs 2 .npy files, one containing the joints and expressions, and another containing the smplx vertices. You can use the visualisation code from [TalkSHOW](https://github.com/yhw-yhw/TalkSHOW) to render videos. 60 | 61 | ## Citation 62 | If you find our work useful to your research, please consider citing: 63 | ``` 64 | @misc{hogue2024jointcospeechgestureexpressive, 65 | title={Joint Co-Speech Gesture and Expressive Talking Face Generation using Diffusion with Adapters}, 66 | author={Steven Hogue and Chenxu Zhang and Yapeng Tian and Xiaohu Guo}, 67 | year={2024}, 68 | eprint={2412.14333}, 69 | archivePrefix={arXiv}, 70 | url={https://arxiv.org/abs/2412.14333}, 71 | } 72 | ``` 73 | 74 | ## Acknowledgements 75 | We thank the following authors for their work: 76 | - [TalkSHOW](https://github.com/yhw-yhw/TalkSHOW) for the SHOW dataset and their data scripts which we use and base ours on 77 | - [DiffGesture](https://github.com/Advocate99/DiffGesture/) on which we base our diffusion and transformer models 78 | - [LAVisH](https://github.com/GenjiB/LAVISH) on which we base our adapter module 79 | 80 | -------------------------------------------------------------------------------- /data_utils/show_data_module.py: -------------------------------------------------------------------------------- 1 | from typing import List 2 | 3 | import torch 4 | import torch.utils.data as data 5 | from torch.utils.data.dataloader import default_collate 6 | import lightning as L 7 | import numpy as np 8 | from data_utils.show_data_utils import SHOWDataset 9 | 10 | def dtype_to_dtype(batch, d1, d2): 11 | if isinstance(batch, np.ndarray): 12 | return dtype_to_dtype(torch.from_numpy(batch), d1, d2) 13 | elif isinstance(batch, torch.Tensor) and batch.dtype == d1: 14 | return batch.to(dtype=d2) 15 | elif isinstance(batch, list): 16 | new_batch = [dtype_to_dtype(t, d1, d2) for t in batch] 17 | elif isinstance(batch, tuple): 18 | new_batch = tuple(dtype_to_dtype(t, d1, d2) for t in batch) 19 | elif isinstance(batch, dict): 20 | new_batch = {n: dtype_to_dtype(t, d1, d2) for n, t in batch.items()} 21 | else: 22 | return batch 23 | return new_batch 24 | 25 | 26 | def collate_fn(batch): 27 | new_batch = dtype_to_dtype(batch, torch.float64, torch.float32) 28 | return default_collate(new_batch) 29 | 30 | 31 | class SHOWDataModule(L.LightningDataModule): 32 | def __init__(self, data_root: str, batch_size: int, num_frames: int, speakers: List[int], pkl_name: str, num_workers: int): 33 | super().__init__() 34 | self.save_hyperparameters() 35 | self.data_root = data_root 36 | self.pkl_name = pkl_name 37 | self.num_frames = num_frames 38 | self.batch_size = batch_size 39 | self.speakers = speakers 40 | self.num_workers = num_workers 41 | 42 | def get_data(self, split): 43 | dataset = SHOWDataset( 44 | self.data_root, 45 | self.pkl_name, 46 | split, 47 | self.speakers, 48 | limbscaling=False, 49 | normalization=False, 50 | norm_method="all", 51 | split_trans_zero=False, 52 | num_pre_frames=0, 53 | num_frames=self.num_frames, 54 | num_generate_length=self.num_frames, 55 | aud_feat_win_size=None, 56 | aud_feat_dim=64, 57 | feat_method="mfcc", 58 | context_info=False, 59 | smplx=True, 60 | audio_sr=16000, 61 | convert_to_6d=False, 62 | expression=True, 63 | ) 64 | return dataset 65 | 66 | def setup(self, stage): 67 | self.train_dataset = self.get_data('train') 68 | self.test_dataset = self.get_data('test') 69 | 70 | 71 | def train_dataloader(self): 72 | return data.DataLoader(self.train_dataset, 73 | batch_size=self.batch_size, 74 | num_workers=self.num_workers, 75 | shuffle=True, 76 | drop_last=True, 77 | pin_memory=True, 78 | collate_fn=collate_fn) 79 | 80 | def test_dataloader(self): 81 | return data.DataLoader(self.test_dataset.all_dataset, 82 | batch_size=1, 83 | num_workers=0, 84 | shuffle=False, 85 | drop_last=False, 86 | collate_fn=collate_fn) 87 | 88 | def val_dataloader(self): 89 | return data.DataLoader(self.train_dataset, 90 | batch_size=1, 91 | num_workers=0, 92 | shuffle=False, 93 | drop_last=False, 94 | collate_fn=collate_fn) 95 | 96 | def predict_dataloader(self): 97 | return data.DataLoader(self.test_dataset, 98 | batch_size=1, 99 | num_workers=self.num_workers, 100 | shuffle=False, 101 | drop_last=False, 102 | collate_fn=collate_fn) -------------------------------------------------------------------------------- /scripts/run.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import random 4 | 5 | from jsonargparse import ActionConfigFile 6 | 7 | sys.path.append(os.getcwd()) 8 | 9 | import lightning as L 10 | from lightning.pytorch.strategies import DDPStrategy 11 | import lightning.pytorch.cli as cli 12 | from lightning.pytorch.callbacks import ModelCheckpoint 13 | 14 | from scripts.nets.diffuser import Diffuser as JointDiffuser 15 | from data_utils.gesture_datasets import get_gesture_dataset 16 | from data_utils.show_data_utils.lower_body import * 17 | 18 | import smplx as smpl 19 | 20 | torch.set_float32_matmul_precision('high') 21 | 22 | os.environ['smplx_npz_path'] = "visualise/smplx_model/SMPLX_NEUTRAL_2020.npz" 23 | os.environ['extra_joint_path'] = "visualise/smplx_model/smplx_extra_joints.yaml" 24 | os.environ['j14_regressor_path'] = "visualise/smplx_model/SMPLX_to_J14.pkl" 25 | 26 | def create_model(device='cuda'): 27 | smplx_path = './visualise/' 28 | dtype = torch.float32 29 | model_params = dict(model_path=smplx_path, 30 | model_type='smplx', 31 | create_global_orient=True, 32 | create_body_pose=True, 33 | create_betas=True, 34 | num_betas=300, 35 | create_left_hand_pose=True, 36 | create_right_hand_pose=True, 37 | use_pca=False, 38 | flat_hand_mean=False, 39 | create_expression=True, 40 | num_expression_coeffs=100, 41 | num_pca_comps=12, 42 | create_jaw_pose=True, 43 | create_leye_pose=True, 44 | create_reye_pose=True, 45 | create_transl=False, 46 | # gender='ne', 47 | dtype=dtype,) 48 | smplx_model = smpl.create(**model_params).to(torch.device(device)) 49 | return smplx_model 50 | 51 | if __name__ == '__main__': 52 | parser = cli.LightningArgumentParser() 53 | parser.add_lightning_class_args(JointDiffuser, 'model') 54 | parser.add_lightning_class_args(L.Trainer, 'trainer') 55 | parser.add_function_arguments(get_gesture_dataset, 'data') 56 | 57 | parser.add_argument('-c', '--config', action=ActionConfigFile, help="Path to a configuration file in json or yaml format.") 58 | # parser.link_arguments("trainer.accumulate_grad_batches", "model.accumulate_grad_batches") 59 | # parser.link_arguments("trainer.gradient_clip_val", "model.gradient_clip_val") 60 | # parser.link_arguments("trainer.gradient_clip_algorithm", "model.gradient_clip_algorithm") 61 | 62 | parser.link_arguments("model.num_poses", "data.num_frames") 63 | 64 | parser.add_argument('--train', action='store_true') 65 | parser.add_argument('--infer', action='store_true') 66 | 67 | parser.add_argument('--model_path', type=str, default=None) 68 | 69 | parser.add_argument('--seed', type=int, default=None) 70 | parser.add_argument('--exp_name', type=str, default=None) 71 | parser.link_arguments("exp_name", "model.method_name") 72 | parser.add_argument('--logger', type=str, default=None) 73 | 74 | config = parser.parse_args(defaults=True) 75 | 76 | config.trainer.callbacks = [ 77 | ModelCheckpoint( 78 | filename='{epoch}', 79 | every_n_epochs=50, 80 | save_last=True, 81 | save_top_k=-1 82 | ) 83 | ] 84 | 85 | if config.seed is not None: 86 | torch.manual_seed(config.seed) 87 | torch.cuda.manual_seed_all(config.seed) 88 | np.random.seed(config.seed) 89 | random.seed(config.seed) 90 | torch.backends.cudnn.deterministic = True 91 | 92 | if not config.train: 93 | config.trainer.devices = 1 94 | config.trainer.strategy = 'auto' 95 | 96 | if config.trainer.strategy == 'ddp': 97 | config.trainer.strategy = DDPStrategy() 98 | 99 | # init trainer 100 | trainer = L.Trainer( 101 | **config.trainer, 102 | ) 103 | model = JointDiffuser( 104 | **config.model 105 | ) 106 | 107 | datamodule = get_gesture_dataset( 108 | **config.data 109 | ) 110 | 111 | if config.train: 112 | trainer.fit(model, datamodule=datamodule, ckpt_path=config.model_path) 113 | elif config.infer: 114 | trainer.predict(model, datamodule=datamodule, ckpt_path=config.model_path) -------------------------------------------------------------------------------- /scripts/renderer.py: -------------------------------------------------------------------------------- 1 | import os 2 | import torch 3 | import smplx as smpl 4 | import numpy as np 5 | import trimesh 6 | 7 | from data_utils.show_data_utils.lower_body import part2full 8 | 9 | def get_vertices(smplx_model, betas, result_list, exp, require_pose=False, face=False): 10 | vertices_list = [] 11 | poses_list = [] 12 | expression = torch.zeros([1, 100], device=betas.device) 13 | 14 | if len(betas.shape) == 1: 15 | betas = betas.unsqueeze(dim=0) 16 | 17 | for i in result_list: 18 | vertices = [] 19 | poses = [] 20 | for j in range(i.shape[0]): 21 | output = smplx_model(betas=betas, 22 | expression=i[j][165:265].unsqueeze(dim=0) if exp else expression, 23 | jaw_pose=i[j][0:3].unsqueeze(dim=0), 24 | leye_pose=i[j][3:6].unsqueeze(dim=0), 25 | reye_pose=i[j][6:9].unsqueeze(dim=0), 26 | global_orient=i[j][9:12].unsqueeze(dim=0), 27 | body_pose=i[j][12:75].unsqueeze(dim=0) if not face else torch.zeros_like(i[j][12:75].unsqueeze(dim=0), device=betas.device), 28 | left_hand_pose=i[j][75:120].unsqueeze(dim=0) if not face else torch.zeros_like(i[j][75:120].unsqueeze(dim=0), device=betas.device), 29 | right_hand_pose=i[j][120:165].unsqueeze(dim=0) if not face else torch.zeros_like(i[j][120:165].unsqueeze(dim=0), device=betas.device), 30 | return_verts=True) 31 | vertices.append(output.vertices.detach().cpu().numpy().squeeze()) 32 | # trimesh.Trimesh(vertices=vertices[0], faces=smplx_model.faces).show() 33 | 34 | pose = output.body_pose 35 | poses.append(pose.detach().cpu()) 36 | vertices = np.asarray(vertices) 37 | vertices_list.append(vertices) 38 | poses = torch.cat(poses, dim=0) 39 | poses_list.append(poses) 40 | if require_pose: 41 | return vertices_list, poses_list 42 | else: 43 | return vertices_list, None 44 | 45 | 46 | class Renderer(): 47 | def __init__(self, path=None): 48 | with torch.no_grad(): 49 | smplx_path = './visualise/' 50 | dtype = torch.float32 51 | model_params = dict(model_path=smplx_path, 52 | model_type='smplx', 53 | create_global_orient=True, 54 | create_body_pose=True, 55 | create_betas=True, 56 | num_betas=300, 57 | create_left_hand_pose=True, 58 | create_right_hand_pose=True, 59 | use_pca=False, 60 | flat_hand_mean=False, 61 | create_expression=True, 62 | num_expression_coeffs=100, 63 | num_pca_comps=12, 64 | create_jaw_pose=True, 65 | create_leye_pose=True, 66 | create_reye_pose=True, 67 | create_transl=False, 68 | # gender='ne', 69 | dtype=dtype, ) 70 | self.smplx_model = smpl.create(**model_params) 71 | 72 | def render(self, method, face_pred, body_pred, face_gt, body_gt, audio_file, betas): 73 | pred = torch.cat([face_pred[:, :3], body_pred, face_pred[:, -100:]], dim=-1) 74 | gt = torch.cat([face_gt[:, :3], body_gt, face_gt[:, -100:]], dim=-1) 75 | gt = gt[:pred.shape[0]] 76 | 77 | face = False 78 | stand = False 79 | pred = part2full(pred, stand) 80 | gt = part2full(gt, stand) 81 | 82 | result_list = [] 83 | result_list.append(gt[:248]) 84 | result_list.append(pred[:248]) 85 | 86 | vertices_list, _ = get_vertices(self.smplx_model.to(pred.device), betas, result_list, True) 87 | dict = np.concatenate(vertices_list[1:], axis=0) 88 | file_name = 'visualise/' + method + '/' + \ 89 | audio_file.split('/')[-4].split('.')[-2] + '/' + \ 90 | audio_file.split('/')[-1].split('.')[-2].split('/')[-1] 91 | 92 | os.makedirs(os.path.dirname(file_name), exist_ok=True) 93 | np.save(file_name, dict) 94 | 95 | dict = pred[:248].cpu().numpy() 96 | file_name = 'visualise/' + method + '/' + \ 97 | audio_file.split('/')[-4].split('.')[-2] + '/joints_' + \ 98 | audio_file.split('/')[-1].split('.')[-2].split('/')[-1] 99 | np.save(file_name, dict) 100 | 101 | def view(self, face, body, betas): 102 | pose = torch.cat([face[:, :3], body, face[:, -100:]], dim=-1) 103 | pose = part2full(pose, False) 104 | 105 | vertices_list, _ = get_vertices(self.smplx_model.to(pose.device), betas, [pose], True) 106 | for i in vertices_list[0]: 107 | mesh = trimesh.Trimesh(i, self.smplx_model.faces) 108 | mesh.show() 109 | -------------------------------------------------------------------------------- /data_utils/show_data_utils/lower_body.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import torch 3 | 4 | lower_pose = torch.tensor( 5 | [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0747, -0.0158, -0.0152, -1.1826512813568115, 0.23866955935955048, 6 | 0.15146760642528534, -1.2604516744613647, -0.3160211145877838, 7 | -0.1603458970785141, 1.1654603481292725, 0.0, 0.0, 1.2521806955337524, 0.041598282754421234, -0.06312154978513718, 8 | 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) 9 | lower_pose_stand = torch.tensor([ 10 | 8.9759e-04, 7.1074e-04, -5.9163e-06, 8.9759e-04, 7.1074e-04, -5.9163e-06, 11 | 3.0747, -0.0158, -0.0152, 12 | -3.6665e-01, -8.8455e-03, 1.6113e-01, -3.6665e-01, -8.8455e-03, 1.6113e-01, 13 | -3.9716e-01, -4.0229e-02, -1.2637e-01, 14 | 7.9163e-01, 6.8519e-02, -1.5091e-01, 7.9163e-01, 6.8519e-02, -1.5091e-01, 15 | 7.8632e-01, -4.3810e-02, 1.4375e-02, 16 | -1.0675e-01, 1.2635e-01, 1.6711e-02, -1.0675e-01, 1.2635e-01, 1.6711e-02, ]) 17 | # lower_pose_stand = torch.tensor( 18 | # [6.4919e-02, 3.3018e-02, 1.7485e-02, 8.9759e-04, 7.1074e-04, -5.9163e-06, 19 | # 3.0747, -0.0158, -0.0152, 20 | # -3.3633e+00, -9.3915e-02, 3.0996e-01, -3.6665e-01, -8.8455e-03, 1.6113e-01, 21 | # 1.1654603481292725, 0.0, 0.0, 22 | # 4.4167e-01, 6.7183e-03, -3.6379e-03, 7.9163e-01, 6.8519e-02, -1.5091e-01, 23 | # 0.0, 0.0, 0.0, 24 | # 2.2910e-02, -2.4797e-02, -5.5657e-03, -1.0675e-01, 1.2635e-01, 1.6711e-02,]) 25 | lower_body = [0, 1, 3, 4, 6, 7, 9, 10] 26 | count_part = [6, 9, 12, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 27 | 29, 30, 31, 32, 33, 34, 35, 36, 37, 28 | 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54] 29 | fix_index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30 | 29, 31 | 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 32 | 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 33 | 65, 66, 67, 68, 69, 70, 71, 72, 73, 74] 34 | all_index = np.ones(275) 35 | all_index[fix_index] = 0 36 | c_index = [] 37 | i = 0 38 | for num in all_index: 39 | if num == 1: 40 | c_index.append(i) 41 | i = i + 1 42 | c_index = np.asarray(c_index) 43 | 44 | fix_index_3d = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 45 | 21, 22, 23, 24, 25, 26, 46 | 30, 31, 32, 33, 34, 35, 47 | 45, 46, 47, 48, 49, 50] 48 | all_index_3d = np.ones(165) 49 | all_index_3d[fix_index_3d] = 0 50 | c_index_3d = [] 51 | i = 0 52 | for num in all_index_3d: 53 | if num == 1: 54 | c_index_3d.append(i) 55 | i = i + 1 56 | c_index_3d = np.asarray(c_index_3d) 57 | 58 | c_index_6d = [] 59 | i = 0 60 | for num in all_index_3d: 61 | if num == 1: 62 | c_index_6d.append(2*i) 63 | c_index_6d.append(2 * i + 1) 64 | i = i + 1 65 | c_index_6d = np.asarray(c_index_6d) 66 | 67 | 68 | def part2full(input, stand=False): 69 | if stand: 70 | # lp = lower_pose_stand.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) 71 | lp = torch.zeros_like(lower_pose) 72 | lp[6:9] = torch.tensor([3.0747, -0.0158, -0.0152]) 73 | lp = lp.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) 74 | else: 75 | lp = lower_pose.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) 76 | 77 | input = torch.cat([input[:, :3], 78 | lp[:, :15], 79 | input[:, 3:6], 80 | lp[:, 15:21], 81 | input[:, 6:9], 82 | lp[:, 21:27], 83 | input[:, 9:12], 84 | lp[:, 27:], 85 | input[:, 12:]] 86 | , dim=1) 87 | return input 88 | 89 | 90 | def pred2poses(input, gt): 91 | input = torch.cat([input[:, :3], 92 | gt[0:1, 3:18].repeat(input.shape[0], 1), 93 | input[:, 3:6], 94 | gt[0:1, 21:27].repeat(input.shape[0], 1), 95 | input[:, 6:9], 96 | gt[0:1, 30:36].repeat(input.shape[0], 1), 97 | input[:, 9:12], 98 | gt[0:1, 39:45].repeat(input.shape[0], 1), 99 | input[:, 12:]] 100 | , dim=1) 101 | return input 102 | 103 | 104 | def poses2poses(input, gt): 105 | input = torch.cat([input[:, :3], 106 | gt[0:1, 3:18].repeat(input.shape[0], 1), 107 | input[:, 18:21], 108 | gt[0:1, 21:27].repeat(input.shape[0], 1), 109 | input[:, 27:30], 110 | gt[0:1, 30:36].repeat(input.shape[0], 1), 111 | input[:, 36:39], 112 | gt[0:1, 39:45].repeat(input.shape[0], 1), 113 | input[:, 45:]] 114 | , dim=1) 115 | return input 116 | 117 | def poses2pred(input, stand=False): 118 | if stand: 119 | lp = lower_pose_stand.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) 120 | # lp = torch.zeros_like(lower_pose).unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) 121 | else: 122 | lp = lower_pose.unsqueeze(dim=0).repeat(input.shape[0], 1).to(input.device) 123 | input = torch.cat([input[:, :3], 124 | lp[:, :15], 125 | input[:, 18:21], 126 | lp[:, 15:21], 127 | input[:, 27:30], 128 | lp[:, 21:27], 129 | input[:, 36:39], 130 | lp[:, 27:], 131 | input[:, 45:]] 132 | , dim=1) 133 | return input 134 | 135 | 136 | rearrange = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\ 137 | # ,22, 23, 24, 25, 40, 26, 41, 138 | # 27, 42, 28, 43, 29, 44, 30, 45, 31, 46, 32, 47, 33, 48, 34, 49, 35, 50, 36, 51, 37, 52, 38, 53, 39, 54, 55, 139 | # 57, 56, 59, 58, 60, 63, 61, 64, 62, 65, 66, 71, 67, 72, 68, 73, 69, 74, 70, 75] 140 | 141 | symmetry = [0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]#, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 142 | # 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 143 | # 1, 1, 1, 1, 1, 1] 144 | -------------------------------------------------------------------------------- /scripts/nets/transformer_model.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | 4 | from timm.models.vision_transformer import Block 5 | 6 | from .adapter import Adapter 7 | 8 | class TransformerModel(nn.Module): 9 | def __init__(self, seq_len, input_dim, output_dim, hidden_dim=512, encoder_depth=4, encoder_heads=8, 10 | decoder_depth=4, decoder_heads=8, mlp_ratio=4., norm_layer=nn.LayerNorm, split=True, 11 | adapter_reduction_factor=8): 12 | super().__init__() 13 | 14 | self.linear = nn.Linear(input_dim, hidden_dim) 15 | self.pos_embedding = nn.Parameter(torch.randn(1, seq_len, hidden_dim)) 16 | 17 | self.blocks = nn.ModuleList([ 18 | Block(hidden_dim, encoder_heads, mlp_ratio, qkv_bias=True, norm_layer=norm_layer, act_layer=nn.GELU) 19 | for _ in range(encoder_depth)]) 20 | self.norm = norm_layer(hidden_dim) 21 | 22 | self.decoder_blocks = nn.ModuleList([ 23 | Block(hidden_dim, decoder_heads, mlp_ratio, qkv_bias=True, norm_layer=norm_layer, act_layer=nn.GELU) 24 | for _ in range(decoder_depth)]) 25 | 26 | self.decoder_norm = norm_layer(hidden_dim) 27 | 28 | self.out = nn.Sequential( 29 | nn.Linear(hidden_dim, hidden_dim//2), 30 | nn.LeakyReLU(True), 31 | nn.Linear(hidden_dim//2, output_dim) 32 | ) 33 | 34 | self.split = split 35 | if self.split: 36 | self.reduction_factor = adapter_reduction_factor 37 | self.num_tokens = 2 38 | 39 | self.encoder_adapters_f1 = nn.ModuleList([ 40 | Adapter(hidden_dim, hidden_dim, reduction_factor=self.reduction_factor, num_tokens=self.num_tokens) 41 | for _ in range(encoder_depth) 42 | ]) 43 | 44 | self.encoder_adapters_f2 = nn.ModuleList([ 45 | Adapter(hidden_dim, hidden_dim, reduction_factor=self.reduction_factor, num_tokens=self.num_tokens) 46 | for _ in range(encoder_depth) 47 | ]) 48 | 49 | self.decoder_adapters_f1 = nn.ModuleList([ 50 | Adapter(hidden_dim, hidden_dim, reduction_factor=self.reduction_factor, num_tokens=self.num_tokens) 51 | for _ in range(decoder_depth) 52 | ]) 53 | 54 | self.decoder_adapters_f2 = nn.ModuleList([ 55 | Adapter(hidden_dim, hidden_dim, reduction_factor=self.reduction_factor, num_tokens=self.num_tokens) 56 | for _ in range(decoder_depth) 57 | ]) 58 | 59 | self.encoder_adapters_b1 = nn.ModuleList([ 60 | Adapter(hidden_dim, hidden_dim, reduction_factor=self.reduction_factor, num_tokens=self.num_tokens) 61 | for _ in range(encoder_depth) 62 | ]) 63 | 64 | self.encoder_adapters_b2 = nn.ModuleList([ 65 | Adapter(hidden_dim, hidden_dim, reduction_factor=self.reduction_factor, num_tokens=self.num_tokens) 66 | for _ in range(encoder_depth) 67 | ]) 68 | 69 | self.decoder_adapters_b1 = nn.ModuleList([ 70 | Adapter(hidden_dim, hidden_dim, reduction_factor=self.reduction_factor, num_tokens=self.num_tokens) 71 | for _ in range(decoder_depth) 72 | ]) 73 | 74 | self.decoder_adapters_b2 = nn.ModuleList([ 75 | Adapter(hidden_dim, hidden_dim, reduction_factor=self.reduction_factor, num_tokens=self.num_tokens) 76 | for _ in range(decoder_depth) 77 | ]) 78 | 79 | self.apply(self._init_weights) 80 | 81 | def _init_weights(self, m): 82 | if isinstance(m, nn.Linear): 83 | # we use xavier_uniform following official JAX ViT: 84 | torch.nn.init.xavier_uniform_(m.weight) 85 | if isinstance(m, nn.Linear) and m.bias is not None: 86 | nn.init.constant_(m.bias, 0) 87 | elif isinstance(m, nn.LayerNorm): 88 | nn.init.constant_(m.bias, 0) 89 | nn.init.constant_(m.weight, 1.0) 90 | 91 | def forward(self, x, beta, context): 92 | batch_size = x.size(0) 93 | beta = beta.view(batch_size, 1, 1) 94 | 95 | time_emb = torch.cat([beta, torch.sin(beta), torch.cos(beta)], dim=-1) 96 | time_emb = time_emb.repeat(1,x.shape[1],1) 97 | 98 | if self.split: 99 | f, b = torch.chunk(x, 2, dim=-1) 100 | f_ctx, b_ctx = torch.chunk(context, 2, dim=-1) 101 | f_ctx = torch.cat([time_emb, f_ctx], dim=-1) 102 | b_ctx = torch.cat([time_emb, b_ctx], dim=-1) 103 | 104 | f = torch.cat([f, f_ctx], dim=-1) 105 | b = torch.cat([b, b_ctx], dim=-1) 106 | 107 | f = self.linear(f) 108 | b = self.linear(b) 109 | 110 | f += self.pos_embedding 111 | b += self.pos_embedding 112 | 113 | for i, blk in enumerate(self.blocks): 114 | f_a = self.encoder_adapters_f1[i](f, b) 115 | b_a = self.encoder_adapters_b1[i](b, f) 116 | f = f_a + blk.drop_path1(blk.ls1(blk.attn(blk.norm1(f)))) 117 | b = b_a + blk.drop_path1(blk.ls1(blk.attn(blk.norm1(b)))) 118 | 119 | f_a = self.encoder_adapters_f2[i](f, b) 120 | b_a = self.encoder_adapters_b2[i](b, f) 121 | f = f_a + blk.drop_path2(blk.ls2(blk.mlp(blk.norm2(f)))) 122 | b = b_a + blk.drop_path2(blk.ls2(blk.mlp(blk.norm2(b)))) 123 | 124 | f = self.norm(f) 125 | b = self.norm(b) 126 | 127 | for i, blk in enumerate(self.decoder_blocks): 128 | f_a = self.decoder_adapters_f1[i](f, b) 129 | b_a = self.decoder_adapters_b1[i](b, f) 130 | f = f_a + blk.drop_path1(blk.ls1(blk.attn(blk.norm1(f)))) 131 | b = b_a + blk.drop_path1(blk.ls1(blk.attn(blk.norm1(b)))) 132 | 133 | f_a = self.decoder_adapters_f2[i](f, b) 134 | b_a = self.decoder_adapters_b2[i](b, f) 135 | f = f_a + blk.drop_path2(blk.ls2(blk.mlp(blk.norm2(f)))) 136 | b = b_a + blk.drop_path2(blk.ls2(blk.mlp(blk.norm2(b)))) 137 | 138 | f = self.decoder_norm(f) 139 | b = self.decoder_norm(b) 140 | 141 | f_out = self.out(f) 142 | b_out = self.out(b) 143 | 144 | return (f_out, b_out) 145 | else: 146 | ctx_emb = context 147 | ctx_emb = torch.cat([time_emb, ctx_emb], dim=-1) 148 | x = torch.cat([x, ctx_emb], dim=2) 149 | x = self.linear(x) 150 | x += self.pos_embedding 151 | for blk in self.blocks: 152 | x = blk(x) 153 | x = self.norm(x) 154 | 155 | for blk in self.decoder_blocks: 156 | x = blk(x) 157 | x = self.decoder_norm(x) 158 | 159 | return self.out(x) 160 | -------------------------------------------------------------------------------- /data_utils/show_data_utils/show_dataloader.py: -------------------------------------------------------------------------------- 1 | import os.path 2 | import shutil 3 | import pickle 4 | import random 5 | import math 6 | import json 7 | from tqdm import tqdm 8 | import lmdb 9 | from torch.utils.data import Dataset 10 | import torch 11 | import torch.nn.functional as F 12 | import torchaudio as ta 13 | import numpy as np 14 | from transformers import Wav2Vec2Processor, HubertModel 15 | 16 | from data_utils.show_data_utils.consts import speaker_id 17 | 18 | with open('data_utils/show_data_utils/hand_component.json') as file_obj: 19 | comp = json.load(file_obj) 20 | left_hand_c = np.asarray(comp['left']) 21 | right_hand_c = np.asarray(comp['right']) 22 | 23 | def to3d(data): 24 | left_hand_pose = np.einsum('bi,ij->bj', data[:, 75:87], left_hand_c[:12, :]) 25 | right_hand_pose = np.einsum('bi,ij->bj', data[:, 87:99], right_hand_c[:12, :]) 26 | data = np.concatenate((data[:, :75], left_hand_pose, right_hand_pose), axis=-1) 27 | return data 28 | 29 | def linear_interpolation(features, input_fps, output_fps, output_len=None): 30 | features = features.transpose(1, 2) 31 | seq_len = features.shape[2] / float(input_fps) 32 | if output_len is None: 33 | output_len = int(seq_len * output_fps) 34 | output_features = F.interpolate(features, size=output_len, align_corners=True, mode='linear') 35 | return output_features.transpose(1, 2) 36 | 37 | 38 | 39 | class SHOWDataset(Dataset): 40 | def __init__(self, data_root, cache_path, split, speakers, limbscaling=False, normalization=False, 41 | norm_method="all", split_trans_zero=False, num_pre_frames=0, num_frames=88, 42 | num_generate_length=88, aud_feat_win_size=None, aud_feat_dim=64, feat_method="mfcc", 43 | context_info=False, smplx=True, audio_sr=16000, convert_to_6d=False, expression=True): 44 | self.data_root = data_root 45 | self.split = split 46 | self.speakers = speakers 47 | self.audio_sr = audio_sr 48 | self.audio_feat_dim = aud_feat_dim 49 | self.audio_feat_win_size = aud_feat_win_size 50 | self.num_generate_length = num_generate_length 51 | self.num_pre_frames = num_pre_frames 52 | self.convert_to_6d = convert_to_6d 53 | self.expression = expression 54 | self.context_info = context_info 55 | self.feat_method = feat_method 56 | self.normalization = normalization 57 | self.norm_method = norm_method 58 | self.whole_video = False 59 | 60 | self.num_samples = 0 61 | 62 | self.hubert = HubertModel.from_pretrained("facebook/hubert-large-ls960-ft").to('cuda') 63 | self.hubert.eval() 64 | 65 | self.am = Wav2Vec2Processor.from_pretrained("vitouphy/wav2vec2-xls-r-300m-phoneme") 66 | self.am_sr = 16000 67 | 68 | cache_dir = f'{data_root}/{cache_path}/{split}' 69 | 70 | self.build_cache(cache_dir, False) 71 | 72 | self.lmdb_env = lmdb.open(cache_dir, readonly=True, lock=False) 73 | with self.lmdb_env.begin() as txn: 74 | self.num_samples = txn.stat()["entries"] 75 | 76 | 77 | def build_cache(self, dir, overwrite=False): 78 | if os.path.exists(dir): 79 | if overwrite: 80 | shutil.rmtree(dir) 81 | else: 82 | return 83 | 84 | if not os.path.exists(dir): 85 | os.makedirs(dir) 86 | 87 | 88 | lmdb_env = lmdb.open(dir, map_size=1024 ** 3 * 1500) 89 | # with lmdb_env.begin() as txn: 90 | # length = txn.stat()['entries'] 91 | 92 | huaide = 0 93 | for speaker_name in self.speakers: 94 | speaker_root = os.path.join(self.data_root, speaker_name) 95 | videos = [v for v in os.listdir(speaker_root)] 96 | for vid in tqdm(videos, desc="Processing training data of {}......".format(speaker_name)): 97 | source_vid = vid 98 | vid_pth = os.path.join(speaker_root, source_vid, self.split) 99 | 100 | try: 101 | seqs = [s for s in os.listdir(vid_pth)] 102 | except: 103 | continue 104 | 105 | for s in seqs: 106 | # key = "{:005}".format(self.num_samples).encode("ascii") 107 | 108 | seq_root = os.path.join(vid_pth, s) 109 | key = seq_root # correspond to clip****** 110 | audio_fname = os.path.join(speaker_root, source_vid, self.split, s, '%s.wav' % (s)) 111 | motion_fname = os.path.join(speaker_root, source_vid, self.split, s, '%s.pkl' % (s)) 112 | if not os.path.isfile(audio_fname) or not os.path.isfile(motion_fname): 113 | huaide = huaide + 1 114 | continue 115 | 116 | # data stuff here 117 | loaded_data = {} 118 | 119 | f = open(motion_fname, 'rb+') 120 | data = pickle.load(f) 121 | 122 | betas = np.array(data['betas']) 123 | jaw_pose = np.array(data['jaw_pose']) 124 | leye_pose = np.array(data['leye_pose']) 125 | reye_pose = np.array(data['reye_pose']) 126 | global_orient = np.array(data['global_orient']).squeeze() 127 | body_pose = np.array(data['body_pose_axis']) 128 | left_hand_pose = np.array(data['left_hand_pose']) 129 | right_hand_pose = np.array(data['right_hand_pose']) 130 | full_body = np.concatenate( 131 | (jaw_pose, leye_pose, reye_pose, global_orient, body_pose, left_hand_pose, right_hand_pose), axis=1) 132 | assert full_body.shape[1] == 99 133 | 134 | if self.convert_to_6d: 135 | raise NotImplementedError 136 | else: 137 | full_body = to3d(full_body) 138 | expression = np.array(data['expression']) 139 | full_body = np.concatenate((full_body, expression), axis=1) 140 | 141 | complete_data = full_body 142 | complete_data = np.array(complete_data) 143 | 144 | audio, sr_0 = ta.load(audio_fname) 145 | 146 | if self.audio_sr != sr_0: 147 | audio = ta.transforms.Resample(sr_0, self.audio_sr)(audio) 148 | if audio.shape[0] > 1: 149 | audio = torch.mean(audio, dim=0, keepdim=True) 150 | 151 | hubert_features = self.hubert(audio.to(self.hubert.device)).last_hidden_state.cpu() 152 | hubert_features = linear_interpolation(hubert_features, 50, 30, output_len=len(complete_data)) 153 | 154 | # split the sequence 155 | num_generate_length = self.num_generate_length 156 | num_pre_frames = self.num_pre_frames 157 | seq_len = num_generate_length + num_pre_frames 158 | 159 | index_list = list(range(0, 160 | complete_data.shape[0] - self.num_generate_length - self.num_pre_frames, 161 | 6)) 162 | if self.split in ['test'] or self.whole_video: 163 | index_list = list([0]) 164 | 165 | for index in index_list: 166 | index_new = index + random.randrange(0, 5, 3) 167 | if index_new + seq_len > complete_data.shape[0]: 168 | index_new = index 169 | index = index_new 170 | 171 | if self.split in ['val', 'pre', 'test'] or self.whole_video: 172 | index = 0 173 | seq_len = complete_data.shape[0] 174 | seq_data = [] 175 | assert index + seq_len <= complete_data.shape[0] 176 | 177 | seq_data = complete_data[index:(index + seq_len), :] 178 | seq_data = np.array(seq_data) 179 | 180 | ''' 181 | audio feature, 182 | ''' 183 | 184 | ''' 185 | raw audio 186 | ''' 187 | if not self.context_info: 188 | if not self.whole_video: 189 | fps = 30 190 | aindex = (index / fps) * self.audio_sr 191 | aseq_len = (seq_len / fps) * self.audio_sr 192 | anum_pre_frames = (num_pre_frames / fps) * self.audio_sr 193 | raw_audio = audio[..., math.floor(aindex):math.ceil(math.floor(aindex) + aseq_len + anum_pre_frames)] 194 | else: 195 | raw_audio = audio 196 | 197 | ''' 198 | hubert features 199 | ''' 200 | if not self.context_info: 201 | if not self.whole_video: 202 | hubert_feat = hubert_features[:, index:(index + seq_len), :] 203 | else: 204 | hubert_feat = hubert_features 205 | 206 | with lmdb_env.begin(write=True) as txn: 207 | key = "{:005}".format(self.num_samples).encode("ascii") 208 | value = { 209 | 'poses': seq_data[:, :165].astype(np.float64).transpose(1, 0), 210 | 'expression': seq_data[:, 165:].astype(np.float64).transpose(1, 0), 211 | 'speaker': speaker_id[speaker_name], 212 | 'aud_file': audio_fname, 213 | 'betas': betas, 214 | 'raw_aud': raw_audio, 215 | 'hubert': hubert_feat 216 | } 217 | value = pickle.dumps(value) 218 | txn.put(key, value) 219 | self.num_samples += 1 220 | 221 | print("num_samples:", self.num_samples) 222 | 223 | def get_mfcc(self, audio): 224 | t = ta.transforms.MFCC( 225 | sample_rate=16000, 226 | n_mfcc=64, 227 | melkwargs={ 228 | "n_fft": 2048, 229 | "hop_length": 1072,#536, 230 | "n_mels": 256, 231 | "mel_scale": "htk" 232 | } 233 | ) 234 | return t(torch.from_numpy(audio)) 235 | 236 | def __len__(self): 237 | return self.num_samples 238 | 239 | def __getitem__(self, index): 240 | with self.lmdb_env.begin(write=False) as txn: 241 | key = "{:005}".format(index).encode("ascii") 242 | sample = txn.get(key) 243 | sample = pickle.loads(sample) 244 | 245 | sample['hubert'] = sample['hubert'].detach().numpy() 246 | sample['raw_aud'] = ta.transforms.Resample(16000, 32000)(sample['raw_aud']) 247 | sample['raw_aud'] = sample['raw_aud'].detach().numpy() 248 | 249 | return sample -------------------------------------------------------------------------------- /scripts/nets/diffuser.py: -------------------------------------------------------------------------------- 1 | import math 2 | import torch 3 | import torch.nn as nn 4 | import torch.nn.functional as F 5 | import lightning as L 6 | 7 | from tqdm import tqdm 8 | 9 | from data_utils.show_data_utils.lower_body import c_index_3d 10 | from .diffusion_util import VarianceSchedule 11 | 12 | from .transformer_model import TransformerModel 13 | 14 | from scripts.renderer import Renderer 15 | 16 | class Diffuser(L.LightningModule): 17 | def __init__(self, 18 | num_poses=88, 19 | num_pre_poses=None, 20 | prediction_target='sample', 21 | use_class_labels=False, 22 | predict_parts=['face', 'upper_body'], 23 | audio_feat_dim=1024, 24 | audio_map_dim=64, 25 | input_dim=64, 26 | num_hiddens=512, 27 | num_hidden_layers=8, 28 | num_steps=500, 29 | classifier_free=False, 30 | null_cond_prob=0.1, 31 | do_annealing=False, 32 | split=True, 33 | adapter_reduction_factor=8, 34 | method_name='test', 35 | ): 36 | super().__init__() 37 | self.save_hyperparameters() 38 | self.prediction_target = prediction_target 39 | self.method_name = method_name 40 | self.num_poses = num_poses 41 | self.num_pre_poses = num_pre_poses 42 | 43 | self.predict_face = True if 'face' in predict_parts else False 44 | self.predict_body = True if 'upper_body' in predict_parts else False 45 | self.lower_body = True if 'lower_body' in predict_parts else False 46 | 47 | self.audio_map_dim = audio_map_dim 48 | self.audio_feat_dim = audio_feat_dim 49 | 50 | self.num_hiddens = num_hiddens 51 | self.num_hidden_layers = num_hidden_layers 52 | 53 | self.use_class_labels = use_class_labels 54 | 55 | self.c_index = c_index_3d 56 | 57 | self.face_dim = 103 58 | self.hand_dim = 90 59 | self.upper_body_dim = 39 60 | self.lower_body_dim = 33 61 | self.body_dim = self.hand_dim + self.upper_body_dim 62 | 63 | self.input_dim = input_dim 64 | self.output_dim = input_dim 65 | 66 | self.audio_map = nn.Linear(self.audio_feat_dim, self.audio_map_dim) 67 | 68 | self.split = split 69 | 70 | self.face_to_latent = nn.Linear(self.face_dim, self.input_dim) 71 | self.latent_to_face = nn.Linear(self.output_dim, self.face_dim) 72 | 73 | self.body_to_latent = nn.Linear(self.body_dim, self.input_dim) 74 | self.latent_to_body = nn.Linear(self.output_dim, self.body_dim) 75 | 76 | input_dim = self.input_dim * 2 + 1 + self.audio_map_dim + 3 + (4 if self.use_class_labels else 0) 77 | 78 | self.model = TransformerModel( 79 | seq_len=self.num_poses, 80 | input_dim=input_dim, 81 | output_dim=self.output_dim, 82 | hidden_dim=self.num_hiddens, 83 | encoder_depth=self.num_hidden_layers // 2, 84 | encoder_heads=8, 85 | decoder_depth=self.num_hidden_layers // 2, 86 | decoder_heads=8, 87 | mlp_ratio=4., 88 | norm_layer=nn.LayerNorm, 89 | split=split, 90 | adapter_reduction_factor=adapter_reduction_factor 91 | ) 92 | 93 | self.noise_scheduler = VarianceSchedule( 94 | num_steps=num_steps, 95 | beta_1=1e-4, 96 | beta_T=0.02, 97 | mode='linear' 98 | ) 99 | 100 | # diffusion sampling params 101 | self.do_annealing = do_annealing 102 | self.classifier_free = classifier_free 103 | 104 | if self.classifier_free: 105 | self.null_cond_prob = null_cond_prob 106 | null_embed_dim = self.input_dim * 2 + 1 * 2 + self.audio_map_dim * 2 + (8 if self.use_class_labels else 0) 107 | self.null_cond_emb = nn.Parameter(torch.randn(1, null_embed_dim)) 108 | self.do_eval = False 109 | 110 | def get_pre_poses(self, poses): 111 | pre_pose = poses.new_zeros((poses.shape[0], poses.shape[1], poses.shape[2] + 1)) 112 | pre_pose[:, 0:self.num_pre_poses, :-1] = poses[:, 0:self.num_pre_poses] 113 | pre_pose[:, 0:self.num_pre_poses, -1] = 1 # indicating bit for constraints 114 | return pre_pose 115 | 116 | def configure_optimizers(self): 117 | parameters = list(self.model.parameters()) 118 | 119 | parameters += (list(self.face_to_latent.parameters()) 120 | + list(self.body_to_latent.parameters()) 121 | + list(self.latent_to_face.parameters()) 122 | + list(self.latent_to_body.parameters())) 123 | 124 | parameters += list(self.audio_map.parameters()) 125 | 126 | optimizer = torch.optim.Adam( 127 | parameters, 128 | lr=1e-4, 129 | betas=(0.9, 0.999) 130 | ) 131 | 132 | return optimizer 133 | 134 | def get_loss(self, target, pred, rec_weight=1.0, vel_weight=1.0): 135 | loss_dict = {} 136 | 137 | rec_mat = rec_weight * F.l1_loss(pred, target, reduction='none') 138 | rec_loss = torch.mean(rec_mat) 139 | loss_dict['rec_loss'] = rec_loss 140 | 141 | velocity_weight = vel_weight 142 | v_pr = pred[:, 1:] - pred[:, :-1] 143 | v_gt = target[:, 1:] - target[:, :-1] 144 | velocity_loss = torch.mean(torch.abs(v_pr - v_gt)) 145 | vel_loss = velocity_weight * velocity_loss 146 | 147 | loss_dict['vel_loss'] = vel_loss 148 | 149 | loss_dict['loss'] = loss_dict['rec_loss'] + loss_dict['vel_loss'] 150 | 151 | return loss_dict 152 | 153 | def get_inputs(self, batch): 154 | audio_feat = batch['hubert'].squeeze(dim=1) 155 | 156 | poses = batch['poses'] 157 | 158 | # split pose to face/body 159 | face_poses = poses[:, :3, :] 160 | expression = batch['expression'] 161 | face_poses = torch.cat([face_poses, expression], dim=1).permute(0, 2, 1) 162 | 163 | body_poses = poses[:, self.c_index, :].permute(0, 2, 1) 164 | class_labels = F.one_hot(batch['speaker'] - 20, 4) 165 | 166 | return face_poses, body_poses, audio_feat, class_labels 167 | 168 | def process_inputs(self, face_poses, body_poses, audio_feat, class_labels=None): 169 | face_latent = self.face_to_latent(face_poses) 170 | body_latent = self.body_to_latent(body_poses) 171 | 172 | face_pre = self.get_pre_poses(face_latent) 173 | body_pre = self.get_pre_poses(body_latent) 174 | 175 | audio_feat = self.audio_map(audio_feat) 176 | 177 | body_context = torch.cat([body_pre, audio_feat], dim=-1) 178 | face_context = torch.cat([face_pre, audio_feat], dim=-1) 179 | 180 | if class_labels is not None: 181 | class_labels = class_labels.unsqueeze(dim=1).repeat(1, self.num_poses, 1) 182 | body_context = torch.cat([body_context, class_labels], dim=-1) 183 | face_context = torch.cat([face_context, class_labels], dim=-1) 184 | 185 | context = torch.cat([face_context, body_context], dim=-1) 186 | 187 | joint_poses = torch.cat([face_poses, body_poses], dim=-1) 188 | 189 | return joint_poses, context 190 | 191 | def forward_train(self, x0, context): 192 | if self.classifier_free: 193 | mask = torch.zeros((x0.shape[0],), device=x0.device, dtype=x0.dtype).uniform_(0, 1) < self.null_cond_prob 194 | context = torch.where(mask.unsqueeze(1).unsqueeze(2), self.null_cond_emb.repeat(context.shape[1], 1).unsqueeze(0), context) 195 | 196 | bsz = x0.shape[0] 197 | e_rand = torch.randn_like(x0) 198 | 199 | timesteps = self.noise_scheduler.uniform_sample_t(bsz) 200 | alpha_bar = self.noise_scheduler.alpha_bars[timesteps] 201 | beta = self.noise_scheduler.betas[timesteps] 202 | 203 | c0 = torch.sqrt(alpha_bar).view(-1, 1, 1) # (B, 1, 1) 204 | c1 = torch.sqrt(1 - alpha_bar).view(-1, 1, 1) # (B, 1, 1) 205 | 206 | noisy_x0 = c0 * x0 + c1 * e_rand 207 | 208 | noisy_f = noisy_x0[:, :, :103] 209 | noisy_b = noisy_x0[:, :, 103:] 210 | face_latent = self.face_to_latent(noisy_f) 211 | body_latent = self.body_to_latent(noisy_b) 212 | 213 | noisy_sample = torch.cat([face_latent, body_latent], dim=-1) 214 | face_latent_pred, body_latent_pred = self.model(noisy_sample, beta, context) 215 | 216 | face_pred = self.latent_to_face(face_latent_pred) 217 | body_pred = self.latent_to_body(body_latent_pred) 218 | 219 | return face_pred, body_pred, face_latent_pred, body_latent_pred 220 | 221 | def training_step(self, batch, batch_idx): 222 | face_poses, body_poses, audio_feat, class_labels = self.get_inputs(batch) 223 | joint_poses, context = self.process_inputs(face_poses, body_poses, audio_feat, 224 | class_labels=class_labels if self.use_class_labels else None) 225 | 226 | face_pred, body_pred, face_latent_pred, body_latent_pred = self.forward_train(joint_poses, context) 227 | 228 | # compute loss 229 | face_loss = self.get_loss(face_poses, face_pred, 1.0, 1.0) 230 | body_loss = self.get_loss(body_poses, body_pred, 1.0, 1.0) 231 | 232 | loss_dict = {} 233 | loss_dict['loss'] = face_loss['loss'] + body_loss['loss'] 234 | loss_dict['face_rec'] = face_loss['rec_loss'] 235 | loss_dict['face_vel'] = face_loss['vel_loss'] 236 | loss_dict['body_rec'] = body_loss['rec_loss'] 237 | loss_dict['body_vel'] = body_loss['vel_loss'] 238 | 239 | self.log_dict(loss_dict, prog_bar=True) 240 | 241 | return loss_dict 242 | 243 | def validation_step(self, batch, batch_idx): 244 | pass 245 | 246 | def on_test_start(self): 247 | pass 248 | 249 | def test_step(self, batch, batch_idx): 250 | pass 251 | 252 | def forward_sample(self, context): 253 | batch_size = 1 254 | x_t = torch.randn([batch_size, self.num_poses, self.face_dim + self.body_dim]).to(context.device) 255 | 256 | traj = [] 257 | if self.classifier_free: 258 | uncondition_embedding = self.null_cond_emb.repeat(context.shape[1], 1).unsqueeze(0) 259 | else: 260 | uncondition_embedding = None 261 | 262 | for t in tqdm(range(self.noise_scheduler.num_steps, 0, -1), disable=True): 263 | z = torch.randn_like(x_t) if t > 1 else torch.zeros_like(x_t) 264 | 265 | alpha = self.noise_scheduler.alphas[t] 266 | alpha_bar = self.noise_scheduler.alpha_bars[t] 267 | sigma = self.noise_scheduler.get_sigmas(t, 0.0) 268 | beta = self.noise_scheduler.betas[[t] * batch_size] 269 | 270 | if uncondition_embedding is not None: 271 | noisy_f = x_t[:, :, :103] 272 | noisy_b = x_t[:, :, 103:] 273 | face_latent = self.face_to_latent(noisy_f) 274 | body_latent = self.body_to_latent(noisy_b) 275 | x_in = torch.cat([face_latent, body_latent], dim=-1) 276 | 277 | x_in = torch.cat([x_in] * 2) 278 | beta_in = torch.cat([beta] * 2) 279 | 280 | uncond_emb = uncondition_embedding.repeat(x_t.shape[0],1,1) 281 | context_in = torch.cat([uncond_emb, context]) 282 | pred_face_latent, pred_body_latent = self.model(x_in, beta=beta_in, context=context_in)#.chunk(2) 283 | pred_face = self.latent_to_face(pred_face_latent) 284 | pred_body = self.latent_to_body(pred_body_latent) 285 | 286 | pred_uncond_out, pred_out = torch.cat([pred_face, pred_body], dim=-1).chunk(2) 287 | 288 | pred = pred_uncond_out + 1.15 * (pred_out - pred_uncond_out) 289 | 290 | else: 291 | noisy_f = x_t[:, :, :103] 292 | noisy_b = x_t[:, :, 103:] 293 | face_latent = self.face_to_latent(noisy_f) 294 | body_latent = self.body_to_latent(noisy_b) 295 | x_in = torch.cat([face_latent, body_latent], dim=-1) 296 | pred_face_latent, pred_body_latent = self.model(x_in, beta=beta, context=context) 297 | pred_face = self.latent_to_face(pred_face_latent) 298 | pred_body = self.latent_to_body(pred_body_latent) 299 | 300 | pred = torch.cat([pred_face, pred_body], dim=-1) 301 | traj.append(pred) 302 | 303 | if self.do_annealing: 304 | t0 = 25 305 | if t < t0 and t > 1: 306 | sigma_a = 1/t0/t0*(t-t0)*(t-t0) 307 | z0 = sigma_a * torch.randn_like(x_t[:,0,:].unsqueeze(1)) 308 | 309 | res = torch.zeros_like(z) 310 | for n in range(x_t.shape[1]): 311 | zn = math.sqrt((1-sigma_a*sigma_a)) * torch.randn_like(x_t[:,0,:].unsqueeze(1)) 312 | res[:,n:n+1,:] = zn + z0 313 | z = res 314 | 315 | if self.prediction_target == 'sample': 316 | if t > 1: 317 | pred_noise = (torch.sqrt(1.0 / alpha_bar) * x_t - pred) / torch.sqrt(1.0 / alpha_bar - 1.0) 318 | alpha_next = self.noise_scheduler.alpha_bars[t-1] 319 | c = torch.sqrt(1 - alpha_next - sigma ** 2) 320 | x_t = pred * torch.sqrt(alpha_next) + c * pred_noise + sigma * z 321 | else: 322 | x_t = pred 323 | 324 | pred_face = pred[:, :, :103] 325 | pred_body = pred[:, :, 103:] 326 | 327 | pred_face_in_latent = self.face_to_latent(pred_face) 328 | pred_body_in_latent = self.body_to_latent(pred_body) 329 | 330 | return pred_face, pred_body, pred_face_in_latent, pred_body_in_latent, traj 331 | 332 | def inference(self, batch, batch_idx): 333 | face_poses, body_poses, audio_feat, class_labels = self.get_inputs(batch) 334 | if self.use_class_labels: 335 | class_labels = class_labels.unsqueeze(dim=1).repeat(1, self.num_poses, 1) 336 | else: 337 | class_labels = None 338 | 339 | num_segments = int(face_poses.shape[1] // (self.num_poses - self.num_pre_poses)) 340 | num_segments = num_segments - 1 if (num_segments * (self.num_poses - self.num_pre_poses) + self.num_pre_poses) > face_poses.shape[1] else num_segments 341 | 342 | face_latent = self.face_to_latent(face_poses[:, :self.num_poses]) 343 | body_latent = self.body_to_latent(body_poses[:, :self.num_poses]) 344 | 345 | face_pre = self.get_pre_poses(face_latent) 346 | body_pre = self.get_pre_poses(body_latent) 347 | 348 | face_pose_segments = [] 349 | body_pose_segments = [] 350 | face_clips = [] 351 | body_clips = [] 352 | 353 | audio_feat = self.audio_map(audio_feat) 354 | for i in range(num_segments): 355 | index = i * self.num_poses - i * self.num_pre_poses 356 | 357 | audio_ft = audio_feat[:, index:(index + self.num_poses)] 358 | if audio_ft.shape[1] < self.num_poses: 359 | continue 360 | 361 | face_context = torch.cat([face_pre, audio_ft], dim=-1) 362 | body_context = torch.cat([body_pre, audio_ft], dim=-1) 363 | if class_labels is not None: 364 | body_context = torch.cat([body_context, class_labels], dim=-1) 365 | face_context = torch.cat([face_context, class_labels], dim=-1) 366 | context = torch.cat([face_context, body_context], dim=-1) 367 | 368 | pred_face, pred_body, pred_face_latent, pred_body_latent, traj = self.forward_sample(context) 369 | 370 | face_clips.append(pred_face) 371 | body_clips.append(pred_body) 372 | 373 | face_pre[:, 0:self.num_pre_poses, :-1] = pred_face_latent[:, -self.num_pre_poses:, :] 374 | body_pre[:, 0:self.num_pre_poses, :-1] = pred_body_latent[:, -self.num_pre_poses:, :] 375 | 376 | if len(face_pose_segments) > 0: 377 | face_last_poses = face_pose_segments[-1][:, -self.num_pre_poses:] 378 | body_last_poses = body_pose_segments[-1][:, -self.num_pre_poses:] 379 | face_pose_segments[-1] = face_pose_segments[-1][:, :-self.num_pre_poses] # delete last M frames 380 | body_pose_segments[-1] = body_pose_segments[-1][:, :-self.num_pre_poses] # delete last M frames 381 | 382 | for j in range(face_last_poses.shape[1]): 383 | n = face_last_poses.shape[1] 384 | face_prev = face_last_poses[:, j] 385 | face_next = pred_face[:, j] 386 | pred_face[:, j] = face_prev * (n - j) / (n + 1) + face_next * (j + 1) / (n + 1) 387 | 388 | n = body_last_poses.shape[1] 389 | body_prev = body_last_poses[:, j] 390 | body_next = pred_body[:, j] 391 | pred_body[:, j] = body_prev * (n - j) / (n + 1) + body_next * (j + 1) / (n + 1) 392 | 393 | face_pose_segments.append(pred_face) 394 | body_pose_segments.append(pred_body) 395 | 396 | face_out_pose = torch.cat(face_pose_segments, dim=1)[0] 397 | body_out_pose = torch.cat(body_pose_segments, dim=1)[0] 398 | face_poses = face_poses[0] 399 | body_poses = body_poses[0] 400 | 401 | return face_out_pose, body_out_pose, face_poses, body_poses, face_clips, body_clips 402 | 403 | def predict_step(self, batch, batch_idx): 404 | if self.last_aud == batch['aud_file'][0]: 405 | return 406 | 407 | face_out_pose, body_out_pose, face_poses, body_poses, face_clips, body_clips = self.inference(batch, batch_idx) 408 | 409 | self.last_aud = batch['aud_file'][0] 410 | if not self.do_eval: 411 | self.renderer.render(self.method_name, face_out_pose, body_out_pose, 412 | face_poses, body_poses, 413 | batch['aud_file'][0], batch['betas'][0]) 414 | 415 | else: 416 | pred = torch.cat([face_out_pose[:, :3], body_out_pose, face_out_pose[:, -100:]], dim=-1) 417 | gt = torch.cat([face_poses[:, :3], body_poses, face_poses[:, -100:]], dim=-1) 418 | 419 | return { 420 | "pose": pred.cpu(), 421 | "target": gt.cpu(), 422 | "betas": batch['betas'][0].cpu(), 423 | "audio": batch['aud_file'][0] 424 | } 425 | 426 | def on_predict_start(self): 427 | self.last_aud = None 428 | self.renderer = Renderer() 429 | 430 | def on_predict_batch_end(self, outputs, batch, batch_idx, dataloader_idx=0): 431 | pass 432 | 433 | def validation_step(self, batch, batch_idx): 434 | self.renderer = Renderer() 435 | face_out_pose, body_out_pose, face_poses, body_poses, _, _ = self.inference(batch, batch_idx) 436 | 437 | self.renderer.render(f'{self.method_name}-val', face_out_pose, body_out_pose, 438 | face_poses, body_poses, 439 | batch['aud_file'][0], batch['betas'][0], 440 | overwrite=True) 441 | 442 | self.renderer = None -------------------------------------------------------------------------------- /data_utils/show_data_utils/consts.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | speaker_id = { 4 | 'Amel_Karboul': 0, 5 | 'Bill_Gates': 1, 6 | 'Christina_Wallace': 2, 7 | 'Dan_Ariely': 3, 8 | 'daniel_susskind': 4, 9 | 'Dena_Simmons': 5, 10 | 'Enric_Sala': 6, 11 | 'FeiFei_Li': 7, 12 | 'GabeBarcia_Colombo': 8, 13 | 'Kelly_Richmond_Pope': 9, 14 | 'Keller_Rinaudo': 10, 15 | 'Laurel_Braitman': 11, 16 | 'Lisa_Feldman_Barrett': 12, 17 | 'molly_winter': 13, 18 | 'Sara_DeWitt': 14, 19 | 'Seema_Bansal': 15, 20 | 'Stacy_Smith': 16, 21 | 'Stanley_McChrystal': 17, 22 | 'Vicki_Arroyo': 18, 23 | 'speeker_oliver': 19, 24 | 'oliver': 20, 25 | 'chemistry': 21, 26 | 'seth': 22, 27 | 'conan': 23, 28 | } 29 | 30 | checker_stats={ 31 | 'angelica': { 32 | "finger_distance": 0.8, 33 | "finger_angle": 0.2, 34 | "finger_offset": [0.9, 0.9], 35 | "finger_position": [0.9, 0.9, 0.9, 0.9], 36 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]] 37 | }, 38 | 39 | 'oliver': { 40 | "finger_distance": 0.8, 41 | "finger_angle": 0.2, 42 | "finger_offset": [0.9, 0.9], 43 | "finger_position": [0.9, 0.9, 0.9, 0.9], 44 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]] 45 | }, 46 | 47 | 'seth': { 48 | "finger_distance": 0.8, 49 | "finger_angle": 0.2, 50 | "finger_offset": [0.9, 0.9], 51 | "finger_position": [0.9, 0.9, 0.9, 0.9], 52 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]] 53 | }, 54 | 55 | 'shelly': { 56 | "finger_distance": 0.8, 57 | "finger_angle": 0.2, 58 | "finger_offset": [0.9, 0.9], 59 | "finger_position": [0.9, 0.9, 0.9, 0.9], 60 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]] 61 | }, 62 | 63 | 'Dan_Ariely': { #(38685, 54804) 64 | "finger_distance": 0.9, 65 | "finger_angle": 0.3, 66 | "finger_offset": [1.5, 1.5], 67 | "finger_position": [1.5, 1.5, 1.5, 1.5], 68 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 69 | "positive_thres": 3, 70 | "negative_thres": 2 71 | }, 72 | 73 | 'Bill_Gates': { #(29734, 43630) 74 | "finger_distance": 0.9, 75 | "finger_angle": 0.3, 76 | "finger_offset": [1.5, 1.5], 77 | "finger_position": [1.5, 1.5, 1.5, 1.5], 78 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 79 | "positive_thres": 3, 80 | "negative_thres": 2 81 | }, 82 | 83 | 'Amel_Karboul': { 84 | "finger_distance": 0.9, 85 | "finger_angle": 0.3, 86 | "finger_offset": [1.5, 1.5], 87 | "finger_position": [1.5, 1.5, 1.5, 1.5], 88 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 89 | "positive_thres": 3, 90 | "negative_thres": 2 91 | }, 92 | 93 | 'Christina_Wallace': { 94 | "finger_distance": 0.9, 95 | "finger_angle": 0.3, 96 | "finger_offset": [1.5, 1.5], 97 | "finger_position": [1.5, 1.5, 1.5, 1.5], 98 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 99 | "positive_thres": 3, 100 | "negative_thres": 2 101 | }, 102 | 103 | 'daniel_susskind': { #(21066, 54714) 104 | "finger_distance": 0.9, 105 | "finger_angle": 0.3, 106 | "finger_offset": [1.5, 1.5], 107 | "finger_position": [1.5, 1.5, 1.5, 1.5], 108 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 109 | "positive_thres": 2, 110 | "negative_thres": 2 111 | }, 112 | 113 | 'Dena_Simmons': { 114 | "finger_distance": 0.9, 115 | "finger_angle": 0.3, 116 | "finger_offset": [1.5, 1.5], 117 | "finger_position": [1.5, 1.5, 1.5, 1.5], 118 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 119 | "positive_thres": 3, 120 | "negative_thres": 2 121 | }, 122 | 123 | 'Enric_Sala': { 124 | "finger_distance": 0.9, 125 | "finger_angle": 0.3, 126 | "finger_offset": [1.5, 1.5], 127 | "finger_position": [1.5, 1.5, 1.5, 1.5], 128 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 129 | "positive_thres": 2, 130 | "negative_thres": 2 131 | }, 132 | 133 | 'FeiFei_Li': { 134 | "finger_distance": 0.9, 135 | "finger_angle": 0.3, 136 | "finger_offset": [1.5, 1.5], 137 | "finger_position": [1.5, 1.5, 1.5, 1.5], 138 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 139 | "positive_thres": 2, 140 | "negative_thres": -1 141 | }, 142 | 143 | 'GabeBarcia_Colombo': { 144 | "finger_distance": 0.9, 145 | "finger_angle": 0.3, 146 | "finger_offset": [1.5, 1.5], 147 | "finger_position": [1.5, 1.5, 1.5, 1.5], 148 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 149 | "positive_thres": 2, 150 | "negative_thres": -1 151 | }, 152 | 153 | 'Keller_Rinaudo': { #(4011, 10623) 154 | "finger_distance": 0.9, 155 | "finger_angle": 0.3, 156 | "finger_offset": [1.5, 1.5], 157 | "finger_position": [1.5, 1.5, 1.5, 1.5], 158 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 159 | "positive_thres": 3, 160 | "negative_thres": -1 161 | }, 162 | 163 | 'Kelly_Richmond_Pope': { 164 | "finger_distance": 0.9, 165 | "finger_angle": 0.3, 166 | "finger_offset": [1.5, 1.5], 167 | "finger_position": [1.5, 1.5, 1.5, 1.5], 168 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 169 | "positive_thres": 2, 170 | "negative_thres": 2 171 | }, 172 | 173 | 'Laurel_Braitman': { 174 | "finger_distance": 0.9, 175 | "finger_angle": 0.3, 176 | "finger_offset": [1.5, 1.5], 177 | "finger_position": [1.5, 1.5, 1.5, 1.5], 178 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 179 | "positive_thres": 3, 180 | "negative_thres": 2 181 | }, 182 | 183 | 'Lisa_Feldman_Barrett': { 184 | "finger_distance": 0.9, 185 | "finger_angle": 0.3, 186 | "finger_offset": [1.5, 1.5], 187 | "finger_position": [1.5, 1.5, 1.5, 1.5], 188 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 189 | "positive_thres": 2, 190 | "negative_thres": 2 191 | }, 192 | 193 | 'molly_winter': { 194 | "finger_distance": 0.9, 195 | "finger_angle": 0.3, 196 | "finger_offset": [1.5, 1.5], 197 | "finger_position": [1.5, 1.5, 1.5, 1.5], 198 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 199 | "positive_thres": 2, 200 | "negative_thres": 2 201 | }, 202 | 203 | 'Sara_DeWitt': { 204 | "finger_distance": 0.9, 205 | "finger_angle": 0.3, 206 | "finger_offset": [1.5, 1.5], 207 | "finger_position": [1.5, 1.5, 1.5, 1.5], 208 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 209 | "positive_thres": 3, 210 | "negative_thres": 2 211 | }, 212 | 213 | 'Seema_Bansal': { 214 | "finger_distance": 0.9, 215 | "finger_angle": 0.3, 216 | "finger_offset": [1.5, 1.5], 217 | "finger_position": [1.5, 1.5, 1.5, 1.5], 218 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 219 | "positive_thres": 3, 220 | "negative_thres": 2 221 | }, 222 | 223 | 'Vicki_Arroyo': { 224 | "finger_distance": 0.9, 225 | "finger_angle": 0.3, 226 | "finger_offset": [1.5, 1.5], 227 | "finger_position": [1.5, 1.5, 1.5, 1.5], 228 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 229 | "positive_thres": 3, 230 | "negative_thres": 2 231 | }, 232 | 233 | 'Stacy_Smith_no_good': { 234 | "finger_distance": 0.9, 235 | "finger_angle": 0.3, 236 | "finger_offset": [1.5, 1.5], 237 | "finger_position": [1.5, 1.5, 1.5, 1.5], 238 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 239 | "positive_thres": 3, 240 | "negative_thres": 2 241 | }, 242 | 243 | 'Stanley_McChrystal': { 244 | "finger_distance": 0.9, 245 | "finger_angle": 0.3, 246 | "finger_offset": [1.5, 1.5], 247 | "finger_position": [1.5, 1.5, 1.5, 1.5], 248 | "finger_velocity": [[0.08, 0.08, 0.08, 0.08], [0.06, 0.06, 0.06, 0.06], [0.15, 0.15, 0.15, 0.15]], 249 | "positive_thres": 3, 250 | "negative_thres": 2 251 | }, 252 | } 253 | 254 | SPEAKERS_CONFIG = { 255 | 'almaram': 256 | {'median': np.array([0., -106., -194., -104., 106., 162., 137., 134., 257 | 144., 126., 118., 104., 119., 111., 105., 101., 258 | 125., 122., 116., 111., 133., 131., 129., 124., 259 | 140., 139., 140., 140., -101., -87., -82., -74., 260 | -75., -86., -83., -81., -79., -85., -85., -82., 261 | -81., -83., -85., -83., -82., -84., -81., -80., 262 | -79., 0., -6., 117., 126., 5., 139., 139., 263 | 116., 131., 144., 136., 135., 134., 131., 130., 264 | 132., 135., 132., 133., 135., 137., 135., 136., 265 | 137., 140., 138.5, 138., 139., 109., 110., 114., 266 | 117., 117., 114., 116., 119., 119., 117., 120., 267 | 123., 122., 122., 127., 126., 125., 125.5, 130., 268 | 130., 128.]), 269 | 'mean': np.array([0., -102.831, -187.225, -105.001, 103.684, 159.654, 270 | 126.302, 122.931, 128.711, 112.718, 106.145, 96.845, 271 | 108.125, 101.695, 97.327, 93.299, 112.474, 108.298, 272 | 103.437, 99.548, 117.103, 113.895, 110.956, 106.925, 273 | 121.72, 119.542, 118.971, 118.283, -96.014, -87.539, 274 | -80.057, -73.948, -71.795, -82.32, -79.115, -76.73, 275 | -74.388, -82.105, -80.296, -77.741, -76.255, -82.054, 276 | -81.601, -79.339, -77.542, -83.858, -79.748, -79.177, 277 | -78.283, 0., -5.559, 113.522, 114.089, 4.688, 278 | 134.756, 128.186, 105.581, 113.738, 127.147, 112.519, 279 | 113.059, 119.44, 113.858, 114.358, 116.299, 120.788, 280 | 116.685, 117.822, 119.544, 126.314, 122.744, 122.36, 281 | 122.702, 131.012, 127.488, 126.576, 125.979, 102.175, 282 | 101.177, 100.914, 99.242, 96.896, 99.399, 99.966, 283 | 100.655, 100.153, 102.595, 104.855, 107.204, 106.748, 284 | 107.49, 111.118, 111.368, 110.997, 112.068, 114.87, 285 | 115.63, 114.635]), 286 | 'scale_factor': 1.518504709101034, 287 | 'std': np.array([0., 15.77442357, 31.74083135, 38.76473912, 16.00981399, 288 | 28.00046935, 40.03541927, 46.47948191, 52.37930392, 47.88657929, 289 | 48.78288609, 48.42624263, 46.59846966, 48.26843663, 50.59365643, 290 | 52.47084523, 48.17116694, 51.37568682, 53.37495696, 54.50430897, 291 | 50.88302655, 54.47836245, 56.48290063, 57.29840639, 54.71323058, 292 | 58.40441966, 60.72342348, 62.18302752, 46.9228708, 44.15867388, 293 | 46.51470467, 49.62792859, 52.8391046, 49.06342426, 52.13875502, 294 | 55.0459726, 57.37028374, 47.79499948, 51.69669606, 54.54852811, 295 | 56.73739486, 48.16782208, 51.27987714, 53.97625477, 56.09597344, 296 | 49.14352283, 51.41441914, 53.19296637, 54.5650521, 0., 297 | 6.80856218, 25.98910379, 51.67654283, 6.51771862, 27.4053729, 298 | 48.12067543, 44.45340751, 52.2424287, 71.22975074, 65.97734186, 299 | 72.21212861, 66.43695056, 66.68810866, 70.34944091, 74.74944548, 300 | 62.9067171, 64.10094988, 67.69410843, 71.30516155, 63.17366068, 301 | 63.74567016, 65.48774236, 67.96067389, 63.03325992, 62.88430532, 302 | 63.75716606, 64.36825739, 54.93795023, 60.33219432, 67.52062355, 303 | 69.96675951, 72.42787574, 67.3515538, 68.93075398, 70.52320168, 304 | 71.7720112, 64.30512402, 66.268982, 68.01139893, 69.14937813, 305 | 62.07604933, 64.26042387, 64.83709259, 65.68755583, 59.83643853, 306 | 61.15464905, 62.18182291, 62.71329823])}, 307 | 'angelica': { 308 | 'median': np.array([0., -112., -170., -51., 112., 169., 89., 65., 309 | 49.5, 35., 37., 40., 40., 41., 41., 42., 310 | 45., 45., 45., 45., 50., 49., 49., 48., 311 | 55., 54., 53., 53., -39., -20., 4., 19., 312 | 28., 4.5, 21., 28., 32., -1., 17., 23., 313 | 25., -6., 9., 15., 18., -11., 2., 7., 314 | 10., 0., 4., 153., 154., 0., 155., 158., 315 | 157., 156., 157., 159., 160., 158., 170., 179., 316 | 188., 163., 178., 190., 197., 167., 183., 194., 317 | 200., 173., 187., 195., 200., 153., 146., 139., 318 | 137., 134., 139., 148., 157., 163., 146., 158., 319 | 168., 173., 154., 166., 174., 179., 163., 172., 320 | 177., 180.]), 321 | 'mean': np.array([0., -109.943, -170.558, -58.044, 109.827, 168.036, 322 | 94.467, 58.97, 52.736, 45.407, 44.249, 45.665, 323 | 51.639, 49.735, 48.165, 46.499, 56.536, 53.554, 324 | 51.313, 48.981, 60.293, 57.029, 54.887, 53.198, 325 | 62.166, 59.695, 58.707, 57.117, -43.247, -27.359, 326 | -8.778, 3.673, 12.136, -8.683, 7.022, 14.388, 327 | 18.369, -13.301, 3.559, 10.722, 14.248, -18.083, 328 | -2.826, 4.011, 7.615, -21.951, -9.82, -4.64, 329 | -0.922, 0., 3.994, 150.072, 139.343, -0.505, 330 | 152.459, 153.141, 150.053, 147.183, 146.11, 148.093, 331 | 149.845, 146.275, 155.367, 162.994, 169.658, 152.608, 332 | 163.311, 173.255, 179.806, 158.304, 168.954, 177.697, 333 | 184.216, 163.439, 172.377, 178.879, 183.864, 137.297, 334 | 129.411, 121.703, 118.802, 115.731, 120.401, 126.067, 335 | 131.436, 136.041, 127.648, 134.987, 142.396, 146.487, 336 | 135.083, 142.758, 148.748, 152.58, 143.117, 149.36, 337 | 153.495, 156.382]), 338 | 'scale_factor': 1.4269190517359058, 339 | 'std': np.array([0., 16.41102529, 31.97449978, 46.67209085, 17.08171745, 340 | 27.65228208, 37.84749544, 64.7177804, 56.76208509, 51.92178108, 341 | 51.05505851, 53.54873271, 53.50798706, 53.75848561, 55.10932566, 342 | 57.11749293, 53.06833994, 51.87146695, 53.27754716, 55.13937467, 343 | 53.40742599, 51.39184915, 51.61963029, 53.751026, 54.54957785, 344 | 52.46150946, 52.15593112, 52.43355139, 55.59562924, 58.58003174, 345 | 62.68405472, 66.61520901, 72.01281486, 63.33601275, 68.34514991, 346 | 69.40195571, 71.46270943, 61.3120086, 65.63071323, 66.73936407, 347 | 68.31931276, 59.29323832, 62.04278946, 63.52757574, 65.27939012, 348 | 57.65251598, 59.16748769, 60.96555093, 62.12406873, 0., 349 | 8.30312977, 26.11135416, 53.26602436, 11.54088277, 29.07432405, 350 | 38.48177645, 44.61889948, 46.82268159, 51.29107037, 55.75426756, 351 | 61.06446573, 52.26399693, 56.81973522, 59.92917456, 62.63712187, 352 | 52.8356351, 56.60500224, 59.76263026, 61.87583021, 53.49947275, 353 | 56.04178695, 58.49736055, 60.91419657, 54.07829767, 55.98037934, 354 | 57.79308228, 59.49702097, 56.72689654, 60.67602557, 67.52811852, 355 | 73.58046477, 78.81067592, 71.40644368, 79.9644578, 85.45076889, 356 | 89.87280634, 71.75058255, 79.95804419, 84.27783329, 87.16994798, 357 | 71.19769737, 78.32231761, 82.11062353, 85.16347574, 70.63294777, 358 | 75.82125296, 78.49320974, 80.60754354]) 359 | }, 360 | 'chemistry': {'median': np.array([0., -149., -196., -90., 145., 208., 235., 246., 361 | 230.5, 216., 210., 211., 246., 243., 234., 227., 362 | 254., 245., 231., 223., 258., 248., 235., 227., 363 | 258., 249., 241., 234., -78., -57., -32., -10., 364 | 7., -48., -22., -7., 1., -54., -26., -10., 365 | -3.5, -58., -31., -17., -11., -57., -35., -25., 366 | -19., 0., 6., 218., 261., -5., 163., 145., 367 | 133., 120.5, 108., 104., 103., 101., 99., 102., 368 | 105., 115., 115., 119., 121., 129., 131., 131., 369 | 132., 142., 143., 144., 144., 264., 244., 229., 370 | 225., 217., 226., 225., 232., 237., 241., 241., 371 | 249., 252., 257., 258., 264., 266., 275., 278., 372 | 280., 279.]), 373 | 'mean': np.array([0., -143.897, -190.058, -86.903, 140.926, 217.721, 374 | 264.637, 268.052, 258.891, 250.801, 250.009, 253.757, 375 | 274.376, 274.907, 272.892, 271.535, 283.333, 280.266, 376 | 273.551, 270.236, 287.871, 283.827, 275.362, 270.974, 377 | 288.984, 285.165, 278.785, 274.5, -77.25, -57.731, 378 | -34.007, -13.901, 0.662, -47.15, -22.265, -8.555, 379 | -1.11, -52.623, -24.446, -11.432, -6.058, -55.034, 380 | -29.605, -18.433, -13.892, -54.819, -35.755, -27.038, 381 | -22.352, 0., 6.167, 206.923, 216.101, -6.115, 382 | 152.987, 128.342, 124.441, 115.255, 103.173, 99.066, 383 | 98.378, 89.811, 85.753, 88.11, 90.737, 99.924, 384 | 99.372, 105.05, 107.36, 111.877, 113.49, 117.972, 385 | 119.45, 124.973, 126.641, 128.84, 129.162, 217.45, 386 | 200.878, 185.423, 180.274, 176.279, 180.945, 177.688, 387 | 181.782, 185.668, 194.886, 193.136, 196.672, 198.439, 388 | 209.824, 208.904, 210.14, 210.388, 224.81, 224.579, 389 | 223.847, 222.846]), 390 | 'scale_factor': 1.1010136119625171, 391 | 'std': np.array([0., 17.54703368, 35.7581688, 69.24384154, 392 | 16.8056099, 53.67166067, 105.93793103, 109.97522128, 393 | 119.78379322, 134.17275207, 147.06528115, 156.34138272, 394 | 135.87825663, 152.2457827, 163.87231107, 172.43461014, 395 | 134.22994491, 152.57799725, 160.81889006, 165.36223361, 396 | 132.95311339, 148.92147283, 155.09689538, 158.15342337, 397 | 132.44675815, 145.00957822, 149.17857344, 151.5445677, 398 | 70.96735517, 74.05220212, 79.28031881, 86.12266368, 399 | 91.10061337, 85.69535285, 94.60962306, 97.50350237, 400 | 98.95066397, 87.13493485, 96.15947735, 97.23624518, 401 | 97.90133112, 87.86163465, 96.21616795, 96.25821269, 402 | 96.51474673, 88.89298194, 95.43154078, 95.6565134, 403 | 95.6844193, 0., 9.75823299, 41.59960422, 404 | 85.24175502, 9.68275658, 49.8952586, 94.65167212, 405 | 102.899779, 105.34503299, 110.68926358, 117.52109446, 406 | 123.02262847, 116.44959974, 125.51849263, 131.95820513, 407 | 136.88519946, 120.07525234, 129.27803223, 132.21424848, 408 | 134.24947821, 122.7018332, 129.69374657, 130.27591956, 409 | 130.28394951, 124.37462873, 129.23850092, 129.14637587, 410 | 128.23497868, 92.32908263, 93.77521589, 97.21511236, 411 | 102.35374406, 107.13176541, 95.68562052, 103.19170827, 412 | 108.58317768, 113.0156174, 96.96912397, 104.87073712, 413 | 109.90668049, 113.97662163, 98.84680584, 106.12451547, 414 | 109.89005597, 112.6861813, 101.29443173, 106.64136045, 415 | 109.06442862, 110.48723132])}, 416 | 'conan': {'mean': np.array([0., -109.583, -156.881, -120.313, 109.631, 152.443, 417 | 108.144, 101.458, 92.114, 81.513, 76.847, 74.993, 418 | 91.03, 83.972, 81.598, 81.622, 95.874, 87.808, 419 | 85.537, 85.997, 99.22, 92.344, 90.057, 89.867, 420 | 102.278, 97.839, 95.828, 94.729, -112.329, -107.723, 421 | -101.084, -98.403, -97.372, -113.236, -106.546, -100.633, 422 | -97.867, -115.78, -107.062, -100.376, -97.709, -115.577, 423 | -107.58, -101.694, -98.566, -113.886, -107.761, -103.555, 424 | -100.291, 0., -3.122, 154.074, 210.401, 3.051, 425 | 167.82, 232.961, 237.28, 231.731, 227.719, 228.673, 426 | 230.681, 232.244, 237.448, 240.62, 242.516, 240.195, 427 | 246.415, 249.652, 249.489, 247.002, 253.542, 255.679, 428 | 254.841, 254.024, 258.919, 260.762, 260.172, 216.536, 429 | 210.82, 205.289, 204.407, 205.708, 212.984, 215.676, 430 | 216.734, 217.611, 222.036, 225.523, 225.602, 225.524, 431 | 230.145, 233.169, 232.708, 231.662, 236.648, 239.776, 432 | 239.635, 238.414]), 433 | 'scale_factor': 1.4305381955532037, 434 | 'std': np.array([0., 10.59231377, 32.5747577, 87.34243545, 435 | 11.07947828, 28.23531036, 81.80955485, 94.92227471, 436 | 96.95924404, 102.26105726, 108.35750824, 113.98373985, 437 | 105.4720489, 115.84258809, 120.26970689, 122.74060907, 438 | 105.35736388, 116.27625353, 119.70779687, 121.70631451, 439 | 104.85591829, 114.45731809, 117.19618488, 118.52391873, 440 | 104.49567798, 111.82849851, 114.05433975, 114.97168155, 441 | 99.95218236, 100.40852688, 105.43183079, 111.24512839, 442 | 116.71825742, 109.49891462, 119.41624632, 124.78480801, 443 | 128.55843539, 111.29522721, 121.82060645, 127.12367452, 444 | 129.74770256, 112.66641945, 122.448853, 126.91806161, 445 | 128.77232484, 114.58103248, 122.30987646, 125.25131925, 446 | 126.38526939, 0., 6.75537682, 32.26199814, 447 | 97.00566065, 6.26788633, 24.78805357, 94.33954356, 448 | 105.77244254, 112.9200719, 123.72302146, 132.94217567, 449 | 139.79612741, 125.72067636, 134.83989505, 139.963108, 450 | 143.67274531, 124.0620771, 133.07969332, 137.87443888, 451 | 140.63537208, 122.2001882, 130.13695953, 134.74150051, 452 | 137.58544152, 120.85215523, 126.25547291, 130.08463151, 453 | 131.9334545, 105.97377366, 113.70617222, 125.14332375, 454 | 132.79858189, 140.62497195, 128.00962364, 137.0962473, 455 | 141.59214401, 144.98927436, 126.15767398, 134.63195561, 456 | 138.48896561, 140.98466379, 124.44862384, 131.4354459, 457 | 134.99263956, 137.01364077, 122.28814373, 127.69337424, 458 | 130.25399716, 131.22054185]), 459 | 'median': np.array([0., -110., -153., -106., 110., 149., 106., 97., 460 | 83., 74., 71., 70., 85., 82., 81., 81., 461 | 90., 89., 87., 86., 93., 92., 91., 90., 462 | 95., 93., 94., 92., -101., -91., -78., -74., 463 | -74., -90., -80., -73., -69., -93., -80., -72., 464 | -69., -93., -80., -72., -69.5, -92., -81., -76., 465 | -73., 0., -4., 159., 207., 4., 171., 230., 466 | 235., 225., 213., 212., 216., 219., 226., 233., 467 | 238., 231., 241., 247., 248., 242., 252., 256., 468 | 256., 252., 260., 262., 262., 215., 202., 191., 469 | 189., 193., 207., 210., 209., 210., 220., 222., 470 | 220., 220., 230., 232., 229., 228., 238., 240., 471 | 238., 236.]), 472 | }, 473 | 'ellen': {'median': np.array([0., -129., -172., -147., 129., 171., 141., 133., 474 | 128., 119., 107.5, 101., 124., 121., 118., 118., 475 | 125., 119., 114., 114., 123., 116., 113., 112., 476 | 121., 113., 111., 109., -143., -137., -130., -120., 477 | -116., -139., -137., -135., -135., -142., -138., -134., 478 | -133., -141., -136., -132., -130., -139., -134., -131.5, 479 | -129., 0., -2., 198., 229., 0., 199., 253., 480 | 261., 251., 243., 238., 235., 263., 266., 265., 481 | 265., 273., 277., 277., 274., 280., 284., 283., 482 | 282., 285., 287., 288., 286., 228., 222., 217., 483 | 218., 219., 230., 236., 238., 240., 242., 249., 484 | 251., 250., 251., 257., 257., 255., 257., 262., 485 | 262., 260.]), 486 | 'mean': np.array([0., -118.909, -164.154, -147.246, 118.925, 160.707, 487 | 133.202, 126.031, 122.365, 116.286, 108.719, 106.006, 488 | 118.932, 113.969, 113.305, 115.011, 118.991, 112.665, 489 | 109.438, 109.385, 117.644, 111.169, 108.96, 107.772, 490 | 116.547, 110.923, 109.41, 107.968, -144.238, -140.508, 491 | -135.596, -132.849, -131.928, -145.429, -143.271, -141.212, 492 | -141.904, -146.314, -142.76, -138.772, -137.964, -145.332, 493 | -140.897, -137.975, -136.323, -143.97, -139.602, -138.326, 494 | -136.509, 0., -1.674, 186.215, 222.679, 1.261, 495 | 186.058, 252.238, 256.284, 254.343, 250.461, 249.989, 496 | 248.952, 262.385, 264.888, 265.272, 265.825, 268.538, 497 | 271.047, 272.562, 272.724, 273.782, 276.197, 277.758, 498 | 278.16, 276.863, 279.468, 282.137, 281.792, 221.492, 499 | 219.701, 217.669, 217.751, 219.06, 225.513, 228.427, 500 | 229.216, 229.918, 232.378, 236.486, 238.776, 239.216, 501 | 238.599, 242.803, 244.281, 244.736, 242.657, 246.497, 502 | 248.185, 248.794]), 503 | 'scale_factor': 1.3185415037379011, 504 | 'std': np.array([0., 25.8187668, 41.89625621, 77.94319396, 505 | 26.03765302, 36.60665446, 60.07478003, 68.73073577, 506 | 71.76289971, 78.7986688, 85.17248405, 91.8425063, 507 | 81.57343548, 90.51250764, 96.94054866, 103.783818, 508 | 80.62698629, 90.21175519, 96.14923898, 101.66000578, 509 | 80.05647547, 88.31894723, 94.51180032, 98.51348139, 510 | 80.68749464, 88.48727067, 91.83456811, 94.89260759, 511 | 85.40677582, 91.29359198, 100.86450706, 110.52797021, 512 | 117.97610273, 102.74902899, 113.07612285, 119.03282344, 513 | 124.60098228, 101.47065292, 111.75965462, 117.53972101, 514 | 121.85632812, 99.92104771, 109.12218102, 114.81892864, 515 | 118.45598622, 99.84089893, 107.37479032, 112.15367905, 516 | 113.79890122, 0., 5.87807145, 42.05188194, 517 | 94.98783058, 5.69902439, 41.39882409, 85.89787748, 518 | 92.3838262, 100.51717938, 109.75256935, 116.35522712, 519 | 122.94281474, 110.31635769, 115.28223391, 118.60499153, 520 | 121.26193292, 105.71004, 110.80258477, 115.78894661, 521 | 118.8850614, 103.46256558, 108.43064231, 113.94664293, 522 | 117.36026755, 102.35001823, 107.34869806, 111.92460065, 523 | 114.05449897, 103.00641697, 112.17914066, 121.99203023, 524 | 127.82240414, 133.5572177, 124.74606138, 130.2611403, 525 | 133.63072006, 136.23373032, 120.91488377, 127.17007433, 526 | 131.01745618, 132.5830432, 119.50055313, 125.03061302, 527 | 127.97185643, 129.91735952, 117.63924239, 121.72976625, 528 | 124.69851954, 126.28790743])}, 529 | 'jon': {'mean': np.array([0., -153.331, -220.516, -210.796, 160.263, 215.725, 530 | 113.459, 106.156, 81.586, 56.863, 41.095, 30.188, 531 | 70.704, 50.813, 37.224, 28.324, 78.826, 54.748, 532 | 40.502, 32.23, 84.64, 62.526, 49.402, 42.049, 533 | 87.848, 71.01, 61.826, 55.67, -205.849, -185.743, 534 | -168.707, -161.135, -152.156, -190.978, -188.077, -185.31, 535 | -183.466, -206.802, -204.832, -201.539, -199.346, -218.691, 536 | -218.876, -215.868, -212.868, -227.754, -229.963, -229.562, 537 | -227.931, 0., -2.292, 190.993, 231.52, -1.083, 538 | 220.65, 257.155, 261.606, 251.047, 243.471, 243.151, 539 | 243.737, 237.272, 240.32, 248.198, 255.309, 249.663, 540 | 256.813, 265.245, 269.657, 262.648, 268.498, 275.582, 541 | 278.131, 275.337, 280.445, 284.139, 285.841, 241.15, 542 | 242.714, 245.433, 247.933, 247.489, 234.907, 242.81, 543 | 254.631, 265.567, 239.662, 249.287, 264.716, 275.327, 544 | 246.93, 256.517, 270.548, 280.467, 255.458, 263.393, 545 | 273.444, 281.315]), 546 | 'median': np.array([0., -155., -220., -208., 162., 214., 102., 94., 547 | 66., 37., 19., 6., 53., 32., 16.5, 6., 548 | 64., 38., 22., 13., 71., 48., 33., 25., 549 | 76., 59., 49., 41., -201., -177., -157., -147., 550 | -135., -180., -177., -173., -171., -200., -198., -193., 551 | -191., -214.5, -215., -212., -208., -227., -229., -229., 552 | -226., 0., -4., 192., 253., 0., 231., 283., 553 | 290., 281., 277., 279., 283., 269., 276., 289., 554 | 298., 282., 295., 309., 314., 295., 307., 318., 555 | 321., 309., 318., 324., 327., 268., 273., 282., 556 | 290., 290., 269., 283., 300., 315., 274., 289., 557 | 308., 322., 281., 295., 312., 324., 289., 300., 558 | 313., 322.]), 559 | 'scale_factor': 1.0, 560 | 'std': np.array([0., 13.60674241, 33.3032993, 58.68593003, 561 | 14.80816771, 41.0566849, 86.83690643, 91.52707613, 562 | 96.46133217, 103.81552018, 111.29798729, 116.84988941, 563 | 108.953423, 118.5386858, 121.7592864, 123.60705896, 564 | 109.22557267, 118.82313115, 122.45853174, 125.15311862, 565 | 109.25032906, 117.86855952, 121.46853253, 123.86147342, 566 | 109.55747759, 116.71509714, 119.36929976, 120.8869021, 567 | 69.0435674, 73.14218312, 81.05269367, 88.65717554, 568 | 97.30981278, 84.00480651, 92.37692932, 96.86237608, 569 | 100.46773036, 82.47765028, 91.27185643, 96.26633097, 570 | 99.31366615, 80.67351188, 89.02701064, 93.30791272, 571 | 96.34672063, 80.04087383, 86.67089264, 90.58648992, 572 | 93.14206482, 0., 10.88231299, 30.72401261, 573 | 64.20069782, 11.80025894, 38.96731323, 67.39309293, 574 | 73.62073596, 79.57721276, 89.74364133, 98.04464391, 575 | 105.0374687, 90.90715052, 99.81535754, 105.95001084, 576 | 110.26701011, 91.25035579, 100.25840629, 105.86755393, 577 | 108.97285603, 91.38375182, 99.14092997, 103.26581853, 578 | 106.88325331, 91.70622351, 97.17438436, 99.73720308, 579 | 102.19299251, 75.27206321, 82.64365798, 93.43973197, 580 | 101.8475258, 107.69945162, 95.75379027, 106.19971704, 581 | 113.93437953, 121.08109477, 94.56100547, 104.48614564, 582 | 110.77791, 116.16508973, 94.30819212, 101.95049637, 583 | 106.9177146, 111.37067348, 93.46864841, 99.52853134, 584 | 103.17545669, 105.90626882])}, 585 | 'oliver': {'mean': np.array([0., -163.658, -211.057, -134.649, 164.739, 209.073, 586 | 143.511, 127.913, 116.269, 103.244, 96.397, 93.487, 587 | 127.25, 111.415, 99.029, 90.083, 132.054, 113.831, 588 | 99.465, 91.78, 130.525, 111.719, 97.237, 89.394, 589 | 125.449, 109.247, 100.154, 93.562, -117.402, -100.158, 590 | -82.374, -73.054, -67.696, -111.641, -100.162, -88.474, 591 | -79.601, -119.885, -105.883, -91.469, -83.153, -122.363, 592 | -108.076, -95.898, -88.328, -121.041, -110.486, -103.011, 593 | -97.96, 0., 1.885, 226.397, 229.072, -4.987, 594 | 213.13, 243.52, 255.207, 231.348, 204.754, 188.757, 595 | 177.801, 206.763, 198.08, 197.119, 196.928, 223.176, 596 | 215.778, 214.844, 213.122, 239.312, 233.451, 230.949, 597 | 228.755, 253.464, 248.937, 246.076, 243.138, 232.561, 598 | 211.604, 184.101, 165.544, 151.386, 178.313, 165.155, 599 | 163.223, 162.372, 192.993, 181.789, 181.059, 180.34, 600 | 208.741, 200.467, 198.325, 196.636, 224.591, 218.906, 601 | 215.748, 213.304]), 602 | 'scale_factor': 0.9549234615419752, 603 | 'std': np.array([0., 11.99879311, 29.82817043, 54.03489427, 604 | 12.11713163, 35.70626935, 100.127588, 114.55109529, 605 | 117.61694027, 122.42752331, 129.34672547, 135.35726737, 606 | 120.82736238, 130.10660542, 136.48968517, 139.7453903, 607 | 122.16887936, 132.40670844, 138.38685911, 141.79375727, 608 | 123.35014947, 133.45671223, 139.08317954, 142.11474506, 609 | 126.82329202, 133.81198747, 138.99624558, 141.54416327, 610 | 61.03361693, 62.88763818, 68.25358689, 73.29697868, 611 | 78.72461867, 68.02637811, 76.81368209, 81.46072258, 612 | 84.88038524, 67.26606704, 77.41239766, 82.52517821, 613 | 85.17540485, 67.84581955, 77.28375136, 81.87896919, 614 | 84.03993346, 69.44094843, 77.42084864, 80.58891288, 615 | 82.31571174, 0., 9.47827912, 29.89226306, 616 | 65.29199657, 9.53880658, 33.56934763, 59.26234555, 617 | 71.23782809, 69.40388243, 72.38679081, 78.91335724, 618 | 86.99427222, 74.79921678, 82.52043141, 88.62611827, 619 | 93.39188838, 77.27343026, 84.96602095, 90.18950972, 620 | 93.68292863, 79.41305092, 85.97462183, 89.45524243, 621 | 92.88002463, 80.98173068, 85.93479523, 88.12695515, 622 | 89.9635646, 74.11004169, 73.49017066, 76.71515365, 623 | 82.82322177, 89.53648979, 78.33528599, 87.32146915, 624 | 95.1113835, 101.48254833, 81.44670006, 91.03851097, 625 | 96.9321181, 101.12747599, 84.49668585, 93.10840408, 626 | 97.03436183, 99.7947569, 87.07782564, 93.60984544, 627 | 96.28646061, 97.48070365]), 628 | 'median': np.array([0., -165., -211., -128., 167., 205., 118., 96.5, 629 | 82., 66., 56., 50., 94., 77., 62., 51., 630 | 99., 82., 63., 53., 99., 77., 59., 50., 631 | 92., 72., 60., 53., -110., -93., -74., -63., 632 | -56., -104., -94., -81., -71., -112., -99., -83., 633 | -73., -114., -101., -86., -77., -112., -101., -93., 634 | -86., 0., 2., 227., 257., -4., 219., 267., 635 | 279., 253., 220., 200., 182., 227., 219., 221., 636 | 222., 247., 241., 242., 242., 267., 262., 260., 637 | 258., 284., 280., 277., 273., 264., 241., 210., 638 | 188., 167., 211., 196., 192., 190., 226., 215., 639 | 214., 212., 243., 235., 235., 232., 260., 255., 640 | 253., 251.]), 641 | }, 642 | 'median': np.array([0., -165., -211., -128., 167., 205., 118., 96.5, 643 | 82., 66., 56., 50., 94., 77., 62., 51., 644 | 99., 82., 63., 53., 99., 77., 59., 50., 645 | 92., 72., 60., 53., -110., -93., -74., -63., 646 | -56., -104., -94., -81., -71., -112., -99., -83., 647 | -73., -114., -101., -86., -77., -112., -101., -93., 648 | -86., 0., 2., 227., 257., -4., 219., 267., 649 | 279., 253., 220., 200., 182., 227., 219., 221., 650 | 222., 247., 241., 242., 242., 267., 262., 260., 651 | 258., 284., 280., 277., 273., 264., 241., 210., 652 | 188., 167., 211., 196., 192., 190., 226., 215., 653 | 214., 212., 243., 235., 235., 232., 260., 255., 654 | 253., 251.]), 655 | 'rock': {'mean': np.array([0., -50.691, -71.908, -59.31, 52.451, 78.76, 39.172, 656 | 35.689, 30.193, 21.265, 14.115, 9.367, 21.133, 11.618, 657 | 6.135, 2.322, 20.812, 10.702, 4.949, 1.614, 20.973, 658 | 11.516, 6.355, 3.296, 20.881, 12.962, 9.191, 6.544, 659 | -56.623, -53.151, -46.877, -42.133, -38.616, -51.007, -45.297, 660 | -41.204, -38.231, -51.745, -45.244, -40.455, -37.947, -51.901, 661 | -45.412, -40.849, -38.384, -51.166, -45.603, -42.475, -40.21, 662 | 0., 2.919, 71.638, 62.753, -2.236, 68.846, 61.088, 663 | 62.271, 55.003, 47.461, 44.187, 41.541, 47.717, 45.33, 664 | 44.813, 44.858, 53.181, 51.377, 51.07, 50.835, 58.485, 665 | 57.221, 56.71, 56.121, 63.687, 62.794, 62.234, 61.799, 666 | 62.994, 56.582, 49.842, 46.872, 44.653, 49.173, 46.988, 667 | 47.094, 47.456, 54.367, 52.627, 52.811, 52.692, 59.522, 668 | 58.338, 58.022, 57.695, 64.378, 63.897, 63.478, 62.855]), 669 | 'median': np.array([0., -53., -74., -61., 54., 82., 39., 36., 29., 670 | 18., 9., 3., 19., 9., 3., -1., 19., 8., 671 | 2., -2., 19., 9., 3., 0., 19., 10., 6., 672 | 3., -60., -54., -47., -41., -36., -52., -45., -39.5, 673 | -36., -53., -45., -39., -35., -54., -44., -39., -36., 674 | -52., -45., -41., -38., 0., 3., 75., 67., -2., 675 | 71., 63., 65., 57., 49., 46., 44., 50., 49., 676 | 50., 50., 57., 56., 57., 57., 63., 63., 63., 677 | 62., 69., 69., 68., 68., 67., 60., 52., 49., 678 | 47., 52., 50., 51., 52., 58., 57., 58., 58., 679 | 64., 64., 64., 64., 70., 70., 69., 69.]), 680 | 'scale_factor': 3.0404103081189042, 681 | 'std': np.array([0., 10.4203416, 17.22636166, 24.77684201, 11.10331478, 682 | 17.75664383, 18.53861958, 20.16805095, 20.55582037, 23.09192012, 683 | 25.92936125, 28.61632945, 23.87838585, 26.28121146, 27.0651949, 684 | 28.08466336, 23.62597418, 25.974626, 26.90238649, 28.14425348, 685 | 22.98891626, 25.03772641, 26.18272283, 27.28751333, 22.26856167, 686 | 23.93914276, 24.86223077, 25.93993184, 29.16729112, 28.9929681, 687 | 30.65772123, 32.47656557, 34.01532807, 33.28412461, 35.77885955, 688 | 36.57866023, 37.38547364, 33.74483627, 36.30537789, 36.96885142, 689 | 37.77928256, 34.01107465, 36.46546662, 37.06834497, 37.90272476, 690 | 34.39137165, 36.44109481, 36.96086275, 37.45362332, 0., 691 | 2.89973085, 18.24277819, 20.42860717, 2.76048981, 13.92466459, 692 | 17.1719031, 19.71708799, 19.53716947, 21.61500588, 24.15897413, 693 | 26.41163227, 24.7449977, 27.6888985, 29.30245776, 30.29448524, 694 | 25.62081652, 28.73668163, 30.19561392, 31.28564807, 25.91670841, 695 | 28.75941861, 30.06825402, 31.11173989, 26.03480422, 28.16124223, 696 | 29.02597533, 29.7304322, 23.28072087, 22.67441898, 24.5621464, 697 | 26.42123419, 28.12181699, 26.97838155, 29.05460129, 30.11018373, 698 | 30.98118887, 27.92701758, 30.10780415, 30.95133727, 31.63882324, 699 | 28.46049044, 30.59816589, 30.90853468, 31.19961498, 28.92246732, 700 | 30.4676614, 30.74221066, 30.69778453])}, 701 | 'seth': {'mean': np.array([0.00000e+00, -1.56603e+02, -1.92734e+02, -1.32233e+02, 702 | 1.60156e+02, 1.93264e+02, 7.84210e+01, 6.13590e+01, 703 | 3.63920e+01, 1.03240e+01, 3.24000e+00, 5.41000e-01, 704 | 2.59350e+01, 7.05000e+00, -5.32800e+00, -1.25190e+01, 705 | 3.17200e+01, 8.77700e+00, -6.74700e+00, -1.21180e+01, 706 | 3.12780e+01, 1.12180e+01, -3.30400e+00, -8.38000e+00, 707 | 2.93330e+01, 1.41880e+01, 3.79600e+00, -4.10200e+00, 708 | -1.22910e+02, -1.04130e+02, -8.88500e+01, -7.73330e+01, 709 | -6.66150e+01, -1.06764e+02, -9.15200e+01, -7.91270e+01, 710 | -7.09780e+01, -1.12913e+02, -9.24190e+01, -7.87410e+01, 711 | -7.28720e+01, -1.11232e+02, -9.46040e+01, -8.03730e+01, 712 | -7.46850e+01, -1.05766e+02, -9.38100e+01, -8.45570e+01, 713 | -7.68080e+01, 0.00000e+00, -1.52000e-01, 2.18895e+02, 714 | 2.68892e+02, 3.11000e-01, 2.37138e+02, 2.60438e+02, 715 | 2.62680e+02, 2.46628e+02, 2.28206e+02, 2.22251e+02, 716 | 2.19554e+02, 2.28401e+02, 2.20632e+02, 2.23361e+02, 717 | 2.28428e+02, 2.42971e+02, 2.34319e+02, 2.39472e+02, 718 | 2.41920e+02, 2.55531e+02, 2.52430e+02, 2.51910e+02, 719 | 2.51151e+02, 2.67728e+02, 2.67377e+02, 2.66409e+02, 720 | 2.64099e+02, 2.76742e+02, 2.61222e+02, 2.46399e+02, 721 | 2.44755e+02, 2.41459e+02, 2.54082e+02, 2.51658e+02, 722 | 2.56695e+02, 2.62400e+02, 2.68415e+02, 2.68020e+02, 723 | 2.72175e+02, 2.74369e+02, 2.80791e+02, 2.83345e+02, 724 | 2.84913e+02, 2.83823e+02, 2.92152e+02, 2.94754e+02, 725 | 2.95650e+02, 2.94466e+02]), 726 | 'median': np.array([0., -160., -188., -90., 164., 188., 74., 61., 727 | 30., -5., -13., -15., 14., -17., -37., -47., 728 | 22., -15., -39., -48., 21., -12., -35., -45., 729 | 15., -9., -26., -40., -82., -55., -35., -19., 730 | -1., -50., -19., 3., 17., -54., -12.5, 12., 731 | 23., -50., -14., 12., 23., -38., -14., 6., 732 | 20., 0., 0., 231., 280.5, 0., 243.5, 284., 733 | 288., 270., 243., 237., 237., 250., 236., 243., 734 | 253., 271., 260., 269., 273., 286., 285., 286., 735 | 285., 303., 306., 305., 302., 287., 268., 244., 736 | 241., 234., 260., 251., 258., 266., 279., 277., 737 | 283., 284., 295., 299., 301., 297., 309., 314., 738 | 314., 312.]), 739 | 'scale_factor': 0.9900081765632547, 740 | 'std': np.array([0., 18.55767741, 35.88235282, 101.25383307, 741 | 19.41946611, 38.02917701, 54.45006666, 61.64462766, 742 | 64.83266411, 72.31580065, 77.08544869, 83.25050342, 743 | 74.10669858, 79.17970384, 85.60273603, 88.84267915, 744 | 71.75098327, 79.86841222, 86.6311664, 90.07606828, 745 | 73.40176235, 79.49821681, 84.53137633, 89.01422134, 746 | 72.98420453, 77.71971858, 83.04868683, 87.2696946, 747 | 111.3822423, 118.55779645, 126.86364925, 137.85477181, 748 | 149.29311027, 136.38734657, 153.90880287, 164.70497525, 749 | 173.08522616, 139.26315173, 160.31123304, 173.69513499, 750 | 183.07759452, 143.54942764, 162.06102303, 175.3751404, 751 | 183.9359502, 148.61482175, 163.27092178, 173.38245803, 752 | 181.60665499, 0., 9.34959336, 37.72078969, 753 | 49.82852934, 9.37562153, 35.3828342, 61.75611837, 754 | 69.91869278, 69.9318641, 72.31696595, 75.38982689, 755 | 78.29895966, 76.43157855, 80.22123519, 83.73378457, 756 | 87.34744882, 76.80201924, 79.60171631, 84.10195727, 757 | 87.62829223, 78.27895655, 82.02017496, 84.37008889, 758 | 86.20353936, 80.41539664, 84.47919786, 85.72448728, 759 | 86.26808911, 54.1489006, 55.01033281, 59.79178705, 760 | 62.95996327, 68.53929033, 60.30863351, 64.76271332, 761 | 66.97766773, 69.2184224, 60.48514508, 63.85550564, 762 | 65.756052, 68.09354477, 61.19543544, 64.2909634, 763 | 65.19778701, 67.21045805, 62.52371467, 65.29180258, 764 | 66.37902907, 65.94090418])}, 765 | 'shelly': {'median': np.array([0., -44., -60., -53., 44., 65., 40., 34., 33., 32., 32., 766 | 32., 31., 28., 26., 25., 31., 28., 26., 25., 31., 28., 767 | 26., 25., 30., 28., 27., 26., -49., -49., -52., -55., -56., 768 | -55., -57., -57., -58., -56., -57., -57., -57., -56., -56., -57., 769 | -56., -55., -56., -56., -56., 0., 0., 70., 99., 0., 69., 770 | 84., 86., 84., 81., 79., 77., 85., 85., 84., 83., 88., 771 | 88., 87., 86., 91., 91., 90., 89., 92., 92., 91., 91., 772 | 104., 102., 100., 99., 99., 107., 109., 110., 111., 111., 114., 773 | 115., 115., 115., 118., 119., 119., 117., 120., 121., 121.]), 774 | 'mean': np.array([0.00000e+00, -4.39670e+01, -6.16120e+01, -5.66750e+01, 775 | 4.38510e+01, 6.52460e+01, 4.23140e+01, 3.73650e+01, 776 | 3.57040e+01, 3.45580e+01, 3.44570e+01, 3.45120e+01, 777 | 3.52910e+01, 3.31350e+01, 3.19850e+01, 3.09850e+01, 778 | 3.51300e+01, 3.28280e+01, 3.14670e+01, 3.08340e+01, 779 | 3.51450e+01, 3.27940e+01, 3.16110e+01, 3.05940e+01, 780 | 3.47090e+01, 3.29040e+01, 3.22040e+01, 3.11530e+01, 781 | -5.37470e+01, -5.32070e+01, -5.42620e+01, -5.62220e+01, 782 | -5.78420e+01, -5.81480e+01, -5.93390e+01, -5.98870e+01, 783 | -6.00440e+01, -5.89260e+01, -5.98730e+01, -5.95250e+01, 784 | -5.97740e+01, -5.86410e+01, -5.93170e+01, -5.91710e+01, 785 | -5.94890e+01, -5.80360e+01, -5.85560e+01, -5.88470e+01, 786 | -5.87110e+01, 0.00000e+00, -9.70000e-02, 6.69060e+01, 787 | 9.19000e+01, -4.16000e-01, 6.65610e+01, 8.19670e+01, 788 | 8.38610e+01, 8.18550e+01, 7.90090e+01, 7.72360e+01, 789 | 7.61760e+01, 8.11380e+01, 8.04890e+01, 7.99180e+01, 790 | 7.96400e+01, 8.42210e+01, 8.41600e+01, 8.36870e+01, 791 | 8.31360e+01, 8.67250e+01, 8.67590e+01, 8.62470e+01, 792 | 8.56190e+01, 8.85240e+01, 8.86890e+01, 8.82870e+01, 793 | 8.75840e+01, 9.63500e+01, 9.51850e+01, 9.30020e+01, 794 | 9.14720e+01, 9.06760e+01, 9.54290e+01, 9.63560e+01, 795 | 9.65460e+01, 9.66780e+01, 9.88890e+01, 9.99080e+01, 796 | 1.00404e+02, 1.00404e+02, 1.01832e+02, 1.02755e+02, 797 | 1.03448e+02, 1.03503e+02, 1.04009e+02, 1.05167e+02, 798 | 1.05725e+02, 1.06154e+02]), 799 | 'scale_factor': 3.570953563050855, 800 | 'std': np.array([0., 5.97075464, 18.08920827, 33.06550128, 6.05266875, 801 | 18.51673524, 32.79398427, 37.3746408, 38.17355608, 41.0028857, 802 | 43.89186885, 46.5736176, 42.3892005, 46.75329694, 48.91665131, 803 | 50.78065355, 42.70645267, 46.58178202, 48.63481172, 50.08577087, 804 | 42.50759903, 45.92044821, 47.71441794, 49.30368307, 42.41971616, 805 | 45.19445524, 46.42829293, 47.59075111, 38.04543325, 38.97140171, 806 | 40.60807008, 42.62166956, 45.15082542, 42.1350934, 44.92540572, 807 | 47.14573396, 49.22062641, 42.10518405, 45.64207347, 47.96439695, 808 | 49.88419513, 42.26076335, 45.48921313, 47.56071655, 49.44677825, 809 | 42.74354576, 45.27401975, 46.8043544, 48.27524706, 0., 810 | 4.71376612, 19.68423643, 46.76840814, 4.8071763, 17.32877027, 811 | 37.98475893, 44.62642355, 44.27660754, 46.27339321, 49.00555381, 812 | 51.54084811, 48.50106139, 51.8787999, 54.01876781, 55.82720126, 813 | 49.17186349, 53.1482869, 55.37935564, 56.9398411, 49.60537647, 814 | 53.15278844, 55.01163505, 56.67173757, 49.79045515, 52.37627592, 815 | 53.64364483, 54.5685527, 53.91743225, 54.13352727, 55.90663642, 816 | 58.86213737, 61.06556332, 58.86913418, 62.15002224, 64.03989291, 817 | 65.85472129, 59.38530693, 62.81211297, 64.88760116, 66.08761445, 818 | 59.60905784, 62.46751936, 64.10454973, 65.54253574, 59.33884831, 819 | 61.90099443, 63.20263741, 64.26842369])}} 820 | 821 | 822 | SPEAKERS_CONFIG['Lisa_Feldman_Barrett'] = { 823 | 'median': np.ones(98) * 112, 824 | 'scale_factor': 1, 825 | 'mean': np.array([ 0. , -1.19841738, -1.58047268, -1.4045821 , 1.2758864 , 826 | 1.77768676, 1.65703035, 1.61845832, 1.59244072, 1.48879356, 827 | 1.40160497, 1.36102816, 1.53588248, 1.36215933, 1.26510949, 828 | 1.19200311, 1.45941759, 1.26593316, 1.1738424 , 1.10540102, 829 | 1.3722366 , 1.20770126, 1.12864624, 1.06831708, 1.30632046, 830 | 1.17984234, 1.11749213, 1.06460759, -1.37441402, -1.35158357, 831 | -1.29301242, -1.22775457, -1.16972311, -1.33576587, -1.23453882, 832 | -1.14965901, -1.08120032, -1.31386467, -1.18257884, -1.08857249, 833 | -1.01432993, -1.27846248, -1.15234329, -1.06544065, -0.99501345, 834 | -1.2416203 , -1.13701188, -1.06792966, -1.00916048, 0. , 835 | 0.56662626, 2.48479235, 2.1363345 , 0.45417501, 2.35629813, 836 | 2.38806224, 2.36420379, 2.18185715, 1.96066104, 1.84163623, 837 | 1.77816598, 2.11228409, 1.9678031 , 1.89541172, 1.83834353, 838 | 2.18465058, 2.0487781 , 1.98426972, 1.92258174, 2.23186942, 839 | 2.12684667, 2.07277724, 2.01655666, 2.28049702, 2.2027903 , 840 | 2.15986948, 2.11150698, 2.08887799, 1.88739571, 1.70462141, 841 | 1.59624438, 1.51880991, 1.76258563, 1.68480154, 1.6382096 , 842 | 1.59391717, 1.88683326, 1.79962303, 1.74649191, 1.69354692, 843 | 1.98660209, 1.9059621 , 1.84958903, 1.80192587, 2.07046951, 844 | 2.00581994, 1.96129077, 1.91901187]), 845 | 'std': np.array([1.00000000e-09, 1.76916032e-01, 3.55399528e-01, 7.72094753e-01, 846 | 1.84809040e-01, 3.46885513e-01, 6.94195932e-01, 7.80062801e-01, 847 | 8.77986782e-01, 1.09597705e+00, 1.26726032e+00, 1.35675574e+00, 848 | 1.15670325e+00, 1.39478340e+00, 1.48536362e+00, 1.54313323e+00, 849 | 1.20312300e+00, 1.41754663e+00, 1.47550790e+00, 1.51397373e+00, 850 | 1.22895065e+00, 1.39268560e+00, 1.42610007e+00, 1.45145684e+00, 851 | 1.22330584e+00, 1.34219012e+00, 1.36608911e+00, 1.38689408e+00, 852 | 8.48972445e-01, 9.16183586e-01, 1.01957184e+00, 1.12775862e+00, 853 | 1.22240615e+00, 1.13235026e+00, 1.26911958e+00, 1.32638650e+00, 854 | 1.36662817e+00, 1.14346996e+00, 1.26913627e+00, 1.31328970e+00, 855 | 1.34089795e+00, 1.12620388e+00, 1.23142265e+00, 1.26397872e+00, 856 | 1.28137205e+00, 1.09756192e+00, 1.17724380e+00, 1.20309554e+00, 857 | 1.22028958e+00, 1.00000000e-09, 9.04773899e-02, 3.07732335e-01, 858 | 5.37526342e-01, 1.09008217e-01, 3.10256394e-01, 6.42911520e-01, 859 | 7.15965962e-01, 7.58809378e-01, 8.56852460e-01, 1.00070470e+00, 860 | 1.06392498e+00, 8.97523961e-01, 1.10467392e+00, 1.18871236e+00, 861 | 1.23741103e+00, 9.33567811e-01, 1.14429458e+00, 1.19862626e+00, 862 | 1.23185743e+00, 9.70476463e-01, 1.14796893e+00, 1.17120094e+00, 863 | 1.18865253e+00, 9.85530394e-01, 1.11727692e+00, 1.13773721e+00, 864 | 1.16315194e+00, 6.26625527e-01, 6.55486595e-01, 7.19463952e-01, 865 | 7.85708784e-01, 8.41750680e-01, 8.19581326e-01, 8.93514819e-01, 866 | 9.27416670e-01, 9.55377400e-01, 8.37890312e-01, 9.16777747e-01, 867 | 9.39984132e-01, 9.58576726e-01, 8.35891695e-01, 9.03037061e-01, 868 | 9.17925737e-01, 9.26210664e-01, 8.21419854e-01, 8.70511144e-01, 869 | 8.80774458e-01, 8.87293754e-01]) 870 | } 871 | 872 | SPEAKERS_CONFIG['Amel_Karboul'] = { 873 | 'median': np.ones(98) * 112, 874 | 'scale_factor': 1, 875 | 'mean': np.array([ 0. , -1.31694646, -1.7182911 , -1.4229387 , 1.43300073, 876 | 1.90203809, 1.02702671, 0.86147811, 0.7523877 , 0.59240631, 877 | 0.43787492, 0.30771354, 0.55607061, 0.33617568, 0.21176807, 878 | 0.1035814 , 0.53735101, 0.28595784, 0.16503721, 0.07199452, 879 | 0.51410739, 0.2780363 , 0.17586396, 0.09493798, 0.49115767, 880 | 0.30839241, 0.22946503, 0.15296569, -1.44171535, -1.38051611, 881 | -1.2706162 , -1.17360722, -1.10071166, -1.37784478, -1.23175278, 882 | -1.12603394, -1.04466992, -1.3976284 , -1.21930714, -1.1082398 , 883 | -1.02286535, -1.39882507, -1.22857474, -1.12760953, -1.04923929, 884 | -1.38873537, -1.25572297, -1.17423253, -1.11249841, 0. , 885 | 0.72992549, 3.20478178, 2.74745657, 0.60989877, 3.05667283, 886 | 2.81257127, 2.68400513, 2.46016952, 2.30887215, 2.25025663, 887 | 2.18478005, 2.40968863, 2.39325012, 2.3859585 , 2.37106601, 888 | 2.55379422, 2.54426606, 2.52255946, 2.49455527, 2.65988151, 889 | 2.64391092, 2.61598359, 2.57995377, 2.73033623, 2.71651668, 890 | 2.693263 , 2.65664704, 2.57984597, 2.36010878, 2.2032952 , 891 | 2.13959683, 2.09660923, 2.25189186, 2.2422468 , 2.25385632, 892 | 2.252677 , 2.40281431, 2.39491628, 2.38881862, 2.37257373, 893 | 2.52759149, 2.51890148, 2.49875008, 2.4762942 , 2.62450517, 894 | 2.60768974, 2.59020701, 2.55683496]), 895 | 'std': np.array([1.00000000e-09, 3.94340201e-01, 7.46216428e-01, 1.25409609e+00, 896 | 4.48989120e-01, 6.33724388e-01, 1.03087481e+00, 1.20060967e+00, 897 | 1.27201328e+00, 1.36162935e+00, 1.44756678e+00, 1.53149847e+00, 898 | 1.48976371e+00, 1.59383183e+00, 1.62068916e+00, 1.63951742e+00, 899 | 1.50054577e+00, 1.58732326e+00, 1.59727258e+00, 1.60040304e+00, 900 | 1.48661276e+00, 1.55780683e+00, 1.55942161e+00, 1.55721045e+00, 901 | 1.46524075e+00, 1.51474948e+00, 1.51373124e+00, 1.51820939e+00, 902 | 1.33664619e+00, 1.39896886e+00, 1.50359920e+00, 1.61010120e+00, 903 | 1.71089947e+00, 1.66896808e+00, 1.80657982e+00, 1.83613596e+00, 904 | 1.84787867e+00, 1.68731414e+00, 1.79727068e+00, 1.80677831e+00, 905 | 1.79939450e+00, 1.66458069e+00, 1.74878824e+00, 1.74475312e+00, 906 | 1.73101650e+00, 1.62001011e+00, 1.68301239e+00, 1.68016133e+00, 907 | 1.67137502e+00, 1.00000000e-09, 1.85029978e-01, 6.19248000e-01, 908 | 7.03050558e-01, 1.75646450e-01, 5.44235904e-01, 6.50877893e-01, 909 | 1.09117114e+00, 1.11728498e+00, 1.14748641e+00, 1.18866237e+00, 910 | 1.23594361e+00, 1.18641947e+00, 1.26764022e+00, 1.32525317e+00, 911 | 1.38685002e+00, 1.26395150e+00, 1.35033661e+00, 1.39207535e+00, 912 | 1.42608879e+00, 1.34876036e+00, 1.43823018e+00, 1.45561989e+00, 913 | 1.47191535e+00, 1.43581331e+00, 1.49487696e+00, 1.49660077e+00, 914 | 1.52114195e+00, 1.11707360e+00, 1.12800405e+00, 1.15627454e+00, 915 | 1.19445103e+00, 1.26172596e+00, 1.21221330e+00, 1.29930050e+00, 916 | 1.33494815e+00, 1.36807089e+00, 1.27666516e+00, 1.36428756e+00, 917 | 1.38710129e+00, 1.40355525e+00, 1.32994896e+00, 1.41117447e+00, 918 | 1.42606820e+00, 1.42707226e+00, 1.37706426e+00, 1.44888593e+00, 919 | 1.45229674e+00, 1.46827511e+00]) 920 | } 921 | 922 | SPEAKERS_CONFIG['Bill_Gates'] = { 923 | 'median': np.ones(98) * 112, 924 | 'scale_factor': 1, 925 | 'mean': np.array([ 0. , -1.65901123, -2.62040504, -1.67567383, 1.5779478 , 926 | 2.27677556, 1.42385704, 1.3170184 , 1.19879 , 0.96268522, 927 | 0.74065908, 0.55666252, 1.04719535, 0.76037056, 0.56424102, 928 | 0.40574464, 1.05062748, 0.68746701, 0.47590087, 0.32751844, 929 | 1.0213114 , 0.67258543, 0.48671625, 0.34948249, 0.98083327, 930 | 0.70350887, 0.56702056, 0.45242877, -1.58726746, -1.4728882 , 931 | -1.27845931, -1.12835936, -1.00697183, -1.39988316, -1.20836639, 932 | -1.05706819, -0.94011508, -1.45365837, -1.22129736, -1.05546607, 933 | -0.94138093, -1.47802005, -1.25897673, -1.10377321, -0.99176046, 934 | -1.47791562, -1.31199306, -1.20487043, -1.10330991, 0. , 935 | 0.63376724, 2.9768444 , 1.9201872 , 0.61075744, 3.05337817, 936 | 2.37583868, 2.2788781 , 2.00000366, 1.82876588, 1.79312354, 937 | 1.76777677, 1.91960979, 1.8979598 , 1.89223526, 1.90009094, 938 | 2.13137775, 2.10057917, 2.06954037, 2.04540326, 2.30330089, 939 | 2.26177726, 2.21134076, 2.16438097, 2.44113155, 2.39222672, 940 | 2.34630512, 2.29878913, 1.73476003, 1.51328262, 1.33038028, 941 | 1.19058549, 1.09880832, 1.16350011, 1.04367205, 1.04802128, 942 | 1.07784193, 1.2713513 , 1.16845977, 1.19792404, 1.23544504, 943 | 1.41444819, 1.33930394, 1.36110806, 1.38602307, 1.57745357, 944 | 1.53407041, 1.53709354, 1.53643241]), 945 | 'std': np.array([1.00000000e-09, 2.54368567e-01, 5.83332917e-01, 1.15142710e+00, 946 | 1.97158141e-01, 3.77624570e-01, 6.40216173e-01, 7.58684416e-01, 947 | 8.50109244e-01, 9.21852221e-01, 9.86584956e-01, 1.03646303e+00, 948 | 1.03406142e+00, 1.10359513e+00, 1.13120303e+00, 1.15306422e+00, 949 | 1.04380541e+00, 1.10986972e+00, 1.12975535e+00, 1.14217362e+00, 950 | 1.03486066e+00, 1.09802824e+00, 1.10983464e+00, 1.11674439e+00, 951 | 1.01764547e+00, 1.06938455e+00, 1.07777407e+00, 1.08700549e+00, 952 | 1.24625350e+00, 1.29106444e+00, 1.40470767e+00, 1.53967733e+00, 953 | 1.66036111e+00, 1.50520367e+00, 1.64354779e+00, 1.72179679e+00, 954 | 1.78148170e+00, 1.53200939e+00, 1.66855278e+00, 1.74710506e+00, 955 | 1.80164873e+00, 1.53887342e+00, 1.65943740e+00, 1.73015571e+00, 956 | 1.78040136e+00, 1.54134692e+00, 1.63370080e+00, 1.68624933e+00, 957 | 1.73739507e+00, 1.00000000e-09, 1.41867468e-01, 6.74737065e-01, 958 | 9.09216435e-01, 1.30571354e-01, 3.34107582e-01, 5.16529942e-01, 959 | 6.46399789e-01, 7.09281247e-01, 7.69013323e-01, 8.34192038e-01, 960 | 8.79042370e-01, 8.23650557e-01, 9.05584322e-01, 9.40793735e-01, 961 | 9.63994407e-01, 8.55480876e-01, 9.36165947e-01, 9.55800937e-01, 962 | 9.62736167e-01, 8.65513890e-01, 9.47473627e-01, 9.59739778e-01, 963 | 9.59384063e-01, 8.71633274e-01, 9.32182625e-01, 9.48551686e-01, 964 | 9.55036059e-01, 1.14048164e+00, 1.15221438e+00, 1.18467852e+00, 965 | 1.19077197e+00, 1.23125204e+00, 1.19134360e+00, 1.24101455e+00, 966 | 1.27935240e+00, 1.32779115e+00, 1.22295546e+00, 1.27777633e+00, 967 | 1.31858545e+00, 1.35349085e+00, 1.25384595e+00, 1.30098491e+00, 968 | 1.33062427e+00, 1.34747032e+00, 1.28365129e+00, 1.32616956e+00, 969 | 1.33520423e+00, 1.34267033e+00]) 970 | } 971 | 972 | SPEAKERS_CONFIG['Christina_Wallace'] = { 973 | 'median': np.ones(98) * 112, 974 | 'scale_factor': 1, 975 | 'mean': np.array([ 0. , -1.4270045 , -1.92638165, -1.54798809, 1.47699254, 976 | 1.90600553, 1.51393449, 1.36865848, 1.27669665, 1.16583805, 977 | 1.08766372, 1.03883452, 1.30709821, 1.13669758, 0.97883178, 978 | 0.83445061, 1.29967894, 1.06185055, 0.8753138 , 0.71678297, 979 | 1.25859363, 1.02610507, 0.85781108, 0.71904575, 1.20389917, 980 | 1.02209034, 0.89906534, 0.7949335 , -1.52016294, -1.44237293, 981 | -1.31756207, -1.21881972, -1.14342114, -1.44205991, -1.30853941, 982 | -1.20292522, -1.11382424, -1.46689069, -1.30332438, -1.19207267, 983 | -1.1068739 , -1.46969676, -1.31106321, -1.21296044, -1.1395027 , 984 | -1.45676802, -1.32510608, -1.25315889, -1.2049942 , 0. , 985 | 0.80477358, 3.1520563 , 2.65176425, 0.6842569 , 2.96016206, 986 | 2.92202314, 2.76900744, 2.49262877, 2.30488874, 2.22522464, 987 | 2.157103 , 2.40696086, 2.36739691, 2.35786848, 2.35455045, 988 | 2.58498435, 2.54525383, 2.52320048, 2.50268181, 2.74161117, 989 | 2.70101106, 2.66125496, 2.62429763, 2.87051536, 2.83655962, 990 | 2.79596374, 2.75763666, 2.45200628, 2.15476683, 1.92561859, 991 | 1.80779182, 1.71216641, 1.89485111, 1.80403182, 1.78664954, 992 | 1.78645247, 2.05067525, 1.96392261, 1.94261299, 1.92343288, 993 | 2.20805317, 2.14009071, 2.11155272, 2.08524038, 2.36703949, 994 | 2.32318318, 2.29717179, 2.25810948]), 995 | 'std': np.array([1.00000000e-09, 3.15892363e-01, 5.27419215e-01, 8.60761116e-01, 996 | 3.33738621e-01, 5.11970534e-01, 8.57437195e-01, 1.09036769e+00, 997 | 1.23041182e+00, 1.31049909e+00, 1.39528031e+00, 1.46771086e+00, 998 | 1.46831417e+00, 1.53102854e+00, 1.52621133e+00, 1.51389910e+00, 999 | 1.47988804e+00, 1.51637656e+00, 1.49585122e+00, 1.46897428e+00, 1000 | 1.44751216e+00, 1.47397165e+00, 1.44958831e+00, 1.43128788e+00, 1001 | 1.39493292e+00, 1.41321046e+00, 1.39802501e+00, 1.39100324e+00, 1002 | 9.51229709e-01, 1.01169750e+00, 1.09201916e+00, 1.16875331e+00, 1003 | 1.24810391e+00, 1.20803181e+00, 1.30662112e+00, 1.33877434e+00, 1004 | 1.36455059e+00, 1.21241944e+00, 1.30243857e+00, 1.33020706e+00, 1005 | 1.35661141e+00, 1.19779165e+00, 1.27055697e+00, 1.29153018e+00, 1006 | 1.30931299e+00, 1.17334091e+00, 1.23426890e+00, 1.24387600e+00, 1007 | 1.26221962e+00, 1.00000000e-09, 1.83972226e-01, 6.54627835e-01, 1008 | 8.42258433e-01, 1.60072830e-01, 5.65656929e-01, 7.28566891e-01, 1009 | 1.06977669e+00, 1.20146446e+00, 1.23194815e+00, 1.25501319e+00, 1010 | 1.25392834e+00, 1.28325650e+00, 1.31368782e+00, 1.33579219e+00, 1011 | 1.34915712e+00, 1.34450905e+00, 1.37450866e+00, 1.38547012e+00, 1012 | 1.38486337e+00, 1.37526730e+00, 1.40363948e+00, 1.40120156e+00, 1013 | 1.40164597e+00, 1.38798591e+00, 1.40940050e+00, 1.40540798e+00, 1014 | 1.40472439e+00, 1.12791412e+00, 1.21940263e+00, 1.26500979e+00, 1015 | 1.28566902e+00, 1.34443802e+00, 1.32931399e+00, 1.36867346e+00, 1016 | 1.41149110e+00, 1.45194651e+00, 1.36288876e+00, 1.42833085e+00, 1017 | 1.47681322e+00, 1.52678291e+00, 1.38814975e+00, 1.44718508e+00, 1018 | 1.48900934e+00, 1.51451143e+00, 1.39038701e+00, 1.43982392e+00, 1019 | 1.45530627e+00, 1.49761704e+00]) 1020 | } 1021 | 1022 | SPEAKERS_CONFIG['Enric_Sala'] = { 1023 | 'median': np.ones(98) * 112, 1024 | 'scale_factor': 1, 1025 | 'mean': np.array([ 0. , -1.35818404, -1.99522808, -1.51621112, 1.29967358, 1026 | 1.80377432, 1.41801134, 1.37077015, 1.2707847 , 1.1519362 , 1027 | 1.04618594, 0.94584526, 1.28510573, 1.14571809, 1.02793932, 1028 | 0.92025301, 1.31806471, 1.13281933, 1.00019173, 0.89648685, 1029 | 1.31747197, 1.13369087, 1.01495231, 0.93043523, 1.30041234, 1030 | 1.15315992, 1.06669468, 0.99273335, -1.47316361, -1.37781129, 1031 | -1.26004572, -1.15626102, -1.07273451, -1.39947422, -1.25269704, 1032 | -1.14463695, -1.05566838, -1.43779378, -1.24520699, -1.13505081, 1033 | -1.05098459, -1.44144737, -1.2570889 , -1.16052068, -1.09125391, 1034 | -1.43564641, -1.28842017, -1.21656355, -1.1573583 , 0. , 1035 | 0.61463935, 2.60566422, 3.13376125, 0.64517708, 2.65426302, 1036 | 3.2518751 , 3.30187523, 3.19037572, 3.15678588, 3.21427094, 1037 | 3.27446716, 3.31614183, 3.42560433, 3.46519365, 3.47871403, 1038 | 3.48251426, 3.5871208 , 3.59425829, 3.58099856, 3.60778525, 1039 | 3.68265183, 3.66713227, 3.6433546 , 3.70535138, 3.74814899, 1040 | 3.73393347, 3.70972399, 3.18611283, 3.05145905, 2.99792959, 1041 | 3.03806888, 3.09556377, 3.14632478, 3.24808558, 3.27730973, 1042 | 3.29154081, 3.30214787, 3.39943918, 3.40355177, 3.39618276, 1043 | 3.42181796, 3.50056104, 3.48921923, 3.4705326 , 3.51933868, 1044 | 3.57344501, 3.56552845, 3.54484765]), 1045 | 'std': np.array([1.00000000e-09, 2.47454420e-01, 5.03401057e-01, 1.20887959e+00, 1046 | 3.00871872e-01, 5.01953618e-01, 1.00320887e+00, 1.13565304e+00, 1047 | 1.25386670e+00, 1.41329585e+00, 1.55548797e+00, 1.68754894e+00, 1048 | 1.50087593e+00, 1.66182898e+00, 1.73326397e+00, 1.79422987e+00, 1049 | 1.47607994e+00, 1.62708113e+00, 1.68715100e+00, 1.73150286e+00, 1050 | 1.43156163e+00, 1.56552454e+00, 1.61634250e+00, 1.64912641e+00, 1051 | 1.38068864e+00, 1.48929794e+00, 1.52723414e+00, 1.55752142e+00, 1052 | 1.31074931e+00, 1.41083647e+00, 1.53916860e+00, 1.66531759e+00, 1053 | 1.77132544e+00, 1.63693787e+00, 1.77349398e+00, 1.81035470e+00, 1054 | 1.83711038e+00, 1.61840768e+00, 1.74140249e+00, 1.75696546e+00, 1055 | 1.76840213e+00, 1.57872715e+00, 1.68651331e+00, 1.69424962e+00, 1056 | 1.69612079e+00, 1.52972393e+00, 1.61435700e+00, 1.62203628e+00, 1057 | 1.62810229e+00, 1.00000000e-09, 1.13093005e-01, 4.87157598e-01, 1058 | 8.85808758e-01, 1.12909219e-01, 4.46723082e-01, 7.46145049e-01, 1059 | 9.09121445e-01, 9.22220204e-01, 9.65918942e-01, 1.01564210e+00, 1060 | 1.06492639e+00, 1.03327246e+00, 1.10921566e+00, 1.15769432e+00, 1061 | 1.20875200e+00, 1.06174779e+00, 1.14117939e+00, 1.18829758e+00, 1062 | 1.22048378e+00, 1.07145947e+00, 1.16131801e+00, 1.21777935e+00, 1063 | 1.24044224e+00, 1.07538777e+00, 1.16143573e+00, 1.21099780e+00, 1064 | 1.24304848e+00, 1.03808473e+00, 1.06470920e+00, 1.11524177e+00, 1065 | 1.18451450e+00, 1.25379623e+00, 1.21344021e+00, 1.28953693e+00, 1066 | 1.30931911e+00, 1.31329498e+00, 1.23072566e+00, 1.29495064e+00, 1067 | 1.30268243e+00, 1.29624343e+00, 1.23177526e+00, 1.29026257e+00, 1068 | 1.28765506e+00, 1.28100897e+00, 1.22373237e+00, 1.26962411e+00, 1069 | 1.27057886e+00, 1.26748468e+00]) 1070 | } 1071 | 1072 | SPEAKERS_CONFIG['GabeBarcia_Colombo'] = { 1073 | 'median': np.ones(98) * 112, 1074 | 'scale_factor': 1, 1075 | 'mean': np.array([ 0. , -1.84495687, -2.69811904, -1.68580485, 1.71445981, 1076 | 2.54691899, 1.94953072, 1.8616302 , 1.7447443 , 1.58822019, 1077 | 1.43564604, 1.30988838, 1.68882468, 1.36734826, 1.19536413, 1078 | 1.06951097, 1.66675671, 1.2773567 , 1.10034357, 0.97928662, 1079 | 1.64189969, 1.24680075, 1.08185443, 0.99469991, 1.6248793 , 1080 | 1.29935872, 1.14806931, 1.06077605, -1.61581423, -1.514775 , 1081 | -1.36913424, -1.20935257, -1.0847552 , -1.49382951, -1.27910079, 1082 | -1.14929049, -1.04834415, -1.5288084 , -1.28098417, -1.14810588, 1083 | -1.05630366, -1.56309994, -1.31391729, -1.19683654, -1.11319707, 1084 | -1.58372119, -1.38532164, -1.29225921, -1.2318247 , 0. , 1085 | 0.74351202, 3.14052412, 3.61160746, 0.61762302, 2.94543759, 1086 | 3.21793606, 3.17623992, 2.96471007, 2.79140821, 2.70632029, 1087 | 2.62646841, 3.01170032, 2.85379343, 2.79241089, 2.75216528, 1088 | 3.12300778, 2.93599049, 2.8702409 , 2.83110624, 3.24093329, 1089 | 3.03220637, 2.95394198, 2.93976633, 3.35662444, 3.16495979, 1090 | 3.06929703, 3.03455172, 3.41829076, 2.75711668, 2.41390421, 1091 | 2.37783849, 2.39171412, 2.31918492, 2.32707244, 2.35760768, 1092 | 2.39847052, 2.49001349, 2.48501887, 2.51587391, 2.55217904, 1093 | 2.59721794, 2.61692203, 2.6357909 , 2.67657661, 2.7425024 , 1094 | 2.72646607, 2.7344342 , 2.73467115]), 1095 | 'std': np.array([1.00000000e-09, 3.03040898e-01, 5.54888698e-01, 1.00838241e+00, 1096 | 3.22603886e-01, 5.75065145e-01, 9.59593245e-01, 1.11490148e+00, 1097 | 1.22495861e+00, 1.41551243e+00, 1.64280434e+00, 1.84093348e+00, 1098 | 1.54192654e+00, 1.84348246e+00, 1.95372614e+00, 2.01973030e+00, 1099 | 1.57775407e+00, 1.86733175e+00, 1.92488323e+00, 1.94238880e+00, 1100 | 1.54047720e+00, 1.83068057e+00, 1.87313393e+00, 1.84125575e+00, 1101 | 1.46840841e+00, 1.70662975e+00, 1.77005827e+00, 1.76827824e+00, 1102 | 1.13617677e+00, 1.30927152e+00, 1.48452586e+00, 1.61979114e+00, 1103 | 1.72672499e+00, 1.66721720e+00, 1.81271658e+00, 1.84822928e+00, 1104 | 1.85363651e+00, 1.67998462e+00, 1.79811887e+00, 1.79525071e+00, 1105 | 1.76980691e+00, 1.64527248e+00, 1.74581916e+00, 1.72946955e+00, 1106 | 1.70111804e+00, 1.58430135e+00, 1.67423017e+00, 1.66383068e+00, 1107 | 1.64902373e+00, 1.00000000e-09, 1.60586711e-01, 5.01050133e-01, 1108 | 1.22083058e+00, 2.01485606e-01, 5.51927431e-01, 1.18514090e+00, 1109 | 1.35051642e+00, 1.44829275e+00, 1.52843740e+00, 1.68899924e+00, 1110 | 1.83329746e+00, 1.58603913e+00, 1.88069329e+00, 2.02450631e+00, 1111 | 2.11225959e+00, 1.64348597e+00, 2.01159682e+00, 2.10641999e+00, 1112 | 2.13700315e+00, 1.63811824e+00, 2.03930706e+00, 2.12789487e+00, 1113 | 2.10143109e+00, 1.59571843e+00, 1.92730945e+00, 2.05113707e+00, 1114 | 2.06904590e+00, 1.49594690e+00, 1.97519757e+00, 2.34286029e+00, 1115 | 2.49726379e+00, 2.60969731e+00, 2.68042942e+00, 2.86134905e+00, 1116 | 2.89788702e+00, 2.89090070e+00, 2.73998856e+00, 2.92547569e+00, 1117 | 2.92390909e+00, 2.88795446e+00, 2.79916681e+00, 2.92640858e+00, 1118 | 2.90701012e+00, 2.83642308e+00, 2.75932873e+00, 2.89695251e+00, 1119 | 2.88276608e+00, 2.85808018e+00]) 1120 | } 1121 | 1122 | SPEAKERS_CONFIG['Keller_Rinaudo'] = { 1123 | 'median': np.ones(98) * 112, 1124 | 'scale_factor': 1, 1125 | 'mean': np.array([ 0. , -1.78738992, -2.52147346, -1.93147501, 1.7345912 , 1126 | 2.28126498, 1.80134684, 1.74950939, 1.70865035, 1.64598065, 1127 | 1.59876342, 1.56364775, 1.64049298, 1.44702273, 1.29737506, 1128 | 1.15978579, 1.60573273, 1.3513232 , 1.17343081, 1.0309139 , 1129 | 1.54647142, 1.29477194, 1.12975028, 0.99637595, 1.47658534, 1130 | 1.27125765, 1.14344831, 1.02926293, -1.89615414, -1.85618838, 1131 | -1.7557093 , -1.65046768, -1.5609413 , -1.90192044, -1.73017835, 1132 | -1.56669773, -1.42028344, -1.885858 , -1.64412137, -1.45635819, 1133 | -1.30234121, -1.82820541, -1.58951764, -1.41692479, -1.27332804, 1134 | -1.75709109, -1.55786215, -1.42217143, -1.30984509, 0. , 1135 | 0.74594772, 3.4710353 , 3.62595917, 0.86981054, 3.71350345, 1136 | 3.57781239, 3.53919815, 3.2447969 , 3.00514423, 2.88083382, 1137 | 2.76486544, 3.20482203, 3.17108081, 3.15224654, 3.13849198, 1138 | 3.42064124, 3.38753665, 3.35724291, 3.3207806 , 3.59082033, 1139 | 3.55998269, 3.52200485, 3.47627073, 3.72510632, 3.70366315, 1140 | 3.677839 , 3.64453334, 3.5995842 , 3.33920424, 3.14636835, 1141 | 3.06954596, 3.01363391, 3.35671406, 3.35289845, 3.32710375, 1142 | 3.2980236 , 3.58684019, 3.56762257, 3.51312514, 3.45327324, 1143 | 3.75518034, 3.72820413, 3.66560378, 3.60659574, 3.88239346, 1144 | 3.85662784, 3.81101137, 3.75610839]), 1145 | 'std': np.array([1.00000000e-09, 3.00803024e-01, 5.95395929e-01, 1.24007866e+00, 1146 | 3.55361426e-01, 6.57735124e-01, 1.09734760e+00, 1.23416447e+00, 1147 | 1.32174657e+00, 1.44978389e+00, 1.58884179e+00, 1.72281572e+00, 1148 | 1.61785405e+00, 1.80790148e+00, 1.90028709e+00, 1.98271841e+00, 1149 | 1.64021436e+00, 1.81500580e+00, 1.89275859e+00, 1.96006245e+00, 1150 | 1.63051994e+00, 1.78339469e+00, 1.83989325e+00, 1.89482212e+00, 1151 | 1.60499391e+00, 1.72208982e+00, 1.76085781e+00, 1.79964821e+00, 1152 | 1.33217873e+00, 1.42696386e+00, 1.56515476e+00, 1.72033356e+00, 1153 | 1.85993785e+00, 1.73046674e+00, 1.91366543e+00, 1.96581268e+00, 1154 | 1.99654040e+00, 1.73212774e+00, 1.89253094e+00, 1.92691167e+00, 1155 | 1.95335719e+00, 1.69667588e+00, 1.83129231e+00, 1.85534601e+00, 1156 | 1.87732654e+00, 1.64770601e+00, 1.74669774e+00, 1.76613183e+00, 1157 | 1.78500658e+00, 1.00000000e-09, 1.99940812e-01, 4.61767005e-01, 1158 | 8.86016683e-01, 1.78029993e-01, 4.46492749e-01, 8.34407226e-01, 1159 | 9.68574599e-01, 1.04408871e+00, 1.11846635e+00, 1.19657357e+00, 1160 | 1.27295590e+00, 1.23160439e+00, 1.33707309e+00, 1.38255663e+00, 1161 | 1.42277279e+00, 1.26791466e+00, 1.36124994e+00, 1.39390257e+00, 1162 | 1.42477071e+00, 1.28538613e+00, 1.37880952e+00, 1.39610214e+00, 1163 | 1.41331194e+00, 1.28955077e+00, 1.36759402e+00, 1.38333730e+00, 1164 | 1.40136053e+00, 1.09128797e+00, 1.17685705e+00, 1.23353951e+00, 1165 | 1.30591386e+00, 1.38113247e+00, 1.30241085e+00, 1.41565837e+00, 1166 | 1.44668198e+00, 1.46415263e+00, 1.32942308e+00, 1.43587619e+00, 1167 | 1.45757280e+00, 1.47607923e+00, 1.33333896e+00, 1.44767063e+00, 1168 | 1.45959983e+00, 1.44564938e+00, 1.32247867e+00, 1.43168819e+00, 1169 | 1.43918479e+00, 1.44440415e+00]) 1170 | } 1171 | 1172 | SPEAKERS_CONFIG['Kelly_Richmond_Pope'] = { 1173 | 'median': np.ones(98) * 112, 1174 | 'scale_factor': 1, 1175 | 'mean': np.array([ 0. , -1.48920134, -2.04893888, -0.95811192, 1.53300051, 1176 | 2.24192387, 1.50126426, 1.452441 , 1.40995624, 1.32044366, 1177 | 1.21032949, 1.12295017, 1.36272458, 1.20827239, 1.10143403, 1178 | 1.01569953, 1.35161153, 1.15768619, 1.03055541, 0.93638324, 1179 | 1.32506645, 1.13612809, 1.01059573, 0.91763815, 1.29039457, 1180 | 1.13856614, 1.04259999, 0.95911214, -0.87217257, -0.79400782, 1181 | -0.61366814, -0.41359908, -0.26693407, -0.69234072, -0.45127755, 1182 | -0.30424043, -0.18361645, -0.68727446, -0.40878744, -0.26196051, 1183 | -0.12778578, -0.67384948, -0.4121739 , -0.28130532, -0.16207837, 1184 | -0.65321919, -0.44440213, -0.34437091, -0.26847412, 0. , 1185 | 0.67350852, 3.3491127 , 2.50428321, 0.6538276 , 3.24886128, 1186 | 2.3682413 , 2.25934672, 2.02525658, 1.80509312, 1.67796826, 1187 | 1.57840341, 1.84773248, 1.74631718, 1.69360846, 1.66369471, 1188 | 1.99722079, 1.90388072, 1.85660309, 1.81572471, 2.13883096, 1189 | 2.0685992 , 2.0233066 , 1.97585357, 2.27204943, 2.22339606, 1190 | 2.19150311, 2.15926461, 2.37668845, 2.13731186, 1.94049134, 1191 | 1.86580005, 1.8473729 , 1.93791764, 1.90136516, 1.91613481, 1192 | 1.92907644, 2.11309842, 2.09415798, 2.10249546, 2.10249497, 1193 | 2.28015051, 2.27229193, 2.26712395, 2.25328978, 2.43768441, 1194 | 2.42824371, 2.4197904 , 2.40696451]), 1195 | 'std': np.array([1.00000000e-09, 2.53923399e-01, 3.90349116e-01, 8.86542199e-01, 1196 | 2.64533865e-01, 4.67456184e-01, 9.57308502e-01, 1.05762501e+00, 1197 | 1.08304933e+00, 1.17116325e+00, 1.29735782e+00, 1.40475584e+00, 1198 | 1.33563237e+00, 1.49510416e+00, 1.58435843e+00, 1.64858495e+00, 1199 | 1.38879380e+00, 1.53750448e+00, 1.61926354e+00, 1.68104516e+00, 1200 | 1.41067178e+00, 1.53666612e+00, 1.60155752e+00, 1.65738377e+00, 1201 | 1.41558444e+00, 1.51120789e+00, 1.55193307e+00, 1.59553769e+00, 1202 | 9.57186781e-01, 1.01433076e+00, 1.10980873e+00, 1.21412544e+00, 1203 | 1.29085191e+00, 1.23113801e+00, 1.33107644e+00, 1.35769798e+00, 1204 | 1.37313639e+00, 1.22772994e+00, 1.31015772e+00, 1.32479179e+00, 1205 | 1.33650539e+00, 1.19986054e+00, 1.26647044e+00, 1.27027957e+00, 1206 | 1.28295690e+00, 1.16675008e+00, 1.20854985e+00, 1.20908509e+00, 1207 | 1.21409621e+00, 1.00000000e-09, 1.43384782e-01, 4.33339156e-01, 1208 | 5.33316834e-01, 1.48132557e-01, 4.46659827e-01, 6.40434285e-01, 1209 | 7.78412924e-01, 7.81349440e-01, 8.14052593e-01, 8.63403730e-01, 1210 | 9.31923445e-01, 9.20377208e-01, 9.99067650e-01, 1.03005370e+00, 1211 | 1.07615607e+00, 9.47913515e-01, 1.02064282e+00, 1.05034200e+00, 1212 | 1.08621213e+00, 9.60807105e-01, 1.02294155e+00, 1.04839428e+00, 1213 | 1.07767468e+00, 9.69767078e-01, 1.01846695e+00, 1.03706538e+00, 1214 | 1.05214278e+00, 7.34361389e-01, 7.61960806e-01, 8.32154190e-01, 1215 | 8.76982362e-01, 9.27080655e-01, 8.46693571e-01, 9.00331500e-01, 1216 | 9.29004850e-01, 9.57198495e-01, 8.52791373e-01, 9.12588534e-01, 1217 | 9.28051883e-01, 9.55032351e-01, 8.59636232e-01, 9.15094378e-01, 1218 | 9.23725282e-01, 9.33535195e-01, 8.60888967e-01, 9.10895457e-01, 1219 | 9.13422374e-01, 9.16148590e-01]) 1220 | } 1221 | 1222 | SPEAKERS_CONFIG['Laurel_Braitman'] = { 1223 | 'median': np.ones(98) * 112, 1224 | 'scale_factor': 1, 1225 | 'mean': np.array([ 0. , -1.26868863, -1.87098366, -1.01995915, 1.230246 , 1226 | 1.60567757, 1.45242051, 1.23634666, 1.16628013, 1.1057192 , 1227 | 1.07131581, 1.05656517, 1.20836373, 1.09665823, 0.9902999 , 1228 | 0.90071179, 1.20313211, 1.04215165, 0.92025741, 0.8300174 , 1229 | 1.16211425, 1.00103395, 0.89293162, 0.8055235 , 1.10862517, 1230 | 0.97934472, 0.89707228, 0.82220811, -0.94882764, -0.86471772, 1231 | -0.72952711, -0.60066635, -0.48841124, -0.76140571, -0.5753176 , 1232 | -0.47160224, -0.39194415, -0.7628756 , -0.54260269, -0.44328739, 1233 | -0.37462327, -0.75913291, -0.55397894, -0.47474268, -0.41818146, 1234 | -0.75292986, -0.59082045, -0.53717163, -0.49239772, 0. , 1235 | 0.58733535, 2.83305761, 2.79689939, 0.6442057 , 2.94243467, 1236 | 2.98168055, 2.67673856, 2.43593169, 2.25937488, 2.17248602, 1237 | 2.09747913, 2.38516201, 2.3484576 , 2.31316694, 2.29628302, 1238 | 2.52705886, 2.4891615 , 2.4510063 , 2.4289973 , 2.63961436, 1239 | 2.6013599 , 2.56102321, 2.52856099, 2.7281941 , 2.70113829, 1240 | 2.6678961 , 2.63724203, 2.71331603, 2.48670563, 2.32928079, 1241 | 2.27551938, 2.22813743, 2.41694582, 2.4097357 , 2.40269522, 1242 | 2.40198668, 2.59073198, 2.58847824, 2.56716072, 2.55636086, 1243 | 2.72991609, 2.72422104, 2.68881188, 2.66177392, 2.85225476, 1244 | 2.83451976, 2.80707064, 2.77812353]), 1245 | 'std': np.array([1.00000000e-09, 3.36207485e-01, 5.65952623e-01, 1.09601006e+00, 1246 | 3.60507252e-01, 5.53363660e-01, 8.71330284e-01, 1.33924323e+00, 1247 | 1.44572371e+00, 1.54197319e+00, 1.63208459e+00, 1.71566427e+00, 1248 | 1.64561863e+00, 1.75387708e+00, 1.80758940e+00, 1.84653336e+00, 1249 | 1.67346574e+00, 1.77167339e+00, 1.80851089e+00, 1.82561550e+00, 1250 | 1.67726643e+00, 1.76190819e+00, 1.78139931e+00, 1.79185364e+00, 1251 | 1.66774100e+00, 1.72982745e+00, 1.74159894e+00, 1.74778621e+00, 1252 | 1.21998417e+00, 1.30897581e+00, 1.43805233e+00, 1.58257482e+00, 1253 | 1.71347226e+00, 1.59926923e+00, 1.74417587e+00, 1.76421543e+00, 1254 | 1.76709188e+00, 1.60155239e+00, 1.71146535e+00, 1.70132364e+00, 1255 | 1.68349095e+00, 1.57224090e+00, 1.65104565e+00, 1.63127111e+00, 1256 | 1.61659914e+00, 1.52619759e+00, 1.58085971e+00, 1.56229479e+00, 1257 | 1.55421028e+00, 1.00000000e-09, 1.46427209e-01, 3.93662281e-01, 1258 | 6.07065617e-01, 1.40398330e-01, 4.15765168e-01, 8.21108252e-01, 1259 | 1.49612292e+00, 1.57773251e+00, 1.62226852e+00, 1.66815451e+00, 1260 | 1.71084934e+00, 1.64497118e+00, 1.72792269e+00, 1.79774214e+00, 1261 | 1.84316768e+00, 1.70014648e+00, 1.78365470e+00, 1.85094675e+00, 1262 | 1.87586549e+00, 1.74789087e+00, 1.84158057e+00, 1.87892728e+00, 1263 | 1.89528924e+00, 1.78775845e+00, 1.85496164e+00, 1.88014832e+00, 1264 | 1.89393290e+00, 9.61556295e-01, 1.02146958e+00, 1.03281056e+00, 1265 | 1.07426619e+00, 1.12808412e+00, 1.10425374e+00, 1.19528669e+00, 1266 | 1.24159298e+00, 1.25975681e+00, 1.14086979e+00, 1.23393208e+00, 1267 | 1.26579025e+00, 1.26930605e+00, 1.18156855e+00, 1.26150247e+00, 1268 | 1.28309710e+00, 1.27165891e+00, 1.20423411e+00, 1.28015288e+00, 1269 | 1.29460707e+00, 1.29846411e+00]) 1270 | } 1271 | 1272 | SPEAKERS_CONFIG['FeiFei_Li'] = { 1273 | 'median': np.ones(98) * 112, 1274 | 'scale_factor': 1, 1275 | 'mean': np.array([ 0. , -1.32922645, -1.85814849, -1.08771012, 1.31875965, 1276 | 1.85768118, 1.29200868, 1.22904343, 1.20470005, 1.13733549, 1277 | 1.04021281, 0.95618545, 1.08070787, 0.9127705 , 0.81111326, 1278 | 0.72210966, 1.03326398, 0.84261813, 0.72898407, 0.64112826, 1279 | 0.9885785 , 0.80918202, 0.70531016, 0.62213903, 0.9532218 , 1280 | 0.80309979, 0.72434084, 0.65517283, -1.0211285 , -1.00481072, 1281 | -0.91805299, -0.7853383 , -0.65963172, -0.93565827, -0.74934263, 1282 | -0.61536215, -0.51357046, -0.88191073, -0.65044258, -0.51759307, 1283 | -0.41819717, -0.81539671, -0.60156789, -0.48974676, -0.4037503 , 1284 | -0.75825194, -0.58648166, -0.49967798, -0.43140236, 0. , 1285 | 0.61523094, 2.99101973, 2.82795483, 0.60267024, 2.94560678, 1286 | 2.74179787, 2.70832957, 2.48603879, 2.29970555, 2.20981195, 1287 | 2.1420304 , 2.45159169, 2.40626175, 2.36825043, 2.33335382, 1288 | 2.61385036, 2.56056323, 2.50423411, 2.44792169, 2.73575519, 1289 | 2.68339696, 2.62064784, 2.55983791, 2.83030044, 2.78722326, 1290 | 2.73925705, 2.69403961, 2.79279904, 2.57665918, 2.3895283 , 1291 | 2.31054748, 2.26792986, 2.58411972, 2.52509296, 2.45802689, 1292 | 2.40038508, 2.75640485, 2.67235726, 2.57642929, 2.49189751, 1293 | 2.87460685, 2.79051299, 2.69637763, 2.61361412, 2.95931518, 1294 | 2.89017918, 2.82079246, 2.75081641]), 1295 | 'std': np.array([1.00000000e-09, 4.01270237e-01, 6.61906050e-01, 8.67357396e-01, 1296 | 3.03886422e-01, 4.93930744e-01, 1.00315836e+00, 1.08994935e+00, 1297 | 1.15358595e+00, 1.24476238e+00, 1.34774675e+00, 1.44224902e+00, 1298 | 1.39750397e+00, 1.52809400e+00, 1.57175281e+00, 1.60226655e+00, 1299 | 1.40374661e+00, 1.51618595e+00, 1.54362715e+00, 1.55882622e+00, 1300 | 1.37685150e+00, 1.46544658e+00, 1.47670399e+00, 1.48185369e+00, 1301 | 1.33674645e+00, 1.40200064e+00, 1.40459527e+00, 1.40535630e+00, 1302 | 9.48128665e-01, 1.00615584e+00, 1.08558650e+00, 1.17923007e+00, 1303 | 1.26695933e+00, 1.24538786e+00, 1.37805274e+00, 1.40899941e+00, 1304 | 1.41940145e+00, 1.24818458e+00, 1.35478648e+00, 1.37026815e+00, 1305 | 1.37491440e+00, 1.22248680e+00, 1.30768321e+00, 1.31584247e+00, 1306 | 1.32338228e+00, 1.18181831e+00, 1.24531856e+00, 1.25399418e+00, 1307 | 1.26433002e+00, 1.00000000e-09, 1.10433605e-01, 5.04997533e-01, 1308 | 7.33180740e-01, 1.37702062e-01, 4.71276884e-01, 6.89300725e-01, 1309 | 7.92184413e-01, 8.04213970e-01, 8.34114798e-01, 8.79516872e-01, 1310 | 9.32751580e-01, 9.42807610e-01, 1.01749133e+00, 1.03730247e+00, 1311 | 1.05578894e+00, 9.73649737e-01, 1.03839012e+00, 1.04586362e+00, 1312 | 1.05041444e+00, 9.81489248e-01, 1.03739286e+00, 1.03896862e+00, 1313 | 1.04136529e+00, 9.75381561e-01, 1.01787587e+00, 1.01801296e+00, 1314 | 1.01824082e+00, 8.63257643e-01, 8.69766294e-01, 8.91727664e-01, 1315 | 9.36124853e-01, 9.95056827e-01, 9.86869017e-01, 1.05790103e+00, 1316 | 1.06921752e+00, 1.07701399e+00, 1.01192141e+00, 1.07526567e+00, 1317 | 1.07471000e+00, 1.07149221e+00, 1.01778730e+00, 1.07193667e+00, 1318 | 1.06738504e+00, 1.06095046e+00, 1.01741729e+00, 1.05838525e+00, 1319 | 1.05548662e+00, 1.05223751e+00]) 1320 | } 1321 | 1322 | SPEAKERS_CONFIG['Stacy_Smith_no_good'] = { 1323 | 'median': np.ones(98) * 112, 1324 | 'scale_factor': 1, 1325 | 'mean': np.array([ 0. , -1.28912846, -1.82666229, -1.35234695, 1.23076528, 1326 | 1.77778629, 1.46766701, 1.2864184 , 1.16931298, 1.03653975, 1327 | 0.93779213, 0.85664462, 1.1496161 , 0.99602766, 0.87014513, 1328 | 0.76366205, 1.17915496, 0.99367346, 0.84317816, 0.72764322, 1329 | 1.17152378, 0.99716021, 0.85468635, 0.74959164, 1.15385648, 1330 | 0.9993751 , 0.90511679, 0.81964507, -1.47832537, -1.38889348, 1331 | -1.26019428, -1.14480445, -1.05120991, -1.36250422, -1.20209989, 1332 | -1.09052991, -0.99777226, -1.39280199, -1.19262039, -1.08192402, 1333 | -0.99773317, -1.39784506, -1.20799554, -1.11034083, -1.03707921, 1334 | -1.39170543, -1.24008711, -1.16296191, -1.10167654, 0. , 1335 | 0.61929535, 2.72414904, 2.47944463, 0.5863552 , 2.7016951 , 1336 | 2.75339457, 2.41096758, 2.20635027, 2.05928953, 2.04628715, 1337 | 2.01123381, 2.16740804, 2.20001709, 2.21225638, 2.22729995, 1338 | 2.31252076, 2.3862505 , 2.37268093, 2.38261426, 2.43845144, 1339 | 2.49573994, 2.47743702, 2.45915275, 2.52378712, 2.56074717, 1340 | 2.56927303, 2.56214156, 2.11320469, 1.9121716 , 1.7689074 , 1341 | 1.74395265, 1.73559125, 1.83924951, 1.85552279, 1.87943692, 1342 | 1.89891177, 1.99870556, 2.02764915, 2.03559116, 2.03329632, 1343 | 2.13951958, 2.16618261, 2.15927578, 2.14845359, 2.2632546 , 1344 | 2.27707884, 2.26971367, 2.25506023]), 1345 | 'std': np.array([1.00000000e-09, 8.92823700e-01, 1.10002413e+00, 1.25177429e+00, 1346 | 8.67292927e-01, 1.19831099e+00, 1.24394302e+00, 1.54490497e+00, 1347 | 1.58548243e+00, 1.63609205e+00, 1.68833646e+00, 1.73873945e+00, 1348 | 1.74329229e+00, 1.80779239e+00, 1.84333634e+00, 1.86225693e+00, 1349 | 1.76127359e+00, 1.78418224e+00, 1.81400435e+00, 1.83209982e+00, 1350 | 1.76080909e+00, 1.76318761e+00, 1.79387041e+00, 1.80816269e+00, 1351 | 1.75039940e+00, 1.77014976e+00, 1.76389817e+00, 1.76620365e+00, 1352 | 1.25364787e+00, 1.31967154e+00, 1.42704749e+00, 1.54403416e+00, 1353 | 1.64492832e+00, 1.55475606e+00, 1.70313704e+00, 1.75592604e+00, 1354 | 1.79449466e+00, 1.56272222e+00, 1.69054730e+00, 1.72806532e+00, 1355 | 1.75556244e+00, 1.54003812e+00, 1.64737428e+00, 1.67175392e+00, 1356 | 1.69299364e+00, 1.50712116e+00, 1.58714538e+00, 1.60323988e+00, 1357 | 1.61936470e+00, 1.00000000e-09, 2.10650255e-01, 5.80080474e-01, 1358 | 8.71761322e-01, 2.08856441e-01, 5.51268298e-01, 9.19000830e-01, 1359 | 1.74667232e+00, 1.79278955e+00, 1.89100094e+00, 1.89618453e+00, 1360 | 1.96661885e+00, 1.87435677e+00, 1.92546311e+00, 1.99802652e+00, 1361 | 2.04679046e+00, 1.93376470e+00, 1.89509466e+00, 2.01419452e+00, 1362 | 2.04884810e+00, 1.97020168e+00, 1.96831543e+00, 2.06804319e+00, 1363 | 2.14399675e+00, 2.07640471e+00, 2.09425503e+00, 2.09651364e+00, 1364 | 2.12507376e+00, 1.93803292e+00, 1.92517322e+00, 1.94642894e+00, 1365 | 1.96688456e+00, 2.00492763e+00, 1.97795985e+00, 2.03396255e+00, 1366 | 2.05612630e+00, 2.07518205e+00, 2.03102159e+00, 2.07296839e+00, 1367 | 2.09946614e+00, 2.12195313e+00, 2.06436884e+00, 2.10324549e+00, 1368 | 2.12321785e+00, 2.13830186e+00, 2.09191381e+00, 2.12934365e+00, 1369 | 2.13460452e+00, 2.14289938e+00]) 1370 | 1371 | } 1372 | 1373 | SPEAKERS_CONFIG['Sara_DeWitt'] = { 1374 | 'median': np.ones(98) * 112, 1375 | 'scale_factor': 1, 1376 | 'mean': np.array([ 0. , -1.37184282, -1.8510818 , -1.54915377, 1.38336419, 1377 | 1.82950771, 1.55901071, 1.48288919, 1.45420276, 1.4138943 , 1378 | 1.37400342, 1.34755763, 1.49987204, 1.38169897, 1.27917511, 1379 | 1.19474766, 1.47641123, 1.31217632, 1.189728 , 1.09872595, 1380 | 1.42046492, 1.26240205, 1.15318272, 1.07199526, 1.35531189, 1381 | 1.23125444, 1.14840915, 1.08043586, -1.52510937, -1.52114492, 1382 | -1.47066622, -1.4152586 , -1.37078736, -1.59187905, -1.48237387, 1383 | -1.35908197, -1.25351705, -1.56158309, -1.39027923, -1.24751337, 1384 | -1.13664092, -1.49661378, -1.32506876, -1.19790324, -1.10028302, 1385 | -1.42000002, -1.27619745, -1.18184548, -1.10681848, 0. , 1386 | 0.58821466, 2.83916611, 2.66064128, 0.54920348, 2.84379604, 1387 | 2.55048422, 2.46041205, 2.24073286, 2.09088933, 2.03565867, 1388 | 1.99563058, 2.24380314, 2.24432869, 2.23993982, 2.2324649 , 1389 | 2.40863862, 2.40556716, 2.38845106, 2.36521753, 2.53180453, 1390 | 2.52828881, 2.50349085, 2.47501088, 2.6259943 , 2.62576882, 1391 | 2.6074102 , 2.5821455 , 2.61906493, 2.40004186, 2.22496362, 1392 | 2.148853 , 2.09807848, 2.38809314, 2.3594683 , 2.32370973, 1393 | 2.28265472, 2.5680801 , 2.51820904, 2.45815535, 2.38993265, 1394 | 2.69831853, 2.64741075, 2.57859469, 2.51283887, 2.79593769, 1395 | 2.75382193, 2.70167479, 2.64477413]), 1396 | 'std': np.array([1.00000000e-09, 3.19702173e-01, 5.70710490e-01, 9.40193212e-01, 1397 | 2.30106787e-01, 4.98340463e-01, 9.95014065e-01, 1.17869299e+00, 1398 | 1.29255058e+00, 1.44317287e+00, 1.58822968e+00, 1.72162930e+00, 1399 | 1.56582042e+00, 1.73487927e+00, 1.81749454e+00, 1.88562954e+00, 1400 | 1.56889072e+00, 1.72860382e+00, 1.79983476e+00, 1.85779923e+00, 1401 | 1.54069426e+00, 1.67741963e+00, 1.73679736e+00, 1.78952475e+00, 1402 | 1.50475116e+00, 1.60597745e+00, 1.65099349e+00, 1.69306938e+00, 1403 | 1.01589140e+00, 1.10478856e+00, 1.23974056e+00, 1.36961289e+00, 1404 | 1.48531092e+00, 1.36046920e+00, 1.52300219e+00, 1.59427667e+00, 1405 | 1.64095845e+00, 1.35903130e+00, 1.50975437e+00, 1.56420591e+00, 1406 | 1.60196547e+00, 1.33059447e+00, 1.45974952e+00, 1.49938532e+00, 1407 | 1.53141177e+00, 1.29262250e+00, 1.38835560e+00, 1.41807375e+00, 1408 | 1.44714845e+00, 1.00000000e-09, 1.28313997e-01, 3.23792872e-01, 1409 | 6.13309103e-01, 1.07324369e-01, 3.58237395e-01, 5.96216403e-01, 1410 | 8.69704275e-01, 9.21380449e-01, 9.68927982e-01, 1.03352768e+00, 1411 | 1.09851581e+00, 1.05808113e+00, 1.14243368e+00, 1.17406046e+00, 1412 | 1.19991012e+00, 1.08538578e+00, 1.15249799e+00, 1.17259143e+00, 1413 | 1.19080480e+00, 1.08763195e+00, 1.14360648e+00, 1.15451993e+00, 1414 | 1.17010702e+00, 1.08639138e+00, 1.11511799e+00, 1.12028988e+00, 1415 | 1.13727037e+00, 7.41432525e-01, 7.87060922e-01, 8.47197151e-01, 1416 | 9.19670949e-01, 9.84115403e-01, 9.31612119e-01, 1.01833688e+00, 1417 | 1.04747188e+00, 1.05795749e+00, 9.56169595e-01, 1.03566663e+00, 1418 | 1.03753945e+00, 1.03120827e+00, 9.57368323e-01, 1.01635040e+00, 1419 | 1.00632120e+00, 9.94429438e-01, 9.33024789e-01, 9.79701117e-01, 1420 | 9.75321867e-01, 9.71103681e-01]) 1421 | } 1422 | 1423 | SPEAKERS_CONFIG['Vicki_Arroyo'] = { 1424 | 'median': np.ones(98) * 112, 1425 | 'scale_factor': 1, 1426 | 'mean': np.array([ 0. , -1.43015381, -1.93072716, -1.929016 , 1.43051456, 1427 | 1.79539336, 1.33079277, 1.25639017, 1.28800148, 1.29916159, 1428 | 1.2688963 , 1.23790049, 1.26336022, 1.14759621, 1.04971903, 1429 | 0.96159823, 1.16789119, 1.02311467, 0.91799632, 0.83852686, 1430 | 1.07868753, 0.94445513, 0.85248386, 0.7840061 , 0.99818056, 1431 | 0.89274694, 0.82251076, 0.76641284, -1.93565045, -1.93953328, 1432 | -1.93574896, -1.92793866, -1.92159172, -2.12664706, -2.08316812, 1433 | -1.99678621, -1.9072207 , -2.11964038, -2.02626014, -1.90842131, 1434 | -1.80383381, -2.06213015, -1.97182217, -1.86424354, -1.76999184, 1435 | -1.99063965, -1.92653751, -1.85345277, -1.79058625, 0. , 1436 | 0.5366566 , 2.62596687, 3.34771149, 0.59633497, 2.85982185, 1437 | 3.05133782, 3.04521947, 2.87884006, 2.75948967, 2.71992979, 1438 | 2.69011686, 2.97652132, 2.9439777 , 2.88281983, 2.81884489, 1439 | 3.09882659, 3.04049107, 2.95073582, 2.86394547, 3.16664405, 1440 | 3.10559218, 3.01155166, 2.92665827, 3.20955635, 3.15880562, 1441 | 3.08549625, 3.01226139, 3.37345152, 3.2525375 , 3.21093273, 1442 | 3.28166123, 3.37082102, 3.35384735, 3.39932079, 3.42763475, 1443 | 3.42134346, 3.47143328, 3.47240795, 3.47935384, 3.44573709, 1444 | 3.51852575, 3.49118564, 3.48159362, 3.46044281, 3.5574022 , 1445 | 3.50824217, 3.48756869, 3.44470165]), 1446 | 'std': np.array([1.00000000e-09, 1.98321179e-01, 3.65893394e-01, 8.13108210e-01, 1447 | 1.92243730e-01, 4.72762268e-01, 1.07649132e+00, 1.17324452e+00, 1448 | 1.25214082e+00, 1.37015180e+00, 1.48734952e+00, 1.59654778e+00, 1449 | 1.51558568e+00, 1.65919638e+00, 1.72542276e+00, 1.77329541e+00, 1450 | 1.53057672e+00, 1.66220571e+00, 1.71258737e+00, 1.75177504e+00, 1451 | 1.51229552e+00, 1.62181707e+00, 1.66071336e+00, 1.69485294e+00, 1452 | 1.47954694e+00, 1.56446652e+00, 1.59586682e+00, 1.62164764e+00, 1453 | 8.92229897e-01, 9.95605539e-01, 1.12670865e+00, 1.24781256e+00, 1454 | 1.37759646e+00, 1.18206296e+00, 1.31750537e+00, 1.38031731e+00, 1455 | 1.42592459e+00, 1.16083349e+00, 1.28224211e+00, 1.32149570e+00, 1456 | 1.35393411e+00, 1.13551088e+00, 1.23588437e+00, 1.26101072e+00, 1457 | 1.28127341e+00, 1.10344225e+00, 1.18708923e+00, 1.20536018e+00, 1458 | 1.22461608e+00, 1.00000000e-09, 1.22265068e-01, 3.05127656e-01, 1459 | 7.86917301e-01, 1.23384493e-01, 3.01131291e-01, 6.14514003e-01, 1460 | 7.03279054e-01, 7.53473953e-01, 8.14138865e-01, 8.82095867e-01, 1461 | 9.55904653e-01, 9.04382528e-01, 9.77918198e-01, 9.95956130e-01, 1462 | 1.00630861e+00, 9.03510933e-01, 9.64448856e-01, 9.71159208e-01, 1463 | 9.74589465e-01, 8.84347353e-01, 9.35398779e-01, 9.42869443e-01, 1464 | 9.44980258e-01, 8.60567952e-01, 9.03796075e-01, 9.13007394e-01, 1465 | 9.16145058e-01, 9.55193321e-01, 1.10075037e+00, 1.23259112e+00, 1466 | 1.34038825e+00, 1.43884475e+00, 1.34053504e+00, 1.54123044e+00, 1467 | 1.59214216e+00, 1.64685761e+00, 1.35076605e+00, 1.55973958e+00, 1468 | 1.57388014e+00, 1.59611442e+00, 1.36340179e+00, 1.55857961e+00, 1469 | 1.55661706e+00, 1.53356894e+00, 1.32204978e+00, 1.51173798e+00, 1470 | 1.51811364e+00, 1.52194107e+00]) 1471 | } 1472 | 1473 | SPEAKERS_CONFIG['daniel_susskind'] = { 1474 | 'median': np.ones(98) * 112, 1475 | 'scale_factor': 1, 1476 | 'mean': np.array([ 0. , -1.59053417, -2.07767324, -1.09338101, 1.53651005, 1477 | 2.07084279, 1.2657888 , 0.8681602 , 0.66315872, 0.52595727, 1478 | 0.39664132, 0.3043368 , 0.51631851, 0.32829812, 0.18732256, 1479 | 0.07684901, 0.48270404, 0.2639835 , 0.11948665, 0.02808017, 1480 | 0.44566855, 0.23281344, 0.11988744, 0.03746794, 0.42008354, 1481 | 0.25205698, 0.16868312, 0.08951147, -1.08305768, -1.06480092, 1482 | -0.95743421, -0.85046964, -0.77385595, -0.91953657, -0.75436002, 1483 | -0.64821094, -0.56641812, -0.88654683, -0.71014125, -0.60564969, 1484 | -0.51675058, -0.87868211, -0.7100917 , -0.62287558, -0.53371606, 1485 | -0.87128532, -0.73365135, -0.66487187, -0.6010172 , 0. , 1486 | 0.80913979, 3.10558228, 2.86609018, 0.82263361, 3.09710402, 1487 | 2.97046181, 2.50935519, 2.09754339, 1.89945285, 1.7717207 , 1488 | 1.66913613, 1.96346754, 1.84878667, 1.78802765, 1.74045962, 1489 | 2.08457766, 1.98113303, 1.90852925, 1.85822288, 2.19858117, 1490 | 2.09435954, 2.04130035, 1.98663781, 2.30054038, 2.22927723, 1491 | 2.19146339, 2.14266844, 2.21134899, 1.92635412, 1.71005566, 1492 | 1.58447383, 1.46891345, 1.77906342, 1.6506884 , 1.59957187, 1493 | 1.56647093, 1.9352285 , 1.78048865, 1.72444274, 1.69291546, 1494 | 2.03953173, 1.90688235, 1.84841421, 1.81998571, 2.13551298, 1495 | 2.03088161, 1.98572487, 1.94822127]), 1496 | 'std': np.array([1.00000000e-09, 1.59984526e-01, 3.71958943e-01, 8.04411612e-01, 1497 | 1.74722568e-01, 3.81710706e-01, 7.96934376e-01, 1.23157336e+00, 1498 | 1.42127868e+00, 1.46218747e+00, 1.51725434e+00, 1.56354361e+00, 1499 | 1.50183811e+00, 1.53116700e+00, 1.57249393e+00, 1.60876483e+00, 1500 | 1.51951950e+00, 1.53756627e+00, 1.57464871e+00, 1.59548878e+00, 1501 | 1.53529253e+00, 1.55579021e+00, 1.56807497e+00, 1.58601754e+00, 1502 | 1.53521940e+00, 1.54050200e+00, 1.54392706e+00, 1.57615098e+00, 1503 | 1.01259207e+00, 1.04026598e+00, 1.10163391e+00, 1.18173389e+00, 1504 | 1.26469362e+00, 1.16053978e+00, 1.25700256e+00, 1.30358778e+00, 1505 | 1.33594040e+00, 1.17731439e+00, 1.27270321e+00, 1.30926889e+00, 1506 | 1.33660293e+00, 1.17969519e+00, 1.26832284e+00, 1.29551559e+00, 1507 | 1.31791898e+00, 1.17907833e+00, 1.24974262e+00, 1.27150920e+00, 1508 | 1.29216308e+00, 1.00000000e-09, 1.39032854e-01, 4.13297725e-01, 1509 | 7.88365923e-01, 1.38186475e-01, 3.90189221e-01, 8.28030489e-01, 1510 | 1.49467153e+00, 1.71065521e+00, 1.71583076e+00, 1.75900338e+00, 1511 | 1.76294228e+00, 1.72395545e+00, 1.77391448e+00, 1.84705865e+00, 1512 | 1.90261393e+00, 1.80421566e+00, 1.84299394e+00, 1.91089415e+00, 1513 | 1.94007365e+00, 1.87522200e+00, 1.92484334e+00, 1.94498226e+00, 1514 | 1.96099144e+00, 1.92051272e+00, 1.94099774e+00, 1.94739367e+00, 1515 | 1.97663235e+00, 1.82340904e+00, 1.89657934e+00, 1.90242621e+00, 1516 | 1.92978618e+00, 1.98043178e+00, 1.90902226e+00, 1.99603060e+00, 1517 | 2.03725386e+00, 2.05815040e+00, 1.95205565e+00, 2.07340564e+00, 1518 | 2.09608670e+00, 2.09626055e+00, 2.02195332e+00, 2.13121618e+00, 1519 | 2.14183609e+00, 2.11333070e+00, 2.07392000e+00, 2.15925925e+00, 1520 | 2.16443834e+00, 2.15144128e+00]) 1521 | } 1522 | 1523 | SPEAKERS_CONFIG['Dan_Ariely'] = { 1524 | 'median': np.ones(98) * 112, 1525 | 'scale_factor': 1, 1526 | 'mean': np.array([ 0. , -1.52061031, -2.17871201, -1.03637348, 1.56602338, 1527 | 2.31081532, 1.77478227, 1.61504379, 1.53390586, 1.42455973, 1528 | 1.32371477, 1.24964299, 1.53398251, 1.37291062, 1.26958856, 1529 | 1.18524512, 1.53706434, 1.33582853, 1.22476471, 1.1454513 , 1530 | 1.5101916 , 1.31308426, 1.21578703, 1.14428053, 1.46831911, 1531 | 1.31617502, 1.23916827, 1.17693301, -0.96139877, -0.90631806, 1532 | -0.75598977, -0.59161681, -0.45065024, -0.79540805, -0.54159407, 1533 | -0.41611286, -0.33142785, -0.7614939 , -0.47573752, -0.36941758, 1534 | -0.30542756, -0.72732643, -0.47009014, -0.38776467, -0.34032827, 1535 | -0.69908842, -0.50057372, -0.43429543, -0.39393205, 0. , 1536 | 0.66674422, 3.04998383, 2.60987325, 0.57170469, 2.92785166, 1537 | 2.44628093, 2.23481382, 1.98033512, 1.78840014, 1.68658471, 1538 | 1.62219602, 1.80432371, 1.72569816, 1.70779376, 1.69374821, 1539 | 1.94255916, 1.87217421, 1.85019987, 1.8276927 , 2.07621784, 1540 | 2.01156338, 1.98462304, 1.95593189, 2.19452345, 2.14429292, 1541 | 2.11716802, 2.08607231, 2.46856471, 2.19464317, 1.95160432, 1542 | 1.83740104, 1.77678689, 1.98001143, 1.93008268, 1.93066418, 1543 | 1.93192938, 2.15116316, 2.10266662, 2.10101372, 2.10144014, 1544 | 2.28950988, 2.24983751, 2.23831407, 2.23473248, 2.40976666, 1545 | 2.37807174, 2.36727801, 2.35060381]), 1546 | 'std': np.array([1.00000000e-09, 4.15709961e-01, 8.63784606e-01, 1.39586573e+00, 1547 | 4.46869217e-01, 7.74005933e-01, 1.39981938e+00, 1.63286196e+00, 1548 | 1.71068199e+00, 1.80196237e+00, 1.90788898e+00, 1.99967461e+00, 1549 | 1.94158869e+00, 2.09099786e+00, 2.14943006e+00, 2.19501581e+00, 1550 | 1.96984213e+00, 2.10393692e+00, 2.14374080e+00, 2.17494699e+00, 1551 | 1.97395035e+00, 2.08474048e+00, 2.10532438e+00, 2.12577471e+00, 1552 | 1.96539115e+00, 2.04273440e+00, 2.05453112e+00, 2.06815662e+00, 1553 | 1.46735606e+00, 1.49355078e+00, 1.54880998e+00, 1.63410442e+00, 1554 | 1.71308092e+00, 1.70952946e+00, 1.80315575e+00, 1.79935387e+00, 1555 | 1.79220798e+00, 1.74662800e+00, 1.80248497e+00, 1.77700708e+00, 1556 | 1.75310241e+00, 1.75264468e+00, 1.78928310e+00, 1.75556924e+00, 1557 | 1.72524800e+00, 1.74399645e+00, 1.76887337e+00, 1.74224653e+00, 1558 | 1.72189501e+00, 1.00000000e-09, 1.93716444e-01, 8.26189920e-01, 1559 | 1.19764453e+00, 2.01174651e-01, 8.77663849e-01, 1.23915253e+00, 1560 | 1.54105959e+00, 1.56067125e+00, 1.57109225e+00, 1.61951346e+00, 1561 | 1.66636871e+00, 1.64021549e+00, 1.72638677e+00, 1.77999450e+00, 1562 | 1.82788868e+00, 1.70918452e+00, 1.78934765e+00, 1.82899510e+00, 1563 | 1.85758404e+00, 1.76601563e+00, 1.84187674e+00, 1.86065846e+00, 1564 | 1.87840475e+00, 1.81812130e+00, 1.86787059e+00, 1.87686413e+00, 1565 | 1.89151743e+00, 1.41058649e+00, 1.45753614e+00, 1.47947725e+00, 1566 | 1.54831582e+00, 1.61956323e+00, 1.58221102e+00, 1.67662787e+00, 1567 | 1.70486072e+00, 1.72831709e+00, 1.65098387e+00, 1.73569401e+00, 1568 | 1.74720782e+00, 1.75079631e+00, 1.73507651e+00, 1.79883512e+00, 1569 | 1.79031076e+00, 1.77445969e+00, 1.79758386e+00, 1.84456882e+00, 1570 | 1.82801945e+00, 1.81920694e+00]) 1571 | 1572 | } 1573 | 1574 | SPEAKERS_CONFIG['Dena_Simmons'] = { 1575 | 'median': np.ones(98) * 112, 1576 | 'scale_factor': 1, 1577 | 'mean': np.array([ 0. , -1.32671111, -1.70898239, -1.38148399, 1.2674879 , 1578 | 1.70429258, 1.83110168, 1.15629808, 0.67745725, 0.39139582, 1579 | 0.24751003, 0.17217772, 0.57686829, 0.30324958, 0.18916796, 1580 | 0.10490191, 0.51274994, 0.24934172, 0.14662317, 0.0681714 , 1581 | 0.42096946, 0.21571229, 0.13971116, 0.06791959, 0.36387298, 1582 | 0.22501558, 0.15998 , 0.09242384, -1.38843969, -1.33251132, 1583 | -1.2320224 , -1.12926197, -1.03795619, -1.31640134, -1.17839898, 1584 | -1.07546404, -0.98838937, -1.32385558, -1.15195077, -1.04205277, 1585 | -0.95839166, -1.320917 , -1.15347666, -1.05234124, -0.9717273 , 1586 | -1.30338945, -1.16452591, -1.08407723, -1.0169221 , 0. , 1587 | 0.63789484, 2.82622566, 2.40705967, 0.47388226, 2.65721488, 1588 | 2.95790198, 2.0125996 , 1.3014549 , 0.90448183, 0.68825752, 1589 | 0.57698081, 1.0032702 , 0.69087711, 0.61187128, 0.56986139, 1590 | 0.9954768 , 0.75530534, 0.70279596, 0.65725578, 0.97945787, 1591 | 0.81827698, 0.79789433, 0.73969878, 1.00439302, 0.91154909, 1592 | 0.87638059, 0.81035885, 2.23345794, 1.9957466 , 1.77898656, 1593 | 1.67939582, 1.5828782 , 1.77336911, 1.69359889, 1.68066421, 1594 | 1.66981155, 1.8993805 , 1.82307356, 1.81227444, 1.80010526, 1595 | 2.00969673, 1.94934976, 1.93507569, 1.92751947, 2.12643006, 1596 | 2.07491163, 2.0633099 , 2.04994315]), 1597 | 'std': np.array([1.00000000e-09, 4.08285886e-01, 5.37121096e-01, 8.71946563e-01, 1598 | 4.12282634e-01, 6.11762415e-01, 9.06978755e-01, 1.69966614e+00, 1599 | 2.00191040e+00, 2.13490451e+00, 2.21659421e+00, 2.26303688e+00, 1600 | 2.23270611e+00, 2.35017790e+00, 2.36805165e+00, 2.37394797e+00, 1601 | 2.29627659e+00, 2.35602394e+00, 2.34603797e+00, 2.33723647e+00, 1602 | 2.32351897e+00, 2.35254582e+00, 2.31999721e+00, 2.31027793e+00, 1603 | 2.31767244e+00, 2.32762186e+00, 2.30587210e+00, 2.30070455e+00, 1604 | 9.13129107e-01, 9.60813104e-01, 1.04666124e+00, 1.13543873e+00, 1605 | 1.22065216e+00, 1.19813460e+00, 1.32304847e+00, 1.36258205e+00, 1606 | 1.39395817e+00, 1.22366288e+00, 1.33356313e+00, 1.36087143e+00, 1607 | 1.38704473e+00, 1.22117060e+00, 1.31114679e+00, 1.33057436e+00, 1608 | 1.35115518e+00, 1.20316279e+00, 1.27333047e+00, 1.28827426e+00, 1609 | 1.30591601e+00, 1.00000000e-09, 2.24756100e-01, 5.35069110e-01, 1610 | 7.23929770e-01, 2.38824569e-01, 5.24184193e-01, 1.05334019e+00, 1611 | 1.96148946e+00, 2.20731111e+00, 2.26955660e+00, 2.34286927e+00, 1612 | 2.38498516e+00, 2.27035892e+00, 2.40544254e+00, 2.47068244e+00, 1613 | 2.52236063e+00, 2.36167783e+00, 2.47597575e+00, 2.52770214e+00, 1614 | 2.56720823e+00, 2.44301903e+00, 2.54469073e+00, 2.55992396e+00, 1615 | 2.59643755e+00, 2.50673760e+00, 2.57147923e+00, 2.58813160e+00, 1616 | 2.62636639e+00, 1.12222273e+00, 1.15805069e+00, 1.23323303e+00, 1617 | 1.27015104e+00, 1.32717458e+00, 1.25752732e+00, 1.33247522e+00, 1618 | 1.37077502e+00, 1.41721512e+00, 1.29912033e+00, 1.39896505e+00, 1619 | 1.43278090e+00, 1.46709798e+00, 1.37071898e+00, 1.45249912e+00, 1620 | 1.47480597e+00, 1.48532896e+00, 1.41428911e+00, 1.48859498e+00, 1621 | 1.48931973e+00, 1.50199060e+00]) 1622 | 1623 | } 1624 | 1625 | SPEAKERS_CONFIG['Stanley_McChrystal'] = { 1626 | 'median': np.ones(98) * 112, 1627 | 'scale_factor': 1, 1628 | 'mean': np.array([ 0. , -1.20970112, -1.78184855, -1.93372151, 1.39422362, 1629 | 2.01909743, 1.03556081, 0.92900821, 0.79465224, 0.60323883, 1630 | 0.42230403, 0.26172113, 0.62343882, 0.38623023, 0.23477015, 1631 | 0.10702492, 0.63293302, 0.36290843, 0.2094316 , 0.09788613, 1632 | 0.63374358, 0.38669451, 0.2599326 , 0.17109027, 0.63419738, 1633 | 0.44206407, 0.35158083, 0.2775307 , -1.95703567, -1.9335366 , 1634 | -1.89316227, -1.86755643, -1.84896573, -2.0412647 , -1.9840291 , 1635 | -1.89099935, -1.80674288, -2.07689652, -1.96354895, -1.83920887, 1636 | -1.73626386, -2.06131385, -1.94172925, -1.82392343, -1.72696778, 1637 | -2.02438723, -1.92271936, -1.83659787, -1.7586002 , 0. , 1638 | 0.85286796, 3.21208821, 3.1389567 , 0.71733128, 3.10551972, 1639 | 3.33381399, 3.34433628, 3.11881779, 2.96770498, 2.93275188, 1640 | 2.90898097, 3.14375969, 3.15930581, 3.15348179, 3.14225303, 1641 | 3.3489085 , 3.35445151, 3.32216601, 3.28633532, 3.50968649, 1642 | 3.51025893, 3.46797721, 3.42073258, 3.63848607, 3.63587839, 1643 | 3.60646414, 3.56999241, 3.10259301, 2.8681846 , 2.6774324 , 1644 | 2.58518526, 2.51778432, 2.74871926, 2.69924025, 2.68426765, 1645 | 2.67777918, 2.93371521, 2.89605158, 2.87105263, 2.84927583, 1646 | 3.09809173, 3.06464304, 3.03411583, 3.00795203, 3.24128544, 1647 | 3.21603032, 3.18817925, 3.15788871]), 1648 | 'std': np.array([1.00000000e-09, 6.49262945e-01, 1.15265273e+00, 1.52325942e+00, 1649 | 5.00654975e-01, 9.07370918e-01, 1.45175969e+00, 1.54025576e+00, 1650 | 1.61546518e+00, 1.72830315e+00, 1.84682229e+00, 1.95634381e+00, 1651 | 1.95036251e+00, 2.09267770e+00, 2.11774404e+00, 2.12942965e+00, 1652 | 1.95890000e+00, 2.06536535e+00, 2.05948187e+00, 2.04472432e+00, 1653 | 1.91815272e+00, 1.99793557e+00, 1.98195550e+00, 1.96677853e+00, 1654 | 1.86244242e+00, 1.91669392e+00, 1.90513448e+00, 1.89551484e+00, 1655 | 1.62394582e+00, 1.70430986e+00, 1.83799118e+00, 1.99389540e+00, 1656 | 2.13820744e+00, 2.00990809e+00, 2.21566844e+00, 2.30700221e+00, 1657 | 2.37657097e+00, 2.04624780e+00, 2.23858620e+00, 2.30560753e+00, 1658 | 2.35226104e+00, 2.03811007e+00, 2.20382601e+00, 2.24948351e+00, 1659 | 2.28412466e+00, 2.01050292e+00, 2.13725460e+00, 2.17221742e+00, 1660 | 2.19851700e+00, 1.00000000e-09, 1.68129592e-01, 5.63129923e-01, 1661 | 1.13407635e+00, 1.73321962e-01, 5.29865059e-01, 8.95386414e-01, 1662 | 9.90962575e-01, 1.01624645e+00, 1.07395111e+00, 1.15287721e+00, 1663 | 1.23239561e+00, 1.21158938e+00, 1.30583031e+00, 1.32448904e+00, 1664 | 1.33509263e+00, 1.24605084e+00, 1.31970168e+00, 1.31535178e+00, 1665 | 1.30455427e+00, 1.24163297e+00, 1.30388283e+00, 1.29229657e+00, 1666 | 1.28024563e+00, 1.21614511e+00, 1.26163158e+00, 1.25945481e+00, 1667 | 1.25456990e+00, 1.26279445e+00, 1.30584113e+00, 1.36841117e+00, 1668 | 1.44374881e+00, 1.52274841e+00, 1.50400765e+00, 1.60383518e+00, 1669 | 1.63139144e+00, 1.65014039e+00, 1.54531024e+00, 1.63375079e+00, 1670 | 1.64277599e+00, 1.64053881e+00, 1.55372427e+00, 1.63022147e+00, 1671 | 1.62872130e+00, 1.61127724e+00, 1.53556795e+00, 1.59828660e+00, 1672 | 1.60319835e+00, 1.59723441e+00]) 1673 | 1674 | } 1675 | 1676 | SPEAKERS_CONFIG['Seema_Bansal'] = { 1677 | 'median': np.ones(98) * 112, 1678 | 'scale_factor': 1, 1679 | 'mean': np.array([ 0. , -1.40953135, -1.90851615, -1.1531883 , 1.44919938, 1680 | 1.993433 , 1.47051017, 1.39639792, 1.32765061, 1.21316457, 1681 | 1.08938823, 0.98905291, 1.27548386, 1.09072056, 0.96863478, 1682 | 0.85344033, 1.25359116, 1.0307414 , 0.887757 , 0.77407451, 1683 | 1.21487216, 0.99988077, 0.86742446, 0.75709108, 1.17396474, 1684 | 0.99005752, 0.88815338, 0.79490474, -1.05741282, -0.93664287, 1685 | -0.75322569, -0.57658209, -0.42453932, -0.78240461, -0.54364271, 1686 | -0.40820871, -0.29851198, -0.79029464, -0.52799201, -0.38177942, 1687 | -0.26260613, -0.79234516, -0.5432291 , -0.41165139, -0.29490473, 1688 | -0.79046124, -0.58943856, -0.48262306, -0.38136404, 0. , 1689 | 0.61506936, 3.09323912, 2.89467654, 0.54501874, 2.94656141, 1690 | 2.93480347, 2.91236219, 2.72592696, 2.5981872 , 2.55901417, 1691 | 2.54632898, 2.74062642, 2.75860559, 2.77280026, 2.79269327, 1692 | 2.91267159, 2.93136204, 2.93232843, 2.92200398, 3.04722002, 1693 | 3.05892215, 3.04311074, 3.01863797, 3.15415044, 3.15434426, 1694 | 3.13635386, 3.11663994, 2.85637803, 2.66266767, 2.5632497 , 1695 | 2.56413399, 2.59042702, 2.66854899, 2.7294872 , 2.7615801 , 1696 | 2.79434248, 2.8482255 , 2.91126703, 2.93987713, 2.94857051, 1697 | 2.98922535, 3.04266765, 3.04979868, 3.04328226, 3.1035342 , 1698 | 3.13874592, 3.13732136, 3.12964445]), 1699 | 'std': np.array([1.00000000e-09, 2.40432657e-01, 3.81861330e-01, 6.68889073e-01, 1700 | 2.41572281e-01, 3.96190367e-01, 8.24438678e-01, 9.61948467e-01, 1701 | 1.04057227e+00, 1.16163324e+00, 1.28583940e+00, 1.40140262e+00, 1702 | 1.28707661e+00, 1.44135646e+00, 1.51372195e+00, 1.57362229e+00, 1703 | 1.29550974e+00, 1.43293224e+00, 1.49490956e+00, 1.53523475e+00, 1704 | 1.26977702e+00, 1.38949159e+00, 1.43642351e+00, 1.47502901e+00, 1705 | 1.23261071e+00, 1.33361496e+00, 1.36452820e+00, 1.39302142e+00, 1706 | 7.68801239e-01, 8.49738926e-01, 9.67093652e-01, 1.08972209e+00, 1707 | 1.19664286e+00, 1.08419133e+00, 1.21314377e+00, 1.25873963e+00, 1708 | 1.28698575e+00, 1.07886101e+00, 1.18819848e+00, 1.22021144e+00, 1709 | 1.24127938e+00, 1.04670053e+00, 1.13956001e+00, 1.16108672e+00, 1710 | 1.18151171e+00, 1.00467702e+00, 1.07310024e+00, 1.09010886e+00, 1711 | 1.11366143e+00, 1.00000000e-09, 1.33497211e-01, 3.49633532e-01, 1712 | 4.94801421e-01, 1.56663438e-01, 3.38162158e-01, 5.89630226e-01, 1713 | 7.95568691e-01, 8.05055045e-01, 8.51851592e-01, 8.96500886e-01, 1714 | 9.48170278e-01, 9.10056973e-01, 9.77295468e-01, 1.01845965e+00, 1715 | 1.05019127e+00, 9.58670046e-01, 1.00677398e+00, 1.03531330e+00, 1716 | 1.03949634e+00, 9.80801853e-01, 1.02083085e+00, 1.03000075e+00, 1717 | 1.02936744e+00, 9.81425929e-01, 1.01548932e+00, 1.01740709e+00, 1718 | 1.01944649e+00, 7.07490542e-01, 7.31150849e-01, 7.40099072e-01, 1719 | 7.72145384e-01, 8.24272891e-01, 8.21482204e-01, 8.65735170e-01, 1720 | 8.88676710e-01, 9.09200998e-01, 8.49419159e-01, 8.79509955e-01, 1721 | 9.02822212e-01, 9.20494048e-01, 8.55287212e-01, 8.88672975e-01, 1722 | 9.00292197e-01, 9.06352837e-01, 8.54730604e-01, 8.94125969e-01, 1723 | 8.97500743e-01, 9.03516486e-01]) 1724 | 1725 | } 1726 | 1727 | SPEAKERS_CONFIG['Tshering_Tobgay'] = { 1728 | 'median': np.ones(98) * 112, 1729 | 'scale_factor': 1, 1730 | 'mean': np.array([ 0. , -1.5426154 , -2.31055851, -1.78168447, 1.64907599, 1731 | 2.29680892, 1.61073857, 1.42986363, 1.18693051, 0.98660171, 1732 | 0.85957451, 0.74577074, 1.17117359, 0.98282705, 0.85049575, 1733 | 0.72490218, 1.24307146, 1.02107376, 0.87756626, 0.75344788, 1734 | 1.27921894, 1.0685921 , 0.93623641, 0.82077189, 1.30282797, 1735 | 1.12947448, 1.03005593, 0.93673451, -1.81556441, -1.70020793, 1736 | -1.56460705, -1.45253646, -1.34691992, -1.74461516, -1.55995082, 1737 | -1.43041308, -1.31787137, -1.79063659, -1.55537355, -1.41291994, 1738 | -1.29170835, -1.80852066, -1.5812527 , -1.44947227, -1.34318587, 1739 | -1.8058097 , -1.62763156, -1.52367865, -1.43320964, 0. , 1740 | 0.85148611, 3.19562375, 3.72047072, 0.70480475, 3.24204312, 1741 | 4.3068104 , 4.1860717 , 3.96398473, 3.867642 , 3.92277685, 1742 | 3.96967226, 4.03891626, 4.17569858, 4.20448118, 4.2188033 , 1743 | 4.2038805 , 4.34045895, 4.33994614, 4.3314275 , 4.33551951, 1744 | 4.44997151, 4.43376398, 4.41530341, 4.45266256, 4.53873974, 1745 | 4.52403242, 4.50375821, 3.67509985, 3.4741722 , 3.36017855, 1746 | 3.37765579, 3.41041793, 3.47782993, 3.55789184, 3.59480922, 1747 | 3.62360585, 3.69043964, 3.76242246, 3.76632635, 3.76283129, 1748 | 3.85404474, 3.90182728, 3.88795795, 3.87706907, 3.99157181, 1749 | 4.01390115, 3.99955427, 3.98475352]), 1750 | 'std': np.array([1.00000000e-09, 6.29667454e-01, 9.89894273e-01, 1.39412690e+00, 1751 | 5.72887526e-01, 8.87518427e-01, 1.35181317e+00, 1.65282590e+00, 1752 | 1.77265651e+00, 1.86443568e+00, 1.93362752e+00, 2.01223538e+00, 1753 | 2.01260581e+00, 2.10649119e+00, 2.14228354e+00, 2.17134311e+00, 1754 | 2.04381182e+00, 2.11418754e+00, 2.13057464e+00, 2.13954710e+00, 1755 | 2.04381299e+00, 2.10130644e+00, 2.10473152e+00, 2.10798706e+00, 1756 | 2.02679342e+00, 2.06511013e+00, 2.06457024e+00, 2.06565255e+00, 1757 | 1.47203047e+00, 1.54125198e+00, 1.65902661e+00, 1.79999631e+00, 1758 | 1.94209778e+00, 1.83044148e+00, 2.01263617e+00, 2.05557428e+00, 1759 | 2.07826273e+00, 1.84389937e+00, 1.99992039e+00, 2.01676671e+00, 1760 | 2.01714896e+00, 1.81592662e+00, 1.94881638e+00, 1.95016457e+00, 1761 | 1.94064188e+00, 1.77283836e+00, 1.87492038e+00, 1.87631139e+00, 1762 | 1.87344791e+00, 1.00000000e-09, 2.40368011e-01, 8.19167921e-01, 1763 | 1.50955020e+00, 2.09866833e-01, 7.96096084e-01, 1.56895385e+00, 1764 | 2.12358137e+00, 2.35018353e+00, 2.52554899e+00, 2.63411732e+00, 1765 | 2.75257932e+00, 2.56750224e+00, 2.69839674e+00, 2.77831130e+00, 1766 | 2.84698410e+00, 2.59480877e+00, 2.69436907e+00, 2.76153510e+00, 1767 | 2.82755178e+00, 2.59859759e+00, 2.69057305e+00, 2.74731597e+00, 1768 | 2.80722435e+00, 2.58245382e+00, 2.64833506e+00, 2.69239175e+00, 1769 | 2.74168237e+00, 1.87005704e+00, 1.92607763e+00, 2.02284846e+00, 1770 | 2.11035361e+00, 2.22433129e+00, 2.10774473e+00, 2.25620209e+00, 1771 | 2.31478256e+00, 2.35546283e+00, 2.11815506e+00, 2.26387858e+00, 1772 | 2.32062386e+00, 2.35587353e+00, 2.13386470e+00, 2.27017833e+00, 1773 | 2.31148031e+00, 2.32671453e+00, 2.13707704e+00, 2.26067909e+00, 1774 | 2.29110446e+00, 2.30383057e+00]) 1775 | 1776 | } 1777 | 1778 | 1779 | SPEAKERS_CONFIG['molly_winter'] = { 1780 | 'median': np.ones(98) * 112, 1781 | 'scale_factor': 1, 1782 | 'mean': np.array([ 0. , -1.40417455, -1.93915965, -2.05325684, 1.37072822, 1783 | 1.75503212, 1.64890912, 1.62898026, 1.61529551, 1.57606879, 1784 | 1.53174505, 1.49379764, 1.73160648, 1.66843796, 1.59464609, 1785 | 1.51958521, 1.72460027, 1.61225515, 1.51997087, 1.44381198, 1786 | 1.68049785, 1.56653305, 1.47839914, 1.40486713, 1.62913535, 1787 | 1.54168091, 1.470533 , 1.40991999, -2.06556883, -2.06104822, 1788 | -2.04168945, -2.03495656, -2.02745634, -2.21403956, -2.19367452, 1789 | -2.14885706, -2.10818925, -2.2305437 , -2.16783652, -2.10657543, 1790 | -2.0526853 , -2.20319322, -2.13547311, -2.07614425, -2.02157022, 1791 | -2.1628595 , -2.10670246, -2.06008777, -2.0197715 , 0. , 1792 | 0.59925777, 2.83315462, 2.26691744, 0.56002944, 2.85605978, 1793 | 2.497442 , 2.45031315, 2.25846407, 2.12119046, 2.08862409, 1794 | 2.08203738, 2.22391203, 2.22765974, 2.22629016, 2.22243306, 1795 | 2.37273701, 2.36432486, 2.33861217, 2.31751521, 2.49075797, 1796 | 2.47221082, 2.43265099, 2.4029547 , 2.58964675, 2.56323913, 1797 | 2.52757512, 2.50045151, 2.17719543, 1.9727938 , 1.78831173, 1798 | 1.69150947, 1.63451964, 1.81613529, 1.74854777, 1.7283022 , 1799 | 1.71450909, 1.93796868, 1.87753457, 1.84878146, 1.82512106, 1800 | 2.05230744, 1.99368792, 1.95919174, 1.93252213, 2.15735083, 1801 | 2.10447618, 2.07407801, 2.05188586]), 1802 | 'std': np.array([1.00000000e-09, 1.77210102e-01, 6.16759879e-01, 1.14568304e+00, 1803 | 1.41893505e-01, 4.67621652e-01, 9.19436155e-01, 1.01205502e+00, 1804 | 1.09217049e+00, 1.22211208e+00, 1.34863925e+00, 1.47089480e+00, 1805 | 1.29588885e+00, 1.45213840e+00, 1.54153015e+00, 1.61852207e+00, 1806 | 1.30685607e+00, 1.45794103e+00, 1.53150642e+00, 1.58872360e+00, 1807 | 1.29006892e+00, 1.42310414e+00, 1.47713738e+00, 1.51869987e+00, 1808 | 1.26865214e+00, 1.37082563e+00, 1.41392846e+00, 1.44177077e+00, 1809 | 1.24907833e+00, 1.32546870e+00, 1.45563508e+00, 1.58649984e+00, 1810 | 1.70378807e+00, 1.53336475e+00, 1.69966754e+00, 1.79795421e+00, 1811 | 1.87362518e+00, 1.55728466e+00, 1.72177080e+00, 1.80624456e+00, 1812 | 1.87230210e+00, 1.55647078e+00, 1.70262794e+00, 1.77069326e+00, 1813 | 1.82885038e+00, 1.54733533e+00, 1.66035573e+00, 1.71411779e+00, 1814 | 1.75613996e+00, 1.00000000e-09, 1.19070227e-01, 5.93853115e-01, 1815 | 9.61506585e-01, 1.16451612e-01, 4.76599584e-01, 7.35670754e-01, 1816 | 7.99402145e-01, 8.28434742e-01, 8.86274968e-01, 9.59245398e-01, 1817 | 1.03640790e+00, 9.90457858e-01, 1.07613285e+00, 1.10641709e+00, 1818 | 1.12709832e+00, 1.00242792e+00, 1.06816731e+00, 1.08105868e+00, 1819 | 1.09318000e+00, 9.90869272e-01, 1.03941128e+00, 1.04598950e+00, 1820 | 1.05211029e+00, 9.67483332e-01, 1.00097688e+00, 1.00679966e+00, 1821 | 1.01222696e+00, 1.02475249e+00, 1.04372773e+00, 1.10235950e+00, 1822 | 1.17097429e+00, 1.25204050e+00, 1.20267931e+00, 1.30213758e+00, 1823 | 1.34428386e+00, 1.37536571e+00, 1.23544817e+00, 1.32515264e+00, 1824 | 1.35093169e+00, 1.36774448e+00, 1.24043670e+00, 1.31546474e+00, 1825 | 1.32734204e+00, 1.33299042e+00, 1.22733520e+00, 1.28411209e+00, 1826 | 1.29080733e+00, 1.29215459e+00]) 1827 | } 1828 | 1829 | SPEAKERS_CONFIG['ALL'] = { 1830 | 'median': np.ones(98) * 112, 1831 | 'scale_factor': 1, 1832 | 'mean': np.array([ 0. , -1.30300177, -1.86055032, -1.57118029, 1.3657266 , 1833 | 1.92831773, 1.27756316, 1.16861636, 1.07933715, 0.9506417 , 1834 | 0.82515075, 0.71723342, 0.98796002, 0.80038158, 0.67221937, 1835 | 0.56251367, 0.98125758, 0.75949434, 0.62040493, 0.51636528, 1836 | 0.96027632, 0.75239721, 0.62975113, 0.53927769, 0.937988 , 1837 | 0.76976597, 0.68029213, 0.60453242, -1.57581202, -1.53029104, 1838 | -1.44812959, -1.36786496, -1.30067461, -1.55515339, -1.43382027, 1839 | -1.32774391, -1.23772878, -1.5686388 , -1.40122445, -1.27958344, 1840 | -1.18189403, -1.54969714, -1.38632245, -1.27630342, -1.18691285, 1841 | -1.51919196, -1.38642254, -1.30373232, -1.23290295, 0. , 1842 | 0.71123098, 3.02674416, 2.91699844, 0.64559599, 2.97558319, 1843 | 3.0200536 , 2.93745739, 2.72236932, 2.56640152, 2.51889404, 1844 | 2.48098966, 2.71813759, 2.71314216, 2.69923703, 2.68668115, 1845 | 2.89014913, 2.88411348, 2.8491349 , 2.81780958, 3.02629419, 1846 | 3.01506254, 2.97198885, 2.9293096 , 3.13306825, 3.11997394, 1847 | 3.09019367, 3.05718596, 2.82000627, 2.59470968, 2.42605315, 1848 | 2.3668938 , 2.33373695, 2.51350406, 2.49060967, 2.48313634, 1849 | 2.47856824, 2.68452928, 2.66356618, 2.64253278, 2.61957967, 1850 | 2.82552995, 2.80440706, 2.7745475 , 2.74672361, 2.94719774, 1851 | 2.92540835, 2.89896933, 2.86841935]), 1852 | 'std': np.array([1.00000000e-09, 5.94853211e-01, 9.39004804e-01, 1.30696169e+00, 1853 | 5.13600409e-01, 8.33428091e-01, 1.24559872e+00, 1.39153990e+00, 1854 | 1.46482703e+00, 1.57215549e+00, 1.68515334e+00, 1.79094924e+00, 1855 | 1.74087731e+00, 1.87654111e+00, 1.92098409e+00, 1.95011993e+00, 1856 | 1.75183954e+00, 1.85908747e+00, 1.88118825e+00, 1.89038185e+00, 1857 | 1.72483854e+00, 1.80798182e+00, 1.81824030e+00, 1.82156299e+00, 1858 | 1.68453675e+00, 1.74706163e+00, 1.74940825e+00, 1.75118403e+00, 1859 | 1.39398302e+00, 1.47352232e+00, 1.60205166e+00, 1.74801788e+00, 1860 | 1.88070326e+00, 1.75880872e+00, 1.94173513e+00, 2.01138420e+00, 1861 | 2.05996973e+00, 1.78345552e+00, 1.94760222e+00, 1.99331582e+00, 1862 | 2.02361450e+00, 1.76915133e+00, 1.90813772e+00, 1.93698920e+00, 1863 | 1.95971143e+00, 1.73766796e+00, 1.84338938e+00, 1.86596427e+00, 1864 | 1.88428898e+00, 1.00000000e-09, 2.01288803e-01, 5.61500604e-01, 1865 | 9.87625296e-01, 1.79270570e-01, 5.14485413e-01, 8.81159823e-01, 1866 | 1.19507623e+00, 1.22634755e+00, 1.28659387e+00, 1.33841801e+00, 1867 | 1.40840380e+00, 1.36690551e+00, 1.44821245e+00, 1.48754427e+00, 1868 | 1.51335860e+00, 1.41121023e+00, 1.46198667e+00, 1.49705702e+00, 1869 | 1.50381832e+00, 1.42659163e+00, 1.47976093e+00, 1.50377357e+00, 1870 | 1.51654021e+00, 1.44594775e+00, 1.48942057e+00, 1.49463393e+00, 1871 | 1.50021580e+00, 1.33082047e+00, 1.36775159e+00, 1.42347223e+00, 1872 | 1.48050462e+00, 1.54522074e+00, 1.52570205e+00, 1.61165322e+00, 1873 | 1.63691128e+00, 1.65428311e+00, 1.56326930e+00, 1.63907141e+00, 1874 | 1.65163394e+00, 1.65592740e+00, 1.57865120e+00, 1.64335108e+00, 1875 | 1.64701618e+00, 1.63824454e+00, 1.57316675e+00, 1.63089944e+00, 1876 | 1.63366642e+00, 1.63141875e+00]) 1877 | 1878 | } 1879 | --------------------------------------------------------------------------------