天天看點

聲紋識别SDK-FreeSR1.實作算法:2.功能3.支援平台4.使用方法

FreeSR (A Free Library for Speaker Recognition),免費的聲紋識别/性别識别SDK,支援Android/Windows/Linux等平台。

https://github.com/NonDay/FreeSR

1.實作算法:

  gmm-ubm/i-vector/x-vector

2.功能

  說話人識别(驗證),包括注冊/識别兩個階段 (gmm-ubm/i-vector)

  性别識别,根據語音片段判斷性别(gmm-ubm/x-vector)

3.支援平台

  Windows/ Linux/ Android

4.使用方法

4.1Windows

4.2 Android

通過Android Studio 加載.so庫,在項目裡建立libs檔案夾,根據debug/release選擇對應的so庫,拷貝目錄 arm64-v8a、armeabi-v7a、x86、x86_64到libs檔案夾下

聲紋識别SDK-FreeSR1.實作算法:2.功能3.支援平台4.使用方法

在build.gradle檔案裡添加

android {

......

sourceSets{
        main{
            jniLibs.srcDirs = ['libs']
        }
    }
}
           

建立Package(com.freesr),将以下檔案拷貝到該package目錄

聲紋識别SDK-FreeSR1.實作算法:2.功能3.支援平台4.使用方法

可進行說話人性别識别以及說話人識别,支援gmm-ubm和ivector,更詳細的方法可參考java檔案:

import com.freesr.*;

static {
    System.loadLibrary("freesr");
}

//1. gener recognition
int sample_rate = 8000;
SpeakerRecognizerGMM SpkRec = new SpeakerRecognizerGMM(sample_rate);

ArrayListStr spk_models = new ArrayListStr();
ArrayListStr spk_names = new ArrayListStr();

spk_names.add("female");
spk_models.add("female.model");

spk_names.add("male");
spk_models.add("male.model");

boolean init = SpkRec.Init("freesr-gender-model.bin", spk_names, spk_models);
if(!init)
{
	// failed to init
	return ;
}
String rec_result = SpkRec.RecognizeSpeaker("english.wav");
double score = SpkRec.GetScore()

//2. speaker recognition
int sample_rate = 8000;
// SpeakerRecognizerIVector SpkRec = new SpeakerRecognizerIVector(sample_rate)
// boolean init =  SpkRec.Init("freesr-ivector-model.bin", spk_names, spk_models);
SpeakerRecognizerGMM SpkRec = new SpeakerRecognizerGMM(sample_rate);
boolean init =  SpkRec.Init("freesr-ubm-model.bin", spk_names, spk_models);
if(!init)
{
	// failed to init
	return ;
}
ArrayListStr fpaths = new ArrayListStr();
fpaths.add("english.wav");
fpaths.add("english.wav");
......
String reg_name = "spkA";
String reg_path = "spkA.model"
boolean ret = SpkRec.RegisterSpeaker(fpaths,reg_name,reg_path)
String rec_result = SpkRec.RecognizeSpeaker("english.wav");
double score = SpkRec.GetScore()
           

Android示例工程:https://download.csdn.net/download/u012594175/12296957

Android相關so檔案下載下傳位址:https://share.weiyun.com/5O9BdLP

位址:https://github.com/NonDay/FreeSR

繼續閱讀