在执行 alizeSystem.createSpeakerModel(userName); 时崩溃并显示“UBM not found”

我在开发一个使用android-alize的说话人识别应用。根据文档的说明,我尝试按以下方式训练模型,

// 将音频发送到系统alizeSystem.addAudio(audio);

// 使用音频训练模型alizeSystem.createSpeakerModel(“Somebody”);

但我的应用在以下堆栈跟踪中崩溃,

04-17 14:29:31.216 5546-5546/com.example.channa.poc_alize W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection04-17 14:29:31.253 5546-5546/com.example.channa.poc_alize W/IInputConnectionWrapper: reportFullscreenMode on inexistent InputConnection04-17 14:29:31.253 5546-5546/com.example.channa.poc_alize W/IInputConnectionWrapper: finishComposingText on inactive InputConnection04-17 14:29:33.184 5546-5546/com.example.channa.poc_alize I/System.out: content://com.android.externalstorage.documents/document/primary%3AAudioClipsForSpeakerRecognition%2F1%2Fspeaker_1.wav04-17 14:29:34.155 5546-5546/com.example.channa.poc_alize W/System.err: AlizeSpkRec.AlizeException: [ Exception 0x7c4ca25480 ]      message   = "UBM not found"      source file = /Users/channa/Documents/Projects/Work/Sample Projects/android-alize/alize/src/main/cpp/LIA_RAL/LIA_SpkDet/SimpleSpkDetSystem/src/SimpleSpkDetSystem.cpp      line number = 869        at AlizeSpkRec.SimpleSpkDetSystem.createSpeakerModel(Native Method)        at com.example.channa.poc_alize.SpeakerRecognition.trainSpeakerModel(SpeakerRecognition.java:40)        at com.example.channa.poc_alize.MainActivity.onActivityResult(MainActivity.java:97)        at android.app.Activity.dispatchActivityResult(Activity.java:7226)        at android.app.ActivityThread.deliverResults(ActivityThread.java:4477)        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4524)        at android.app.ActivityThread.-wrap22(ActivityThread.java)        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1691)        at android.os.Handler.dispatchMessage(Handler.java:102)        at android.os.Looper.loop(Looper.java:154)        at android.app.ActivityThread.main(ActivityThread.java:6692)        at java.lang.reflect.Method.invoke(Native Method)        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)04-17 14:29:34.182 5546-5586/com.example.channa.poc_alize D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000,  [1440x2560]-format:104-17 14:29:34.183 5546-5546/com.example.channa.poc_alize D/ViewRootImpl@52672bd[MainActivity]: MSG_RESIZED_REPORT: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1    MSG_WINDOW_FOCUS_CHANGED 1

感谢您的输入


回答:

进一步调试了Alize-LIA_RAL,我发现安卓项目会在assets/gmm/world.gmm中寻找world.gmm(UBM)。看起来我们需要使用LIA_RAL库生成这个world.gmm,然后将其添加到安卓代码中。

然而,我们需要在alize初始化时使用以下代码片段指定UBM的位置。

    InputStream backgroundModelAsset = null;    try {        backgroundModelAsset = context.getAssets().open("gmm/world.gmm");        alizeSystem.loadBackgroundModel(backgroundModelAsset);        backgroundModelAsset.close();    } catch (IOException e) {        e.printStackTrace();    } catch (AlizeException e) {        e.printStackTrace();    }

我在谷歌搜索中找到了一个world.gmm,并将其添加到我的安卓项目中后,错误消失了。然而,预测结果并不准确。

因此,我正在进一步研究LIA_RAL源代码,以通过提供满足我需求的训练数据(音频样本)来生成这个world.gmm(UBM)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注