2021-08-07 11:56:00 +08:00
|
|
|
import numpy as np
|
|
|
|
from typing import List
|
2022-12-03 16:54:06 +08:00
|
|
|
from models.encoder.data_objects.speaker import Speaker
|
2021-08-07 11:56:00 +08:00
|
|
|
|
|
|
|
class SpeakerBatch:
|
|
|
|
def __init__(self, speakers: List[Speaker], utterances_per_speaker: int, n_frames: int):
|
|
|
|
self.speakers = speakers
|
|
|
|
self.partials = {s: s.random_partial(utterances_per_speaker, n_frames) for s in speakers}
|
|
|
|
|
|
|
|
# Array of shape (n_speakers * n_utterances, n_frames, mel_n), e.g. for 3 speakers with
|
|
|
|
# 4 utterances each of 160 frames of 40 mel coefficients: (12, 160, 40)
|
|
|
|
self.data = np.array([frames for s in speakers for _, frames, _ in self.partials[s]])
|