"src/targets/vscode:/vscode.git/clone" did not exist on "f4b87a369c96ae9ae7fe13b98924e89c6132a0e3"
README.md 2.64 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# ECAPA-TDNN

该文件中包换对ECAPA-TDNN的非官方重新实现,这是Voxceleb2数据集中的说话人识别。

这个文件是基于[voxceleb_trainer](https://github.com/clovaai/voxceleb_trainer)修改的。

若想查看系统的具体结构,请在[第三章 ECAPA-SYSTEM](https://arxiv.org/pdf/2111.06671.pdf)中查看。

## 环境和依赖

源程序是在DTK22.04.1下的PyTorch1.10版本环境下进行的,使用的是python3.7版本。

### 环境搭建

```
conda create --name ECAPA-TDNN python=”3.7”

conda activate ECAPA-TDNN
```

### 安装依赖

安装dtk22.04.1环境下的torch包

```
pip3 install torch-1.10.0a0+git450cdd1.dtk22.4-cp37-cp37m-linux_x86_64.whl

pip3 install torchvision-0.10.0a0_dtk22.04_e17f5ea-cp37-cp37m-linux_x86_64.whl

pip3 install torchaudio-0.10.0-cp37-cp37m-linux_x86_64.whl
```

安装其他依赖包

```
pip3 install numpy

pip3 install scipy

pip3 install scikit-learn

pip3 install tqdm

pip3 install torchvision

pip3 install soundfile
```

## 数据准备

### 数据索引和预训练模型

从如下链接中将ECAPA-TDNN_data.zip文件解压至程序根目录,解压完成后根目录中应包括exps文件夹、train_cut.txt、train_list.txt和veri_test2.txt文件。

链接:https://pan.baidu.com/s/11TWAUSwROOjvKOcx36bqFQ 
提取码:uaia 

### 数据集下载

**VoxCeleb1**

**VoxCeleb2**

(voxceleb1:

链接:https://pan.baidu.com/s/1iASZ01mUny7udnjChJIbOg 

提取码:k7v0 

voxceleb2:

链接:https://pan.baidu.com/s/1tBbdq2tm5KX7znM89o9LHg 

提取码:6hzs)

**MUSAN**(https://www.openslr.org/resources/17/musan.tar.gz)

**RIR**(https://openslr.org/resources/28/rirs_noises.zip)

### 数据预处理

需要进行预处理的有voxceleb2和musan两个数据集,前者需要将m4a格式的音频转化为wav,而后者需要将其处理为musan_split,即拆分为可以更快进行随机读取的数据。其步骤可以参考[voxceleb_trainer](https://github.com/clovaai/voxceleb_trainer)中的Data preparation部分。

#### voxceleb2

所需的几个数据集中,VoxCeleb2中的数据需要进行转换,转换过程中需要提前安装ffmpeg,否则会导致转换失败。执行如下代码即可完成转换(注意:该转换时间至少需要24h以上)

```
python ./dataprep.py --save_path data --convert
```

#### musan

对于musan数据集的处理需要手动调用dataprep.py文件中的split_musan函数,从而完成转换。

## 模型训练

建立train_single.sh脚本

```
export HIP_VISIBLE_DEVICES=0

python3 trainECAPAModel.py --save_path exps/exp1
```

执行脚本即可进行训练

```
bash train_single.sh
```


## 参考

https://github.com/TaoRuijie/ECAPA-TDNN