Voice Biometrics AI System for Client Verification

Bank clients hate PINs and secret questions. We helped one bank implement voice biometrics — now the client confirms a transfer with a single phrase. According to the Central Bank, 68% of users prefer voice input over digits. Our system analyzes spectrum, timbre, and intonation, comparing the voice

AI Development Areas

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1441
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    998
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1267
  • image_logo-advance_0.webp
    B2B Advance company logo design
    714
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    1006

Bank clients hate PINs and secret questions. We helped one bank implement voice biometrics — now the client confirms a transfer with a single phrase. According to the Central Bank, 68% of users prefer voice input over digits. Our system analyzes spectrum, timbre, and intonation, comparing the voice to a reference. Security and convenience without extra steps.

The model stack is constantly updated: ResNet has been replaced by ECAPA-TDNN and WavLM, boosting accuracy by 15–20%. We track state-of-the-art and adopt best practices. Beyond EER, we use F1-score, precision/recall, and latency p99. For production, target latency < 200 ms on GPU T4.

We have over 5 years of experience and more than 20 implementations in banks and call centers. We use advanced models: SpeechBrain for extracting 512-dimensional embeddings and AASIST for anti-spoofing. We guarantee 99% accuracy and full compliance with 152-FZ. One project reduced fraud transactions by 65% in a quarter, saving the client $22k–32k annually.

Voice Biometrics System Architecture

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" } 

Why Passive Biometrics is More Convenient than Active?

Passive biometrics does not require the client to utter a code phrase. They simply talk to an operator or voice assistant — the system analyzes their natural speech. Active biometrics achieves EER 0.5–1.5%, but the user must remember a phrase. Passive gives EER 2–5%, but offers higher convenience. We choose the mode based on the task: for financial transactions we recommend active; for call centers, passive.

Parameter Active Biometrics Passive Biometrics
EER 0.5–1.5% 2–5%
Customer convenience Lower (needs phrase) Higher (free speech)
Verification time 3–5 seconds 8–15 seconds
Noise robustness Higher Lower (needs clean audio)

How Anti-Spoofing Protects Against Deepfakes?

Modern deepfakes synthesize voice indistinguishable to the human ear. We use an anti-spoofing model based on AASIST (graph neural network). It analyzes phase spectrograms and detects artifacts not audible to humans. Our anti-spoofing achieves EER 0.8% on the standard ASVspoof 2021 dataset. Without such protection, the system is vulnerable to attacks. We estimate that deploying anti-spoofing reduces losses from deepfake attacks by 90%, saving a large bank up to $27k–39k annually.

How We Ensure 152-FZ Compliance?

We collect and process biometric data in accordance with legal requirements. We use AES-256 encryption for embedding transmission and storage. The system logs all access operations to profiles. We provide consent revocation mechanisms — when a client is deleted, their embeddings are erased within 30 days.

Model EER (%) FAR (%) FRR (%) GPU Requirements
ECAPA-TDNN 1.2 0.5 2.5 1x T4
ResNet (baseline) 2.8 1.5 5.0 1x T4

Development and Deployment Process

  1. Requirements audit: discuss scenarios (verification by PIN, identification in call center).
  2. Data collection and labeling: record voices of 100–500 clients (consent per 152-FZ).
  3. Model selection: ECAPA-TDNN for embeddings (512-D), AASIST for anti-spoofing.
  4. Integration: connect your CRM API, set up PostgreSQL with pgvector for embedding storage.
  5. Testing: A/B test on real clients, measure FAR/FRR.
  6. Deployment: Docker containerization, load testing (500 RPS).

Timeline: basic system — 6–8 weeks. With anti-spoofing and compliance — 3–4 months. Cost is calculated individually after audit.

Deployment Checklist
  • [ ] Define use case (active/passive)
  • [ ] Collect audio recordings for enrollment (minimum 100 clients)
  • [ ] Deploy ECAPA-TDNN and anti-spoofing models
  • [ ] Integrate with CRM via REST API
  • [ ] Configure pgvector for fast search
  • [ ] Test in sandbox with simulated attacks
  • [ ] Launch A/B test on 10% of traffic

What's Included in the Work

  • Development of a voice profile enrollment module
  • Verification API (REST/gRPC)
  • Anti-spoofing model (AASIST or equivalent)
  • Audio quality assessment module
  • Integration with CRM (1C, Bitrix24, AmoCRM)
  • Documentation (architecture, API, admin guide)
  • Testing (unit, integration, load)
  • Training of the client's team
  • 6-month code warranty

Get a consultation on implementation — we'll assess your scenario and prepare a proposal. Contact us to launch a pilot with your data. Experience: over 5 years, more than 20 successful implementations.