📋 Описание:
Нужно реализовать модуль, который определяет кто говорит в аудиозаписи на основе заранее обученных голосовых профилей (эталонов).
Цель — подставить реальные имена вместо "Спикер 1", "Спикер 2" в транскрибированных текстах.
⚙️ Что должно быть:
Загрузка голосовых профилей из папки:
WAV-файлы сотрудников
Пример структуры: rabbit/voice_profiles/Марина.wav, Иван.wav
Получение эмбеддингов для голосов:
С использованием resemblyzer или другой аналогичной модели
Все аудио должны быть нормализованы (16 kHz, моно, WAV)
Сравнение эмбеддинга неизвестного фрагмента с профилями
Косинусное сходство (или аналог)
Использовать threshold, чтобы определить “Неизвестный”, если нет хорошего совпадения
Функция:
python
Копировать
Редактировать
def identify_speaker(wav_path: str, profiles: dict) -> str
Принимает путь к тестовому фрагменту
Возвращает имя из профилей или "Неизвестный"
Функция для загрузки профилей:
python
Копировать
Редактировать
def load_voice_profiles(directory_path: str) -> dict
🧪 Будет плюсом:
Возможность обновления/дозаписи профилей
Логирование результатов и похожести
Кеширование эмбеддингов, чтобы не пересчитывать каждый раз
✅ Входные данные:
Пример аудио-фрагментов для сравнения (для тестов)
Примеры профилей
Текущий pipeline: мы вырезаем блоки по speakerTag после транскрибации (есть timestamps)
💾 Формат сдачи:
Python-модуль voice_identifier.py
Пример работы в test_voice_id.py
Инструкция по запуску и обновлению профилей
🔐 Безопасность:
Никакой необходимости в доступе к базе, очередям или другим микросервисам
Работа в отдельном модуле, передача данных через функцию или временные файлы