根据语音片段进行性别判断,以及说话人识别的SDK,c/c++实现,依赖Eigen矩阵运算库。
利用GMM-UBM算法,可以进行说话人识别,或者性别识别,可以参考<声纹识别之Alize入门教程(二):GMM-UBM>。
进行性别识别的时候,将不同的性别视为不同的说话人即可。
1.Windows
Win10 and VS2013。
新建空项目=>选择项目,右键属性=>c/c++=>常规=>附加包含目录添加
属性=>链接器=>输入=>附加依赖项
属性=>链接器=>常规=>附加库目录:..\..\lib\Debug or ..\..\lib\Release 根据当前新建项目类型进行选择
属性=>c/c++=>代码生成=>运行库:根据当前新建项目类型进行选择,如果是Debug选择/MTd;Release选择/MT
1.1性别识别
#include <iostream>
#include "speaker_recognizer.h"
using namespace std;
int main(int argc, char *argv[])
{
SpeakerRecognizer spk;
bool ret = spk.Init("ubm.gmm", { "female.gmm", "male.gmm" }, { "female", "male" });
if (!ret)
return -1;
std::string gender = spk.RecognizeSpeaker("BAC009S0002W0123.wav");
std::cout << gender << std::endl;
return 0;
}
1.2说话人识别
#include <iostream>
#include "speaker_recognizer.h"
using namespace std;
int main(int argc, char *argv[])
{
SpeakerRecognizer spk;
bool ret = spk.Init("ubm.gmm");
if (!ret)
return -1;
ret = spk.RegisterSpeaker("BAC009S0002W0123.wav", "s2");
ret = spk.RegisterSpeaker("BAC009S0003W0121.wav", "s3");
std::string res = spk.RecognizeSpeaker("BAC009S0003W0122.wav"); // s3
std::cout << res << std::endl;
return 0;
}
2.Android
完整代码下载地址 https://download.csdn.net/download/u012594175/11088482
声纹识别交流QQ群:875705987