如何为说话人识别应用设计人工神经网络?

我想设计一个使用人工神经网络的说话人识别软件(给定一段音频,我希望能够识别出说话人是谁)。我考虑将说话人的名字存储在一个数据库中,每个说话人都有一个唯一的id:

id first_name last_name

网络设计如下:- 输入是音频特征(频率、音高等) – 隐藏层 – 单一输出:说话人在数据库中的ID

我的问题是网络架构背后的逻辑是否有效。将网络的输出设置为数据库ID(我将对找到的最大ID进行归一化处理)是否正确?

我考虑过使用多个输出,每个输出对应一个特定的说话人。但随着说话人数量的增加,输出的数量也会随之增加,所以如果我有10,000个说话人,我将不得不有10,000个输出,我认为这是不合理的。

这是使用ANN解决此类问题的方法吗?


回答:

我的问题是网络架构背后的逻辑是否有效。将网络的输出设置为数据库ID(我将对找到的最大ID进行归一化处理)是否正确?

这是错误的方法。如果你将输出视为数字,你会对人施加某种接近性,使得那些ID更接近的人比那些ID更远的人拥有更相似的语音,因此某些错误的惩罚会比其他错误更重。

我考虑过使用多个输出,每个输出对应一个特定的说话人。但随着说话人数量的增加,输出的数量也会随之增加,所以如果我有10,000个说话人,我将不得不有10,000个输出,我认为这是不合理的。

不幸的是,这是正确的方法。通常,在进行多类别分类时,会使用softmax输出单元。这样你就不会施加任何偏好,所有错误的惩罚都与标识符的接近性无关。

实际上,你试图解决的问题非常困难(从我的角度来看)。我怀疑即使是人类也无法区分10,000个说话人!你将需要每个说话人的大量语音数据、一些智能的预处理,以及更智能的(很可能是深度)机器学习算法来使其工作。不要认为你只需使用一个人工神经网络,它就会“自动工作”。有许多类型的人工神经网络,我们仍然不知道如何在一般情况下可靠地训练它们。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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