2

你好,我是 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 数据集,但我想使用自己的

谢谢你的阅读。

4

1 回答 1

1

由于您在谈论语音识别和 pytorch,我建议您使用一套完善的工具,而不是从头开始执行与语音相关的训练任务。

github 上的一个很好的 repo 是Espnet。它包含一些关于文本到语音和语音到文本模型的最新工作,以及用于在不同语言的流行开源数据集上训练的即用型脚本。它还包括训练有素的模型,供您直接使用。

回到你的问题,如果你想使用 pytorch 在你自己的数据集上训练你自己的语音识别模型,我建议你去这个Espnet Librispeech ASR recipe。虽然它使用 .flac 文件,但对数据准备脚本的一些小修改以及更改主要入口脚本 asr.sh中的一些参数可能会满足您的需求。

请注意,除了 Python 和 Torch 方面的知识外,espnet 还需要您熟悉 shell 脚本。他们的 asr.sh 脚本很长。对于那些对特定型号的最少 pytorch 代码更满意的人来说,这可能不是一件容易的事。Espnet 旨在容纳许多模型和许多数据集。它包含许多预处理阶段,例如语音特征提取、长度过滤、标记准备、语言模型训练等,这些都是良好的语音识别模型所必需的。

如果你坚持你找到的回购。您需要编写自定义 Dataset 和 Dataloader 类。您可以参考pytorch 数据加载教程,但此链接使用图像作为示例,如果您想要音频示例,可能来自一些 github 存储库,例如deepspeech pytorch dataloader

于 2021-04-11T08:02:01.810 回答