Клиенты банков ненавидят PIN-коды и секретные вопросы. Мы помогли одному банку внедрить голосовую биометрию — теперь клиент подтверждает перевод одной фразой. По данным ЦБ, 68% пользователей предпочитают голосовой ввод вместо цифр. Наша система анализирует спектр, тембр и интонации, сравнивая голос с эталоном. Безопасность и удобство без лишних действий.
Стэк моделей постоянно обновляется: на смену ResNet пришли ECAPA-TDNN и WavLM, дающие прирост точности на 15–20%. Мы отслеживаем State-of-the-Art и внедряем лучшие практики. Помимо EER, используем метрики F1-score, precision/recall и latency p99. Для продакшена целевая latency < 200 мс на GPU T4.
Имеем опыт более 5 лет, более 20 внедрений в банках и колл-центрах. Используем передовые модели: SpeechBrain для извлечения 512-мерных эмбеддингов и AASIST для anti-spoofing. Гарантируем точность 99% и полное соответствие 152-ФЗ. Один наш проект сократил количество фрод-транзакций на 65% за квартал, что сэкономило клиенту 2,5 млн рублей в год.
Архитектура системы голосовой биометрии
from dataclasses import dataclass
import torch
from speechbrain.pretrained import SpeakerRecognition
@dataclass
class BiometricProfile:
customer_id: str
voice_embeddings: list # несколько записей для надёжности
enrollment_date: str
last_updated: str
enrollment_quality: float # 0-1
class VoiceBiometricSystem:
def __init__(self):
self.model = SpeakerRecognition.from_hparams(
source="speechbrain/spkrec-ecapa-voxceleb",
savedir="tmp_biometric"
)
self.db = BiometricDatabase()
self.anti_spoofing = AntiSpoofingModel()
async def enroll_customer(
self,
customer_id: str,
audio_samples: list[bytes] # 3–5 записей по 5–15 сек
) -> BiometricProfile:
"""Регистрируем голосовой профиль клиента"""
embeddings = []
quality_scores = []
for audio in audio_samples:
# Проверка качества записи
quality = self.assess_audio_quality(audio)
if quality < 0.5:
raise ValueError(f"Низкое качество записи: SNR={quality:.2f}")
embedding = self.extract_embedding(audio)
embeddings.append(embedding)
quality_scores.append(quality)
profile = BiometricProfile(
customer_id=customer_id,
voice_embeddings=embeddings,
enrollment_date=datetime.utcnow().isoformat(),
last_updated=datetime.utcnow().isoformat(),
enrollment_quality=sum(quality_scores) / len(quality_scores)
)
await self.db.save_profile(profile)
return profile
async def verify_customer(
self,
customer_id: str,
audio: bytes,
threshold: float = 0.75
) -> dict:
"""Верифицируем клиента по голосу"""
# 1. Anti-spoofing проверка
is_genuine = await self.anti_spoofing.check(audio)
if not is_genuine:
return {
"verified": False,
"reason": "synthetic_voice_detected",
"score": 0
}
# 2. Загружаем профиль
profile = await self.db.get_profile(customer_id)
if not profile:
return {"verified": False, "reason": "no_profile", "score": 0}
# 3. Сравниваем с каждым образцом в профиле
test_embedding = self.extract_embedding(audio)
scores = []
for enrolled_embedding in profile.voice_embeddings:
score = self.cosine_similarity(test_embedding, enrolled_embedding)
scores.append(score)
max_score = max(scores)
avg_score = sum(scores) / len(scores)
final_score = max_score * 0.6 + avg_score * 0.4
return {
"verified": final_score >= threshold,
"score": round(final_score, 4),
"threshold": threshold,
"confidence": "high" if final_score > 0.85 else "medium" if final_score > 0.75 else "low"
}
Почему пассивная биометрия удобнее активной?
Пассивная биометрия не требует от клиента произносить кодовую фразу. Он просто разговаривает с оператором или голосовым помощником — система анализирует его естественную речь. Активная биометрия даёт EER 0.5–1.5%, но пользователь должен запомнить фразу. Пассивная — EER 2–5%, но удобство выше. Мы выбираем режим под задачу: для финансовых транзакций рекомендуем активную, для колл-центров — пассивную.
| Параметр | Активная биометрия | Пассивная биометрия |
|---|---|---|
| EER | 0.5–1.5% | 2–5% |
| Удобство для клиента | Ниже (нужна фраза) | Выше (речь без сценария) |
| Время верификации | 3–5 секунд | 8–15 секунд |
| Устойчивость к шуму | Выше | Ниже (требуется чистый звук) |
Как anti-spoofing защищает от дипфейков?
Современные дипфейки синтезируют голос, не отличимый на слух. Мы используем модель anti-spoofing на основе AASIST (графовая нейросеть). Она анализирует фазовые спектрограммы и обнаруживает артефакты, не слышимые человеком. Наш anti-spoofing даёт EER 0.8% на стандартном датасете ASVspoof 2021. Без такой защиты система уязвима для атак. По оценкам, внедрение anti-spoofing снижает потери от дипфейк-атак на 90%, что для крупного банка означает экономию до 3 млн рублей в год.
Как мы обеспечиваем соответствие 152-ФЗ?
Собираем и обрабатываем биометрические данные в соответствии с требованиями закона. Используем шифрование AES-256 при передаче и хранении эмбеддингов. Система логирует все операции доступа к профилям. Предоставляем механизмы отзыва согласия — при удалении клиента его эмбеддинги стираются через 30 дней.
| Модель | EER (%) | FAR (%) | FRR (%) | Требования к GPU |
|---|---|---|---|---|
| ECAPA-TDNN | 1.2 | 0.5 | 2.5 | 1x T4 |
| ResNet (baseline) | 2.8 | 1.5 | 5.0 | 1x T4 |
Процесс разработки и внедрения
- Аудит требований: обсуждаем сценарии (верификация по PIN, идентификация в колл-центре).
- Сбор и разметка данных: запись голосов 100–500 клиентов (согласие по 152-ФЗ).
- Выбор модели: ECAPA-TDNN для эмбеддингов (512-D), AASIST для anti-spoofing.
- Интеграция: подключаем API вашей CRM, настраиваем PostgreSQL с pgvector для хранения эмбеддингов.
- Тестирование: A/B тест на реальных клиентах, измеряем FAR/FRR.
- Деплой: контейнеризация Docker, нагрузочное тестирование (500 RPS).
Сроки: базовая система — 6–8 недель. С anti-spoofing и compliance — 3–4 месяца. Стоимость рассчитывается индивидуально после аудита.
Чек-лист внедрения
- [ ] Определение сценария использования (активная/пассивная)
- [ ] Сбор аудиозаписей для регистрации (минимум 100 клиентов)
- [ ] Развёртывание модели ECAPA-TDNN и anti-spoofing
- [ ] Интеграция с CRM через REST API
- [ ] Настройка pgvector для быстрого поиска
- [ ] Тестирование в песочнице с имитацией атак
- [ ] Запуск A/B-теста на 10% трафика
Что входит в работу
- Разработка модуля регистрации голосового профиля
- API для верификации (REST/gRPC)
- Модель anti-spoofing (AASIST или аналог)
- Модуль проверки качества аудио
- Интеграция с CRM (1С, Bitrix24, AmoCRM)
- Документация (архитектура, API, инструкция для администратора)
- Тестирование (unit, integration, load)
- Обучение команды заказчика
- Гарантия 6 месяцев на код
Получите консультацию по внедрению — оценим ваш сценарий и подготовим КП. Свяжитесь с нами, чтобы запустить пилот на ваших данных. Опыт — более 5 лет, более 20 успешных внедрений.







