在 ASR 的 pytorch 中加载 librispeech
loading librispeech in pytorch for ASR
我最近正在使用神经网络和 CTC 损失训练自动语音识别机器。但我应该做的第一件事是准备用于训练模型的数据。由于 Librispeech 包含大量数据,最初我将使用它的一个子集 "Mini LibriSpeech ASR corpus"。 (http://www.openslr.org/31/). Also I am using SeanNaren Pytorch bindings for Warp-ctc (https://github.com/SeanNaren/warp-ctc)。
阅读音频文件及其相应的转录本后,我正在使用 Spicy 包计算每个音频文件的频谱图。当我要将频谱图提供给卷积层以进行特征提取时,问题就出现了。每个频谱图的长度与其他频谱图不同。在对该问题进行更多搜索后,我发现我应该将特定数量的帧传递给网络,但为了达到这一点,我需要用相应的字符(也包含空白符号)标记声音文件的每一帧。
python有没有办法做到这一点?
你的问题很宽泛:你在看音频文件的转录本吗?如果是这样,它们位于每个目录的文本文件中,每行以文件名开头(不带扩展名)。
你可以看这里:https://github.com/inikdom/rnn-speech/blob/master/util/dataprocessor.py
特别是这种方法,它给出了 Librispeech 语料库的音频文件列表及其转录:
def get_data_librispeech(self, raw_data_path):
text_files = self.find_files(raw_data_path, ".txt")
result = []
for text_file in text_files:
directory = os.path.dirname(text_file)
with open(text_file, "r") as f:
lines = f.read().split("\n")
for line in lines:
head = line.split(' ')[0]
if len(head) < 5:
# Not a line with a file desc
break
audio_file = directory + "/" + head + ".flac"
if os.path.exists(audio_file):
result.append([audio_file, self.clean_label(line.replace(head, "")), None])
return result
注意:每个项目的第三个值始终是 None,因为它应该用另一种方法替换为音频长度。
您无需用相应的字符标记音频的每一帧,CTC 将通过处理全长音频和相应的转录本来处理。
将 pytorch nn 与动态频谱图集成计算的最简单方法是使用 nnAudio。
我最近正在使用神经网络和 CTC 损失训练自动语音识别机器。但我应该做的第一件事是准备用于训练模型的数据。由于 Librispeech 包含大量数据,最初我将使用它的一个子集 "Mini LibriSpeech ASR corpus"。 (http://www.openslr.org/31/). Also I am using SeanNaren Pytorch bindings for Warp-ctc (https://github.com/SeanNaren/warp-ctc)。
阅读音频文件及其相应的转录本后,我正在使用 Spicy 包计算每个音频文件的频谱图。当我要将频谱图提供给卷积层以进行特征提取时,问题就出现了。每个频谱图的长度与其他频谱图不同。在对该问题进行更多搜索后,我发现我应该将特定数量的帧传递给网络,但为了达到这一点,我需要用相应的字符(也包含空白符号)标记声音文件的每一帧。
python有没有办法做到这一点?
你的问题很宽泛:你在看音频文件的转录本吗?如果是这样,它们位于每个目录的文本文件中,每行以文件名开头(不带扩展名)。
你可以看这里:https://github.com/inikdom/rnn-speech/blob/master/util/dataprocessor.py
特别是这种方法,它给出了 Librispeech 语料库的音频文件列表及其转录:
def get_data_librispeech(self, raw_data_path):
text_files = self.find_files(raw_data_path, ".txt")
result = []
for text_file in text_files:
directory = os.path.dirname(text_file)
with open(text_file, "r") as f:
lines = f.read().split("\n")
for line in lines:
head = line.split(' ')[0]
if len(head) < 5:
# Not a line with a file desc
break
audio_file = directory + "/" + head + ".flac"
if os.path.exists(audio_file):
result.append([audio_file, self.clean_label(line.replace(head, "")), None])
return result
注意:每个项目的第三个值始终是 None,因为它应该用另一种方法替换为音频长度。
您无需用相应的字符标记音频的每一帧,CTC 将通过处理全长音频和相应的转录本来处理。
将 pytorch nn 与动态频谱图集成计算的最简单方法是使用 nnAudio。