小胖有技能|AssemblyAI 在 PyTorch 中建立端到端的语音识别模型,利用( 二 )
文章图片
在PyTorch中 , 你可以使用torchaudio函数FrequencyMasking来掩盖频率维度 , 并使用TimeMasking来度量时间维度 。
torchaudio.transforms.FrequencyMaskingtorchaudio.transforms.TimeMasking有了数据后 , 我们需要将音频转换为Mel频谱图 , 并将每个音频样本的字符标签映射为整数标签:
classTextTransform:''''''Mapscharacterstointegersandviceversa''''''def__init__(self):char_map_str='''''''0<SPACE>1a2b3c4d5e6f7g8h9i10j11k12l13m14n15o16p17q18r19s20t21u22v23w24x25y26z27''''''self.char_map={}self.index_map={}forlineinchar_map_str.strip.split('n'):ch,index=line.splitself.char_map[ch]=int(index)self.index_map[int(index)]=chself.index_map[1]=''deftext_to_int(self,text):''''''Useacharactermapandconverttexttoanintegersequence''''''int_sequence=forcintext:ifc=='':ch=self.char_map['']else:ch=self.char_map[c]int_sequence.append(ch)returnint_sequencedefint_to_text(self,labels):''''''Useacharactermapandconvertintegerlabelstoantextsequence''''''string=foriinlabels:string.append(self.index_map[i])return''.join(string).replace('','')train_audio_transforms=nn.Sequential(torchaudio.transforms.MelSpectrogram(sample_rate=16000,n_mels=128),torchaudio.transforms.FrequencyMasking(freq_mask_param=15),torchaudio.transforms.TimeMasking(time_mask_param=35))valid_audio_transforms=torchaudio.transforms.MelSpectrogramtext_transform=TextTransformdefdata_processing(data,data_type=''train''):spectrograms=labels=input_lengths=label_lengths=for(waveform,_,utterance,_,_,_)indata:ifdata_type=='train':spec=train_audio_transforms(waveform).squeeze(0).transpose(0,1)else:spec=valid_audio_transforms(waveform).squeeze(0).transpose(0,1)spectrograms.append(spec)label=torch.Tensor(text_transform.text_to_int(utterance.lower))labels.append(label)input_lengths.append(spec.shape[0]//2)label_lengths.append(len(label))spectrograms=nn.utils.rnn.pad_sequence(spectrograms,batch_first=True).unsqueeze(1).transpose(2,3)labels=nn.utils.rnn.pad_sequence(labels,batch_first=True)returnspectrograms,labels,input_lengths,label_lengths
文章图片
定义模型-DeepSpeech2
我们的模型将类似于DeepSpeech2结构 。 该模型将具有两个主要的神经网络模块——学习相关的音频特征的N层残差卷积神经网络(ResCNN) , 以及利用学习后的ResCNN音频特征的一组双向递归神经网络(BiRNN) 。 该模型的顶部是一个全连通层 , 用于按时间步长对字符进行分类 。
文章图片
卷积神经网络(CNN)善于提取抽象特征 , 我们会将相同的特征提取能力应用于音频频谱图 。 我们选择使用残差的CNN层 , 而不只是普通的CNN层 。 残差连接(又称为跳过连接)是在“用于图像识别的深度残差学习”一文中首次引入 。 作者发现 , 如果将这些连接添加到CNN中 , 可以建立真正的深度网络 , 并获得较高的准确性 。
添加这些残差连接有助于模型更快地学习和更好地推广 。 这篇可视化神经网络的损失图景的论文表明 , 具有残留连接的网络具有一个“平坦的”损失面 , 使模型更容易描绘损失状况 , 并找到一个更低且更通用的最小值 。
推荐阅读
- 手机圈小胖|iPhone 12 Pro Max / 古铜色三星 Note 20 Ultra 对比渲染图曝光,金色
- 小胖先森|Z1x 5G官宣搭载骁龙765G处理器,iQOO
- 小胖聊科技|Z1x爆料信息来袭,或配置120Hz高刷屏+5000mAh大电池,iQOO
- 小胖先森|Redmi新机即将登场,首款弹出式天玑1000+旗舰
- 手机圈小胖|包装盒更薄、更精致,苹果iPhone12/SE2不再附赠充电器和耳机
- 手机圈小胖|京东2020新品发布会剧透曝光“2020梦想之机”你们觉得是哪款?
- 小胖辣评|别再贪便宜入手了!,这四款苹果手机已经过时
- 小胖先森|疑似真机图曝光,一加Nord官宣
- 小胖先森|华为nova5、荣耀20S等机型升级至最新系统可体验指关节手势功能
- 小胖先森|小米商城预告新品:小米要造车?小米公关徐洁云回应:没有的事