Клієнти банків ненавидять 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% за квартал, що забезпечило клієнту значну економію.
Архітектура системи голосової біометрії
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%, що для великого банку означає значну економію.
Як ми забезпечуємо відповідність 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 успішних впроваджень.







