Клієнти банків ненавидять 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 успішних впроваджень.







