gpt4 book ai didi

python - 在 pytorch 中加载 librispeech 以进行 ASR

转载 作者:行者123 更新时间:2023-12-01 01:48:21 30 4
gpt4 key购买 nike

我最近正在使用神经网络和 CTC 损失来训练自动语音识别机。但我要做的第一件事是准备用于训练模型的数据。由于 Librispeech 包含大量数据,最初我将使用它的一个子集,称为“Mini LibriSpeech ASR 语料库”。 (http://www.openslr.org/31/)。我还使用 SeanNaren Pytorch 绑定(bind)进行 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 将通过处理完整长度的音频和相应的文字记录来处理它。

关于python - 在 pytorch 中加载 librispeech 以进行 ASR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50993861/

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