Реалізація верифікації того, хто говорить (Speaker Verification) Speaker Verification відповідає на запитання «чи цей голос є голосом конкретної людини» — бінарне завдання з порогом впевненості. Застосовується для біометричної автентифікації, захисту голосових роботів від шахрайства, двофакторної авторизації через голос. ### Типи верифікації - Text-Dependent - фраза зафіксована («моя фраза-пароль»). EER 0.5-1.5%, але вразлива до replay-атак - Text-Independent - будь-яка фраза. EER 1–3%, практичніше - Anti-Spoofing — додатковий захист від синтезованого/записаного голосу ### Реалізація на ECAPA-TDNN```python
from speechbrain.pretrained import SpeakerRecognition import torchaudio
verifier = SpeakerRecognition.from_hparams( source="speechbrain/spkrec-ecapa-voxceleb", savedir="tmp_verification" )
def verify_speaker(
enrollment_audio: str,
test_audio: str,
threshold: float = 0.25
) -> tuple[bool, float]:
"""
enrollment_audio: эталонная запись зарегистрированного пользователя
threshold: порог для Accept/Reject (подбирается под нужный FAR/FRR)
"""
score, prediction = verifier.verify_files(enrollment_audio, test_audio)
is_same = float(score) >= threshold
return is_same, float(score)
### Налаштування порога під вимоги безпеки | Поріг | FAR | FRR | Застосування | |-------|-----|-----|-----------| | 0.1 | 5% | 1% | Низький ризик | 0.25 | 1% | 5% | Балансований | | 0,4 | 0,1% | 15% | Висока безпека FAR = False Accept Rate (чужий як свій), FRR = False Reject Rate (свій як чужий). ### Anti-Spoofingpython
Проверка на синтетический голос
from speechbrain.pretrained import EncoderClassifier
antispoofing = EncoderClassifier.from_hparams( source="speechbrain/asvspoof-cqcc-lcnn", savedir="tmp_antispoofing" )
def is_genuine(audio_path: str) -> bool: signal, _ = torchaudio.load(audio_path) prediction = antispoofing.classify_batch(signal) return prediction[3][0] == "genuine"







