问题描述
你好,我是 PyTorch 的新手,我想做一个简单的语音识别,但我不想使用 pytorch.datasets 我有一些数据集的声音,但我找不到任何地方可以帮助我。
我想使用 .wav 文件。我看到了一个教程,但他使用了 pytorch 数据集。
import torch
from torch import nn,optim
import torch.nn.functional as F
import torchaudio
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
from torchaudio.datasets import SPEECHCOMMANDS
import os
class SpeechSubset(SPEECHCOMMANDS):
def __init__(self,subset,str=None):
super().__init__("./",download=True)
def load_list(filename):
filepath = os.path.join(self._path,file.name)
with open(filepath) as fileob:
return [os.path.join(self._path,line.strip())]
if subset == "validation":
self._walker = load_list("validation_list.txt")
elif subset == "testing":
self._walker = load_list("testing_list.txt")
elif subset == "training":
excludes = load_list("validation_list.txt") + load_list("testing_list.txt")
excludes = set(excludes)
self._walker = [w for w in self._walker if w not in excludes]
train_set = SpeechSubset("training")
test_set = SpeechSubset("testing")
waveform,sample_rate,label,speaker_id,utterance_number = train_set[0]
对不起,我的英语不太好。
编辑
我使用的是 SPEECHCOMMANDS 数据集,但我想使用我自己的数据集
感谢阅读。
解决方法
既然你在谈论语音识别和 pytorch,我建议你使用一套完善的工具,而不是从头开始做与语音相关的训练任务。
github 上的一个很好的 repo 是 Espnet。它包含一些关于文本到语音和语音到文本模型的最新工作,以及用于训练不同语言的流行开源数据集的现成脚本。它还包括训练有素的模型供您直接使用。
回到你的问题,如果你想使用pytorch在你自己的数据集上训练你自己的语音识别模型,我建议你去这个Espnet Librispeech ASR recipe。虽然它使用 .flac 文件,但对 data preparation script 进行一些小修改并更改 major entry script asr.sh 中的一些参数可能会满足您的需求。
注意,除了python和torch的知识,espnet还需要你熟悉shell脚本。他们的 asr.sh 脚本很长。对于那些对特定模型的最少 pytorch 代码更满意的人来说,这可能不是一件容易的事。 Espnet 旨在容纳许多模型和许多数据集。它包含许多预处理阶段,例如语音特征提取、长度过滤、token准备、语言模型训练等,这些都是好的语音识别模型所必需的。
如果你坚持你找到的回购。您需要编写自定义 Dataset 和 Dataloader 类。你可以参考pytorch dataloading tutorial,但是这个链接以图片为例,如果你想要一个音频的例子,可能来自一些github repos,比如deepspeech pytorch dataloader