Main Content

speakerRecognition

Pretrained speaker recognition system

Description

example

sr = speakerRecognition returns a pretrained speaker recognition system, 'ivec-english-16kHz'. The 'ivec-english-16kHz' system is an instance of an object of type ivectorSystem trained on the LibriSpeech data set.

Examples

collapse all

This example uses a pretrained speaker recognition system, 'ivec-english-16kHz'. The 'ivec-english-16kHz' system is an instance of ivectorSystem trained on the LibriSpeech data set.

Download the pretrained speaker recognition system into your temporary directory, whose location is specified by the MATLAB® tempdir command. If you want to place the data files in a folder different from tempdir, change the directory name. Add the temporary directory to the search path. Create an i-vector system.

fname = 'ivec-english-16kHz.zip';
URL = ['https://ssd.mathworks.com/supportfiles/' ...
    'audio/speakerRecognition/' fname];
zipFile = fullfile(tempdir,fname);

websave(zipFile,URL);
unzip(zipFile,tempdir);

addpath(tempdir)

sr = speakerRecognition;

Read two speech signals, each of which contains the phrase "volume up" spoken out loud several times with different intonations. In one of the signals, the speaker is male. In the other signal, the speaker is female.

Read each signal and split it into two parts. One of the parts is used to enroll the speaker. The other part is used for speaker verification and identification.

[bf,fs] = audioread('MaleVolumeUp-16-mono-6secs.ogg');
enrollBF = bf(1:3*fs);
testBF = bf(3*fs+1:end);
bfLabel = "BF";

[rd,fs] = audioread('FemaleVolumeUp-16-mono-11secs.ogg');
enrollRD = rd(1:5*fs);
testRD = rd(5*fs+1:end);
rdLabel = "RD";

Enroll the speakers into the speaker recognition system. This creates a template of the speaker that can be used for verification or identification.

 enroll(sr,{enrollBF,enrollRD},[bfLabel,rdLabel])
Extracting i-vectors ...done.
Enrolling i-vectors .....done.
Enrollment complete.

Call the identify function on the test data.

candidates = identify(sr,testBF)
candidates=2×2 table
    Label     Score 
    _____    _______

     BF      -1.0315
     RD      -178.77

candidates = identify(sr,testRD)
candidates=2×2 table
    Label     Score 
    _____    _______

     RD      -99.188
     BF      -240.22

Call the verify function with the test data to confirm that the system correctly accepts or rejects speakers.

isVerified = verify(sr,testBF,bfLabel)
isVerified = logical
   1

isVerified = verify(sr,testBF,rdLabel)
isVerified = logical
   0

isVerified = verify(sr,testRD,rdLabel)
isVerified = logical
   1

isVerified = verify(sr,testRD,bfLabel)
isVerified = logical
   0

Call the info function to get information about how the model was trained.

info(sr)
Header
  - This system was trained using the LibriSpeech train and development sets.
  LibriSpeech is an approximately 1000-hour corpus of read English speech sampled at 16 kHz.
  - The detection error tradeoff was determined by enrolling one file from each speaker in the 
  LibriSpeech test set, and then evaluating exhaustive pairs of the enrolled and remaining data.

i-vector system input
  Input feature vector length: 60
  Input data type: double

trainExtractor
  Train signals: 286808
  UBMNumComponents: 2048
  UBMNumIterations: 10
  TVSRank: 512
  TVSNumIterations: 5

trainClassifier
  Train signals: 286807
  Train labels: 1 (91), 100043 (31) ... and 5652 more
  NumEigenvectors: 200
  PLDANumDimensions: 200
  PLDANumIterations: 5

detectionErrorTradeoff
  Evaluation signals: 5382
  Evaluation labels: 102255 (46), 1066 (24) ... and 175 more

Remove the temporary directory from the search path.

rmpath(tempdir)

Output Arguments

collapse all

Pretrained speaker recognition system, returned as an object of type ivectorSystem.

References

[1] Panayotov, Vassil, Guoguo Chen, Daniel Povey, and Sanjeev Khudanpur. “Librispeech: An ASR Corpus Based on Public Domain Audio Books.” In 2015 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 5206–10. South Brisbane, Queensland, Australia: IEEE, 2015. https://doi.org/10.1109/ICASSP.2015.7178964.

Introduced in R2021b