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

How to design an artificial neural network for speaker recognition application?

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

id first_name last_name

网络是这样设计的: - 输入是音频特性(频率、音调等...) - 隐藏层 - 单个输出:演讲者的数据库ID

我的问题是网络架构背后的逻辑是否有效。让网络输出一个数据库 ID 是否正确(我在其中规范化了找到的最大 ID?

我想过拥有多个输出,每个输出对应于某个扬声器。但是随着扬声器数量的增加,输出的数量也会随之增加,所以如果我有 10,000 个扬声器,我将不得不有 10,000 个输出,我认为这是不合理的。

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

My question is whether the logic behind the network architecture is valid or not. Is it correct to have the output of the network a database ID (where I normalize over the maximum ID found?

这是错误的方式。如果您将输出视为数字,您将对一个人施加某种亲近感,有些人(ids 更近的人)比 ids 更远的人有更多相似的语音,所以有些人错误比其他人受到的惩罚更多。

I thought about having multiple outputs where each output corresponds to a certain speaker. But as the number of speakers increase, the number of outputs will increase with them , so if I have 10 000 speakers, I will have to have 10,000 outputs which I deemed unreasonable.

不幸的是,这是正确的方法。通常,使用 softmax 输出单元然后执行多类分类。这样您就不会强加任何偏好,并且无论标识符的接近程度如何,所有错误都会受到惩罚。

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