Pytorch-TIMIT说话人识别代码-Sincnet网络 简洁版本(适合黑白盒攻击使用)

Pytorch-TIMIT说话人识别

先上链接:
码云(包括代码和模型以及测试数据):https://gitee.com/djc_QRICK/timit-pytorch

简化

删掉了很多乱七八糟的东西,剩下的就是非常纯净的代码和模型
整个代码的功能仅仅包括模型的输入和预测,以及预先训练的模型

  • 模型采用Sincnet
  • 数据集采用TIMIT
  • 整体上来说这是个CSI系统也就是闭集的说话人识别
  • 适合想做黑白盒攻击的朋友们使用
  • 基于pytorch1.6 最好有cuda,没有cuda需要微调代码(影响不大)

效果图

在这里插入图片描述

  • TIMIT数据集中一共462个人
  • 输出的向量是一个462维度的结构,代表了462个人的概率

代码结构解释

文件结构

结构如下:
在这里插入图片描述

  1. DR1是我放着用来存放测试用例的文件,里面包含了两个人说的各种话
  2. prefile包括了配置文件cfg,以及预训练模的模型pkl
  3. 还有包括了根据说话人得到index的文件speaker_label.plk以及根据 index得到说话人的文件TIMIT_labels.npy
  4. 我在Sincnet.py中写了如何通过label获得人名以及更加人名获得label
  5. 注意虽然文件中的人名是大写,但是plk以及npy文件中的人名是小写
    代码如下
#更具人名获得标签  index
#注意:标签里面都是小写的所以输入的时候要把大写的人变成小写
def get_label_by_name(speaker_name,filename='prefile/speaker_label.plk'):
    with open(filename,'rb')as f:
        data=pickle.load(f)
    return data[speaker_name]

#根据标签获得人名,获得的人名也是小写的
def get_name_by_label(label_index,filename="prefile/TIMIT_labels.npy"):
    data=np.load(filename,allow_pickle=True).item()
    for (k,v) in data.items():
        if v==label_index:
            return k.split('/')[2]
    return None

代码展示

下载好了直接运行Sincnet.py文件就行了
在这里插入图片描述

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值