SpeakerRecognizer/VoicePersonification

18

stars

98

commits

Python

primary language

Dec 8, 2025

updated

README

Логотип проекта

Typing SVG


🚀 Описание проекта

Voice Personification — это отдельный модуль для распознавания пользователя по голосу, ориентированный на интеграцию в LLM, чат-боты, образовательные платформы и другие ИИ-сервисы.
Наша система поддерживает короткие аудио (от 2 секунд), сложные акустические условия и многопользовательские сценарии.


🔧 Основные возможности

  • 🔒 Биометрическая верификация личности по голосу
  • ⚡ Работа с короткими фрагментами речи (2–5 секунд)
  • 🌍 Устойчивость к шуму, реверберации и разным языкам
  • 🧠 Предобученные модели на основе совремемнных архитектур: wav2vec-BERT, Whisper, Next-TDNN
  • 🎙️ Поддержка сегментации речи
  • 🧩 Готова к интеграции с LLM, чат-ботами, образовательными системами

⚙️ Установка

1. Клонируйте репозиторий

git clone git@github.com:SpeakerRecognizer/VoicePersonification.git
cd VoicePersonification

⚠️ Если у вас не установлен git, установите его с официального сайта
⚠️ Если вы не настроили SSH-ключ для GitHub, вот инструкция

2. Создайте окружение

conda create --prefix ./envs/python3.8 python=3.8 pip

⚠️ Если у вас не установлена conda, установите ее с официального сайта Miniconda
⚡ Альтернатива: Mamba

Затем активируйте окружение:

conda activate ./envs/python3.8

3. Установите PyTorch

conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia

4. Установите остальные зависимости

python3 -m pip install -r requirements/requirements.dev.txt

✅ Готово!

Теперь проект готов к использованию 🚀


🏃 Быстрый старт

📥 Загрузка и подготовка данных

Скачайте и подготовьте датасет VoxCeleb1:

bash scripts/download_and_preprocess_data.sh data/download_data data/raw_data data/scp data/protocols

После выполнения скрипта вы получите:

  • data/download_data/ — архивы и протоколы
  • data/raw_data/ — распакованные аудио
  • data/scp/ — файлы wav.scp и utt2spk
  • data/protocols/ — протоколы для тестов

🧪 Тестирование моделей

Запустите тест на подготовленных данных:

# Подготовка разметки детектором речи

export CUDA_VISIBLE_DEVICES=0; 
export HF_TOKEN_BROUHAHA="YOUR HUGGINGFACE_TOKEN"; # Токен доступа для модели brouhaha, ниже описано как его получить
python -m VoicePersonification.main \
    -cp=../experiments/brouhaha_vad \
    -cn=predict

# Верификация диктора по протоколу

python -m VoicePersonification.main \
  -cp=../experiments/ecapa-tdnn \
  -cn=test

Для получения доступа к модели brouhaha (HF_TOKEN_BROUHAHA), необходимо авторизироваться на HuggingFace и перейти на страницу. Заполнить поля ("Company/university", "Website", "I plan to use this model for (task, type of audio data, etc)"), после чего в личном кабинете появится access token.

Вместо ecapa-tdnn укажите нужную модель:
experiments/itmo_personification_model_large, experiments/itmo_personification_model_fast, experiments/itmo_personification_model_segmentation, и т.д.


В результаты работы скрипта будет выведено качество работы алгоритма на выбранном датасете (EER, порог EER):

────────────────────────────────────────────────
       Test metric             DataLoader 0
────────────────────────────────────────────────
           EER                    1.27
           Thr                    0.31
────────────────────────────────────────────────

🧠 Наши модели

Название моделиОсобенностиАрхитектураРазмер
itmo_personification_model_largeОсновная модель с высокой точностью и устойчивостью; использует SSL-предобучениеwav2vec-BERT203
itmo_personification_model_fastЛёгкая и быстрая модель для верификацииNext-TDNN17.1
itmo_personification_model_segmentationПозволяет точно выделять участки речи отдельных говорящих для улучшения верификацииWhisper24.9
ecapa-tdnn baselineБейзлайн-модель для сравненияECAPA-TDNN22.2

📊 Сравнение

Сравнение проводилось по метрике EER (Equal Error Rate, %)

МодельVoxCeleb1VoicesNIST SRE 2016NIST SRE 2019
itmo personification model large0.714.3610.239.35
itmo personification model fast5.429.751.725.86
itmo personification model segmentation3.566.0919.0716.33
ecapa-tdnn baseline1.276.7418.7716.12

📒 Туториалы и примеры


🎓 Курс по распознаванию диктора

Если вам интересно, как работает голосовая биометрия изнутри — загляните в репозиторий нашего курса!
Там мы рассказываем, как строятся системы распознавания дикторов, как оценивается их качество, и как они применяются в реальных сценариях.
Все задания, материалы и код доступны в репозитории по ссылке выше.

💡 Курс читается в рамках магистерской программы «Речевые технологии и машинное обучение» в Университете ИТМО, но мы будем рады, если он окажется полезен и за ее пределами.


📚 Публикации

Ниже — некоторые статьи, опубликованные в рамках этого проекта и нашей работы в целом


📄 Лицензия

Этот проект распространяется под лицензией
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0).

Вы можете:

  • 📤 Распространять — копировать и публиковать проект
  • 🎛️ Модифицировать — изменять, адаптировать и использовать в некоммерческих целях

При соблюдении условий:

  • Указание авторства — необходимо указать авторов проекта
  • Только некоммерческое использование — использование в коммерческих целях запрещено без отдельного разрешения

☑️ Исключение: коммерческое использование разрешено только Университету ИТМО и группе компаний «Центр Речевых Технологий».
Все остальные должны получить отдельное согласие от авторов.

📄 Полный текст лицензии
📬 По вопросам коммерческого использования: VoicePersonificationITMO@gmail.com

📝 Цитирование

Если вы используете этот проект в научной публикации, пожалуйста, цитируйте нас следующим образом:

@misc{itmo_voice_personification_2025,
  title     = {Voice Personification for Artificial Intelligence Systems},
  author    = {Khmelev, N. and Novoselov, S. and Zorkina, A. and et.al},
  year      = {2025},
  note      = {ITMO University, open-source implementation},
  howpublished = {\url{https://github.com/SpeakerRecognizer/VoicePersonification}}
}

🙏 Благодарности

Проект был выполнен при поддержке Университета ИТМО (Россия) в рамках гранта «Научно-исследовательская работа в сфере искусственного интеллекта», проект № 640110 — «Персонификация по голосу для систем искусственного интеллекта».

Contributors

ZorkinaAn

31 commits

Nika-Keks

12 commits

comratvlad

10 commits

SpeakerRecognizer/VoicePersonification

18

stars

98

commits

Python

primary language

Dec 8, 2025

updated

README

Логотип проекта

Typing SVG


🚀 Описание проекта

Voice Personification — это отдельный модуль для распознавания пользователя по голосу, ориентированный на интеграцию в LLM, чат-боты, образовательные платформы и другие ИИ-сервисы.
Наша система поддерживает короткие аудио (от 2 секунд), сложные акустические условия и многопользовательские сценарии.


🔧 Основные возможности

  • 🔒 Биометрическая верификация личности по голосу
  • ⚡ Работа с короткими фрагментами речи (2–5 секунд)
  • 🌍 Устойчивость к шуму, реверберации и разным языкам
  • 🧠 Предобученные модели на основе совремемнных архитектур: wav2vec-BERT, Whisper, Next-TDNN
  • 🎙️ Поддержка сегментации речи
  • 🧩 Готова к интеграции с LLM, чат-ботами, образовательными системами

⚙️ Установка

1. Клонируйте репозиторий

git clone git@github.com:SpeakerRecognizer/VoicePersonification.git
cd VoicePersonification

⚠️ Если у вас не установлен git, установите его с официального сайта
⚠️ Если вы не настроили SSH-ключ для GitHub, вот инструкция

2. Создайте окружение

conda create --prefix ./envs/python3.8 python=3.8 pip

⚠️ Если у вас не установлена conda, установите ее с официального сайта Miniconda
⚡ Альтернатива: Mamba

Затем активируйте окружение:

conda activate ./envs/python3.8

3. Установите PyTorch

conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia

4. Установите остальные зависимости

python3 -m pip install -r requirements/requirements.dev.txt

✅ Готово!

Теперь проект готов к использованию 🚀


🏃 Быстрый старт

📥 Загрузка и подготовка данных

Скачайте и подготовьте датасет VoxCeleb1:

bash scripts/download_and_preprocess_data.sh data/download_data data/raw_data data/scp data/protocols

После выполнения скрипта вы получите:

  • data/download_data/ — архивы и протоколы
  • data/raw_data/ — распакованные аудио
  • data/scp/ — файлы wav.scp и utt2spk
  • data/protocols/ — протоколы для тестов

🧪 Тестирование моделей

Запустите тест на подготовленных данных:

# Подготовка разметки детектором речи

export CUDA_VISIBLE_DEVICES=0; 
export HF_TOKEN_BROUHAHA="YOUR HUGGINGFACE_TOKEN"; # Токен доступа для модели brouhaha, ниже описано как его получить
python -m VoicePersonification.main \
    -cp=../experiments/brouhaha_vad \
    -cn=predict

# Верификация диктора по протоколу

python -m VoicePersonification.main \
  -cp=../experiments/ecapa-tdnn \
  -cn=test

Для получения доступа к модели brouhaha (HF_TOKEN_BROUHAHA), необходимо авторизироваться на HuggingFace и перейти на страницу. Заполнить поля ("Company/university", "Website", "I plan to use this model for (task, type of audio data, etc)"), после чего в личном кабинете появится access token.

Вместо ecapa-tdnn укажите нужную модель:
experiments/itmo_personification_model_large, experiments/itmo_personification_model_fast, experiments/itmo_personification_model_segmentation, и т.д.


В результаты работы скрипта будет выведено качество работы алгоритма на выбранном датасете (EER, порог EER):

────────────────────────────────────────────────
       Test metric             DataLoader 0
────────────────────────────────────────────────
           EER                    1.27
           Thr                    0.31
────────────────────────────────────────────────

🧠 Наши модели

Название моделиОсобенностиАрхитектураРазмер
itmo_personification_model_largeОсновная модель с высокой точностью и устойчивостью; использует SSL-предобучениеwav2vec-BERT203
itmo_personification_model_fastЛёгкая и быстрая модель для верификацииNext-TDNN17.1
itmo_personification_model_segmentationПозволяет точно выделять участки речи отдельных говорящих для улучшения верификацииWhisper24.9
ecapa-tdnn baselineБейзлайн-модель для сравненияECAPA-TDNN22.2

📊 Сравнение

Сравнение проводилось по метрике EER (Equal Error Rate, %)

МодельVoxCeleb1VoicesNIST SRE 2016NIST SRE 2019
itmo personification model large0.714.3610.239.35
itmo personification model fast5.429.751.725.86
itmo personification model segmentation3.566.0919.0716.33
ecapa-tdnn baseline1.276.7418.7716.12

📒 Туториалы и примеры


🎓 Курс по распознаванию диктора

Если вам интересно, как работает голосовая биометрия изнутри — загляните в репозиторий нашего курса!
Там мы рассказываем, как строятся системы распознавания дикторов, как оценивается их качество, и как они применяются в реальных сценариях.
Все задания, материалы и код доступны в репозитории по ссылке выше.

💡 Курс читается в рамках магистерской программы «Речевые технологии и машинное обучение» в Университете ИТМО, но мы будем рады, если он окажется полезен и за ее пределами.


📚 Публикации

Ниже — некоторые статьи, опубликованные в рамках этого проекта и нашей работы в целом


📄 Лицензия

Этот проект распространяется под лицензией
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0).

Вы можете:

  • 📤 Распространять — копировать и публиковать проект
  • 🎛️ Модифицировать — изменять, адаптировать и использовать в некоммерческих целях

При соблюдении условий:

  • Указание авторства — необходимо указать авторов проекта
  • Только некоммерческое использование — использование в коммерческих целях запрещено без отдельного разрешения

☑️ Исключение: коммерческое использование разрешено только Университету ИТМО и группе компаний «Центр Речевых Технологий».
Все остальные должны получить отдельное согласие от авторов.

📄 Полный текст лицензии
📬 По вопросам коммерческого использования: VoicePersonificationITMO@gmail.com

📝 Цитирование

Если вы используете этот проект в научной публикации, пожалуйста, цитируйте нас следующим образом:

@misc{itmo_voice_personification_2025,
  title     = {Voice Personification for Artificial Intelligence Systems},
  author    = {Khmelev, N. and Novoselov, S. and Zorkina, A. and et.al},
  year      = {2025},
  note      = {ITMO University, open-source implementation},
  howpublished = {\url{https://github.com/SpeakerRecognizer/VoicePersonification}}
}

🙏 Благодарности

Проект был выполнен при поддержке Университета ИТМО (Россия) в рамках гранта «Научно-исследовательская работа в сфере искусственного интеллекта», проект № 640110 — «Персонификация по голосу для систем искусственного интеллекта».

Contributors

ZorkinaAn

31 commits

Nika-Keks

12 commits

comratvlad

10 commits

Languages

Python

85.6%

Shell

9.6%

Jupyter Notebook

4.7%