Closed Jesse-Ccc closed 3 years ago
你好,models.py
里面的convolutional_model_simple
是比较小的模型,参数是7M(70万)。 如果你们想用更小参数的模型,可以考虑进一步减少该模型的参数(比如减少层数减少weight的维度等)。或者可以考虑一些轻量化的CNNs,比如ShuffleNet, SqueezeNet 等。github 上都可以找到相应的代码可供参考,比如shufflenetV2,只需要把输入与输出改成符合声纹识别的就好。
非常感谢您的回复,目前我已經将模型改小到十多万参数量,只是不知道效果怎么样,还需要测试一下。另外对比一下其他的小模型吧。
你好,
models.py
里面的convolutional_model_simple
是比较小的模型,参数是7M(70万)。 如果你们想用更小参数的模型,可以考虑进一步减少该模型的参数(比如减少层数减少weight的维度等)。或者可以考虑一些轻量化的CNNs,比如ShuffleNet, SqueezeNet 等。github 上都可以找到相应的代码可供参考,比如shufflenetV2,只需要把输入与输出改成符合声纹识别的就好。
您好,一般的声纹识别是分为三个阶段的。您能否讲讲这个代码是如何对应这几个阶段的。这个代码的流程是否为先预训练一个模型,然后把注册人的语句(比如一句注册的话)放进去再训练。最后得到这个特定注册人的模型。十分期待您的回复。如果方便,希望加下您的微信,方便交流,我的微信是cx854187669
你好, 我不是特别清楚声纹识别的三个阶段。 这个代码的流程是,先准备训练数据集(包括需要注册的所有人),随后进行训练,模型的输出是一段语音的embedding。 测试阶段输入某一个语音,得到该语音的embedding后可以和之前在训练数据集上已知的人的embedding进行相似度计算来确定是否是该人。
十分感谢您的回复。我最近又看了一下这份代码,和您说的是差不多的。我其实想问的是实际应用时是如何工作的。大概流程是先通过一批数据训练一个通用的说话人模型(对应开发阶段),然后根据将注册人的语音输入这个通用模型得到注册人的embedding(对应注册阶段),最后在识别时根据当前说话人语句,从通用模型提取出embedding和注册人的embedding进行对比就可以进行识别。
你好,
这个代码的 train.py 应该对应开发阶段:一批数据训练一个通用的说话人模型.
注册阶段应该对应inference, 大概用法是 embedding = model.predict(input_utter), 可以查看issue 30.
得到embedding后你可以和训练阶段的不同人的embedding进行对比,比如计算cosine similarity等.
多谢多谢
您好,最近又研究了一下您的代码。于是有这么几个问题: 1.我在使用model.predict(),然后计算相似度判断两段语音是否为同一人。比如当我第一次注册语音为唤醒词:‘‘小度小度‘’,第二次验证时,我使用’‘小爱同学’‘验证,能否区分唤醒的词语,不同的唤醒词不应该识别成功。我的问题就是训练出的模型能否区分唤醒词,我想让不同的唤醒词不能识别。其中我看到提取特征采用的fbank,这个特征是能否区分识别的词语差异。 2.我目前想在自己的数据集上进行实验,目的是能让模型只能根据第一次注册的词语进行识别成功,其他的词语是不能识别成功的。同时第一次注册可以根据需要制定不同的,比如‘’小度小度‘’,‘’小爱同学‘’等。注册完后只能该注册人说出注册时的词语才能识别成功。我的训练集中同一个人是否要有多个唤醒词的语句,训练集未出现过的词语,当我注册时是否也能成功。 3.我在训练时采用cnn+gru的结构,发现loss值很难下降,目前是1.几。请问您在训练时是用的什么配置训练多久停止的,多少step。我目前用的两张rtx2080ti,发现训练也很慢,请问该代码是否支持双卡训练。 十分感谢您之前的回复,感激不尽。期待您能帮我答疑解惑。
感谢您的回复,我大概懂你意思了,感谢您的答疑解惑,自己也有了一定的想法。我也看了百度的那篇论文。目前我只是简单的在1700人、每人3句的数据集上训练大概1000itr。 1.在训练中我发现loss值极其不稳定,不知道是数据的问题还是我使用的cnn+gru结构。 2.如果在该结构上使用attention,该使用哪种attention,目前我也在看一些在声纹项目使用attention的论文,但是不知道使用哪种或是有什么好的项目。 再次感谢您的耐心指导。