微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过LSTM识别音素

如何解决通过LSTM识别音素

因此,我尝试使用LSTM / RNN对语音数据中的音素进行分类,但是我在拟合数据时遇到问题(可能是由于数据格式所致)。最初,我的数据/序列是这样的:

语音数据(MFCC):-

单个MFCC包含用于单个音素的x个窗口

[W(1),W(2),..,W(x-1),W(x)]

16个MFCC各自包含x个窗口

[[W(1),W(x)](1),[W(1),W(x)]{2},...
 [W(1),W(x)](16)
]

以上是2dnumpy数组的形式,其中包含具有该形状的单个音素的全部必要频谱数据。 单个数据样本(或序列)将是列表形式的多个音素的句子中的MFCC序列。所以句子中的20个音素会产生20 * 16 MFCC

标记向量被构建为列表,相应的音素表示为int值。每个音素值每次写入16次,以匹配每个MFCC。像这样:

label:
y= [phone1[0],phone1[15],phone2[0],phone2[15],......,phonen[0],phonen[15]]

(每个音素的窗口数不同的原因是持续时间的不同)

我总共有10个列表形式的句子。我也将MFCC的数量截短为300,所以每个序列都可以相等

len(x_type)=10 (# of sequences)
type(x_type)= lst 
len(x_type[0:])= 300 (number of MFCCs) 
type(x_type)=lst
len(x_type[x][0:])= ? (variable length per phoneme)
type(x_type)= numpy array (for each phoneme)

当我尝试训练LSTM时,出现此错误

ValueError: Failed to find data adapter that can handle input: (<class 'list'> containing values of types {'(<class \'list\'> containing values of types {"<class \'numpy.ndarray\'>"})'}),(<class 'list'> containing values of types {'(<class \'list\'> containing values of types {"<class \'int\'>"})'})

从行:

model.fit(x_train,y_train,epochs=40,batch_size=32,validation_data=(x_validation,y_validation))  

当我尝试将内部numpy array转换为list以获得一致性时,我从同一行收到此错误

ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type list).

我无法真正将整个序列转换为numpy array,因为您可以看到由于每个电话的持续时间差异,我的数据不是完全对称的。虽然我只是简单地使我的所有序列总体上相等就足以训练LSTM(因此为什么我将它们全部截断为300)。我知道这似乎有些令人费解,但是如果有人对LSTM / RNN有任何经验,请告诉我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。