200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 说话人识别和说话人性别识别SDK-通过语音判断说话人 及说话人的性别

说话人识别和说话人性别识别SDK-通过语音判断说话人 及说话人的性别

时间:2023-08-10 01:35:38

相关推荐

说话人识别和说话人性别识别SDK-通过语音判断说话人 及说话人的性别

根据语音片段进行性别判断,以及说话人识别的SDK,c/c++实现。

利用GMM-UBM算法,可以进行说话人识别,或者性别识别,可以参考<声纹识别之Alize入门教程(二):GMM-UBM>。

进行性别识别的时候,将不同的性别视为不同的说话人即可。

1.Windows

Win10 and VS。

新建空项目=>选择项目,右键属性=>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"); // s3std::cout << res << std::endl;return 0;}

2.Android

通过Android Studio 加载.so库,在项目里新建libs文件夹,拷贝目录arm64-v8a、armeabi-v7a、x86、x86_64到libs文件夹下

在build.gradle文件里添加

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

新建Package(com.spkrec),将以下文件拷贝到该package目录

SpeakerRecognizer.java

spkrec_module.java

spkrec_moduleJNI.java

SWIGTYPE_p_std__vectorT_std__string_t.java

vectors.java

2.1性别识别

整个流程以及API同windows c++版本,进行说话人识别可自行修改代码。

import com.spkrec.*;static {// 加载so文件System.loadLibrary("spkrec"); }String recordDir = String.format(Locale.getDefault(), "%s/Record/",Environment.getExternalStorageDirectory().getAbsolutePath());SpeakerRecognizer SpkRec = new SpeakerRecognizer();// 模型路径vectors reg_path = new vectors();reg_path.add(recordDir+"female.gmm");reg_path.add(recordDir+"male.gmm");// 模型对应的性别vectors reg_names=new vectors();reg_names.add("female");reg_names.add("male");boolean init_ret = SpkRec.Init(recordDir+"ubm.gmm",reg_path,reg_names);if(!init_ret) // fail{return ...}String recg_ret = SpkRec.RecognizeSpeaker(result.getAbsolutePath());// 传入wav文件路径

使用网友的demo简单调试了一下几个API,主要就是在MainActivity.java添加了以上部分代码,程序启动的时候将三个gmm文件拷贝到了recordDir目录,生成了识别性别的小例子,如果识别结果为空的话,退出重新再打开app应该就好了。录音时间长一点,声音大一点,应该效果好一点:(。

android代码实在不会写,感谢网友的demo:

/p/c0222de2faed

/zhaolewei/ZlwAudioRecorder

修改后的Android Studio工程,以及.so和apk文件下载地址:/download/u012594175/1103

/NonDay/FreeSR

Windows完整代码下载地址/download/u012594175/11088482

声纹识别交流QQ群:875705987

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。