gpt4 book ai didi

python-2.7 - 为 LSTM 二进制分类构建语音数据集

转载 作者:行者123 更新时间:2023-12-04 01:44:22 25 4
gpt4 key购买 nike

我正在尝试使用 theano 进行二进制 LSTM 分类。
我已经完成了示例代码,但是我想构建自己的代码。

我有一小部分我正在使用的“你好”和“再见”录音。我通过为它们提取 MFCC 特征并将这些特征保存在文本文件中来预处理这些。我有 20 个语音文件(每个 10 个),我正在为每个单词生成一个文本文件,因此有 20 个包含 MFCC 功能的文本文件。每个文件都是一个 13x56 的矩阵。

我现在的问题是:如何使用此文本文件来训练 LSTM?

我对此比较陌生。我也阅读了一些关于它的文献,但没有找到对这个概念的真正理解。

任何使用 LSTM 的更简单的方法也将受到欢迎。

最佳答案

有许多现有的实现,例如 Tensorflow Implementation , Kaldi-focused implementation with all the scripts ,最好先检查一下。

Theano 太低级了,你可以试试 keras相反,如 tutorial 中所述.您可以“按原样”运行教程以了解事情的进展。

然后,您需要准备一个数据集。您需要将数据转换为数据帧序列,并且需要为序列中的每个数据帧分配一个输出标签。

Keras 支持两种类型的 RNN——层返回序列和层返回简单值。您可以在代码中尝试两者,只需使用 return_sequences=Truereturn_sequences=False
要使用序列进行训练,您可以为除最后一帧之外的所有帧分配虚拟标签,您可以在其中分配要识别的单词的标签。您需要将输入和输出标签放置到数组中。所以它将是:

X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]]

Y = [[0,0,...,1], [0,0,....,2]]

在 X 中,每个元素都是一个包含 13 个浮点数的向量。在 Y 中,每个元素只是一个数字 - 中间帧为 0,最终帧为单词 ID。

要仅使用标签进行训练,您需要将输入和输出标签放置到数组中,输出数组更简单。所以数据将是:
X = [[word1frame1, word1frame2, ..., word1framen],[word2frame1, word2frame2,...word2framen]]

Y = [[0,0,1], [0,1,0]]

请注意,输出被矢量化(np_utils.to_categorical)以将其转换为向量而不仅仅是数字。

然后你创建网络架构。您可以有 13 个浮点数作为输入,一个向量作为输出。在中间,您可能有一个完全连接的层,然后是一个 lstm 层。不要使用太大的层,从小的开始。

然后将此数据集输入 model.fit它训练你的模型。您可以在训练后估计保留集的模型质量。

由于您只有 20 个示例,因此您将遇到收敛问题。你需要更多的例子,最好是数千个来训练 LSTM,你将只能使用非常小的模型。

关于python-2.7 - 为 LSTM 二进制分类构建语音数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34661818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com