语音识别(2):KWS数据集代码分析

数据集分析

kws的语音数据为该数据集有 30 个短单词的 65000 个长度 1 秒钟的发音。

这是Google的一个语音数据集 下载地址:http://download.tensorflow.org/data/speech_commands_v0.01.tar.gz 下载后得到文件 speech_commands_v0.01.tar.gz

训练集包含51088 个 wav 音频文件 验证集包含6798 个 wav 音频文件 测试集包含6835 个 wav 音频文件

pytorch音频官方文档

代码分析

1.Python strip()方法

str.strip([chars]);

返回移除指定字符串头尾指定的字符生成新的字符串。

print str2.strip();

删除空格

2.pushd 命令,了解一下! 一个比 cd 更高效的目录切换命令 push 命令在输过不同的目录以后,再次更改只需要push +* 就好。

Linux中的pushd和popd (1)popd不带参数,将目录栈的栈顶元素出栈 (2)popd + * 就是将目录栈中第**个目录删除。如果目录栈的栈顶元素没有发生变化,是不会导致当前的目录切换的。

3.with open(““,“r“) as file 为了更加严谨,在打开失败时不执行.close()操作。

with list_fullpath[split].open("r") as fr

4.readlines() 方法返回一个列表,其中包含文件中的每一行作为列表项。

5.Torchaudio.load 读取完音频则为Tensor的型态。 waveform, sr = torchaudio.load(filepath, frame_offset=0 , num_frames=-1, normalize=True, channels_first=True)

torchaudio读取wav音频的使用方法

返回的结果类型:waveform (torch.Tensor): 如果输入文件是int类型的wav,且normalization为False,则waveform的数据就为int类型的,否则是float32;如果channel_first=True,则waveform.shape=[channel, time]。sr (int): 采样率 保存音频的代码:`torchaudio.save(filepath, src, sample_rate, channels_first)

6.F.pad() 是pytorch 内置的 tensor 扩充函数,便于对数据集图像或中间层特征进行维度扩充.F.pad() 函数详解

7.pathlib.Path().iterdir() 返回一个迭代器包含目录中所有的对象,对象包含文件属性信息python文件操作

代码整合:

PyTorch学习笔记(4)–DataLoader的使用

dataloader与dataset存在区别,dataset取数据是 dataset[:2], 而dataloader取数据可以使用迭代器。

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

# 准备的测试数据集  数据放在了CIFAR10文件夹下
test_data = torchvision.datasets.CIFAR10("./CIFAR10", train=False, transform=torchvision.transforms.ToTensor())
test_loader = DataLoader(dataset=test_data, batch_size=4, shuffle=True, num_workers=0, drop_last=False)

# 测试数据集中第一张图片及target
img, target = test_data[0]
print(img.shape)
print(target)

# 在定义test_loader时,设置了batch_size=4,表示一次性从数据集中取出4个数据
for data in test_loader:
    imgs, targets = data
    print(imgs.shape)
    print(targets)

特征定义

输入特征是BCH*W的4维张量,其中B表示batchsize,C表示特征通道数,H和W表示特征的高和宽

kws项目实现

kws项目地址: kws-continual-learning

代码使用GPU运行

Windows 下安装 CUDA 和 Pytorch 跑深度学习

.yml 实现虚拟环境

创建一个环境,然后激活,根据配置文件创建虚拟环境:

conda env create -f environment.yml conda active kws

windows 下 bash 文件的运行

cd bash conda_install.sh

先安装git 代开.sh文件夹处,右键点击git bash here , 在对话框输入命令

windows10下运行.sh文件报错:wget: command not found

下载wget文件

解决OSError: [WinError 1314] 客户端没有所需的特权

用管理员身份打开pycharm项目文件

google colab使用

google colab使用;

neptune 使用

官网:neptune 参考文件:github neptune-aineptune相关文档安装 Neptune如何查找和设置海王星 API 令牌

问题:No module named ‘neptune’

卸载重装

...
    # initialize Neptune
    neptune.init(<your workspace name>, api_token=<your token>)
    neptune.create_experiment(name=<your experiment name>, params=PARAMETERS)
    ...

nepute

您可以通过创建仪表板将不同的元数据类型(如图表、参数、图像等)组合在一个地方。 创建后,仪表板将可用于项目中的所有运行。

运行代码:

记录问题并解决Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

在trainer.py文件133行添加语句 self.model.to(self.device)