python - 我找不到在 PyTorch 中使用我的 wav 文件作为数据集的方法
问题描述
你好,我是 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 文件,但对数据准备脚本的一些小修改以及更改主要入口脚本 asr.sh中的一些参数可能会满足您的需求。
请注意,除了 Python 和 Torch 方面的知识外,espnet 还需要您熟悉 shell 脚本。他们的 asr.sh 脚本很长。对于那些对特定型号的最少 pytorch 代码更满意的人来说,这可能不是一件容易的事。Espnet 旨在容纳许多模型和许多数据集。它包含许多预处理阶段,例如语音特征提取、长度过滤、标记准备、语言模型训练等,这些都是良好的语音识别模型所必需的。
如果你坚持你找到的回购。您需要编写自定义 Dataset 和 Dataloader 类。您可以参考pytorch 数据加载教程,但此链接使用图像作为示例,如果您想要音频示例,可能来自一些 github 存储库,例如deepspeech pytorch dataloader
推荐阅读
- python - 在虚拟环境中使用 ctypes 导入 dll
- sql - 格式化 DateTime 以允许 WHERE 子句中的 DATENAME(WEEKDAY, GETDATE()) 过滤结果的最佳方法是什么?
- tensorflow - 更快的 RCNN 启动;TensorFlow TensorRT 图;属性错误:“后处理”没有属性“score_threshold”
- php - 是否可以将一张表中的两个 DQL 查询组合起来,以便分页正常工作?
- python - 使用相机矩阵和距离,opencv函数从像素转换为厘米
- php - 通过连接从 2 个表中获取数据
- python - python中等效的st_make_grid方法
- python - python - 如何在Python Pandas中索引以特定字符串结尾的仅点值后舍入为零?
- html - 如何使用字体修复“灯塔”中的错误?
- php - 登录的用户未在 Laravel 中正确重定向