首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于MFCC和DTW的语音识别

基于MFCC和DTW的语音识别
EN

Stack Overflow用户
提问于 2021-02-18 08:01:06
回答 1查看 350关注 0票数 1

基本上,我有大量的基于文字的数据集。每个数据都有不同的时间长度。

这是我的方法:

  1. 标记给定的数据集
  2. 使用分层KFold将数据拆分为训练数据(80%)和测试数据(20%)
  3. 利用MFCC提取幅值、频率和时间
  4. 由于来自MFCC提取的每个数据的时间序列是不同的,所以我希望使用DTW使所有数据的时间维度长度完全相同。
  5. 然后利用DTW数据对其进行神经网络训练。

我的问题是:

  1. 我的方法,特别是在第四步,是否正确?
  2. 如果我的方法是正确的,那么我如何将每个音频转换成与DTW相同的长度?因为基本上我只能比较两个MFCC数据的音频,当我试图更改到其他音频数据时,长度的结果将完全不同。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-18 08:24:04

Ad 1)标签

我不知道你所说的“贴标签”数据集是什么意思。现在,ASR所需要的只是一个语句和相应的文本(例如搜索CommonVoice以获取一些数据)。这取决于您使用的模型,但神经网络不需要任何分割或附加标记等为这项任务。

广告2) KFold交叉验证

做交叉验证不会有任何伤害。如果您有时间和资源来测试您的模型,那么继续使用交叉验证。在我的例子中,我只是使测试集足够大,以确保我得到一个有代表性的单词错误率(WER)。但这主要是因为训练一个模型的k次是一个相当大的努力,因为ASR-模型通常需要一些时间来训练。有些数据集,如Librispeech (和其他数据集),已经为您提供了一个培训/测试/开发分割。如果你愿意,你可以把你的成绩和学业成绩进行比较。但是,如果他们使用了大量的计算能力(和数据),这是很难的,所以在比较结果时要记住这一点。

Ad 3) MFCC特征

MFCC工作得很好,但根据我的经验和通过阅读文献等发现,使用log谱图使用神经网络的性能要稍微好一些。对两者进行测试并不是很多工作,所以您可能也想尝试log。

第4条)和第5条相同长度的DTW

如果你使用一个神经网络,例如一个反恐模型,一个传感器,甚至一个变压器,你不需要这样做。音频输入不需要有相同的长度。记住一件事:如果你训练你的模型,确保你的批次不包含太多的填充。你想用一些像bucket_by_sequence_length()这样的水桶。

只需将批处理大小定义为“谱图帧的数目”,然后使用桶,以便真正利用可用的内存。这确实会对模型的质量产生巨大的影响。我学到了艰难的方法。

备注

您没有指定您的用例,所以我将只提到以下内容:您需要知道您想要对您的模型做什么。如果模型应该能够消耗音频流s.t。用户可以随意长篇大论,你需要从一开始就知道并努力做到这一点。

另一种方法是:“我只需要转录短音频片段。”例如10到60秒左右。在这种情况下,你可以简单地训练任何变压器,你会得到相当好的结果,因为它的注意机制。如果这是你所需要的,我建议你走那条路,因为这要容易得多。但是,如果您需要能够在更长的时间内流音频内容,请远离这一点。

当涉及到流时,的事情会使变得更加复杂。任何纯粹的基于编解码器的注意模型都需要付出很大的努力才能做到这一点。您可以使用RNN(例如RNN),但是这些模型可能变得非常庞大和缓慢,并且需要额外的努力来使它们可靠(例如语言模型、波束搜索),因为它们缺乏编解码器的注意。还有其他的风格可以将Transformers和Transducers结合起来,但是如果您想单独编写所有这些,那么您将承担相当大的任务。

另请参阅

已经有很多代码可以供您学习:

hth

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66255813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档