babysor/MockingBird · critical · Exception
No speakers found. Make sure you are pointing to the directo
Error message
No speakers found. Make sure you are pointing to the directory containing all preprocessed speaker directories.
What it means
Raised when constructing SpeakerVerificationDataset with a datasets_root that contains no subdirectories: the training data root must hold one directory per (preprocessed) speaker. An empty or flat directory (e.g. pointing at files instead of speaker folders) triggers this exception at dataset construction.
Source
Thrown at models/encoder/data_objects/speaker_verification_dataset.py:15
from models.encoder.data_objects.random_cycler import RandomCycler
from models.encoder.data_objects.speaker_batch import SpeakerBatch
from models.encoder.data_objects.speaker import Speaker
from models.encoder.params_data import partials_n_frames
from torch.utils.data import Dataset, DataLoader
from pathlib import Path
# TODO: improve with a pool of speakers for data efficiency
class SpeakerVerificationDataset(Dataset):
def __init__(self, datasets_root: Path):
self.root = datasets_root
speaker_dirs = [f for f in self.root.glob("*") if f.is_dir()]
if len(speaker_dirs) == 0:
raise Exception("No speakers found. Make sure you are pointing to the directory "
"containing all preprocessed speaker directories.")
self.speakers = [Speaker(speaker_dir) for speaker_dir in speaker_dirs]
self.speaker_cycler = RandomCycler(self.speakers)
def __len__(self):
return int(1e10)
def __getitem__(self, index):
return next(self.speaker_cycler)
def get_logs(self):
log_string = ""
for log_fpath in self.root.glob("*.txt"):
with log_fpath.open("r") as log_file:
log_string += "".join(log_file.readlines())
return log_string
View on GitHub (pinned to 28dc5e14f1)
Solutions
- Run encoder preprocessing first so per-speaker folders exist under the datasets root
- Point datasets_root at the directory whose immediate children are speaker directories (e.g. .../SV2TTS/encoder, not a single speaker folder or the repo root)
- Verify with ls that the directory contains one folder per speaker before training
Example fix
# before python encoder_train.py -d datasets/SV2TTS # no speaker subdirs here # after (root containing preprocessed speaker folders) python encoder_train.py -d datasets/SV2TTS/encoder
Defensive patterns
Strategy: validation
Validate before calling
root = Path(datasets_root)
speaker_dirs = [f for f in root.glob('*') if f.is_dir()]
if not speaker_dirs:
raise SystemExit(f'{root} has no speaker subdirectories; run encoder_preprocess first')
dataset = SpeakerVerificationDataset(root) Type guard
def is_valid_datasets_root(root: Path) -> bool:
return root.is_dir() and any(f.is_dir() for f in root.glob('*')) Try / catch
try:
SpeakerVerificationDataset(root)
except Exception as e:
raise SystemExit(f'Bad datasets root {root}: {e}') from e Prevention
- Always run encoder_preprocess before encoder_train
- Point -d at the directory whose children are speaker folders
- Sanity-check with ls before long training runs
When it happens
Trigger: Instantiating SpeakerVerificationDataset(Path) where the path has no immediate subdirectories — e.g. passing the datasets root before encoder preprocessing created per-speaker folders, or passing a speaker's own folder instead of its parent.
Common situations: Skipping the encoder_preprocess step; wrong -d/--datasets_root argument (pointing at the wrong level of the tree); preprocessing wrote output elsewhere.
Related errors
- Model folder {SYN_MODELS_DIRT} doesn't exist.
- Model folder {ENC_MODELS_DIRT} doesn't exist.
- Model folder {EXT_MODELS_DIRT} doesn't exist.
- Model folder {CONV_MODELS_DIRT} doesn't exist.
- Model folder {ENC_MODELS_DIRT} doesn't exist.
AI-assisted analysis of babysor/MockingBird@28dc5e14f1 (2026-08-27).
Data as JSON: /api/errors/1d705762fbdf8712.
Report an issue: GitHub.