Alize 声纹识别 学习笔记2 失败了
alize 源码
https://github.com/ALIZE-Speaker-Recognition/alize-core
https://github.com/ALIZE-Speaker-Recognition/LIA_RAL
LIA_RAL 提供了四个官方例子
https://alize.univ-avignon.fr/
https://alize.univ-avignon.fr/doc/01_GMM-UBM_system_with_ALIZE3.0.tar.gz
https://alize.univ-avignon.fr/doc/02_i-vector_system_with_ALIZE3.0.tar.gz
https://alize.univ-avignon.fr/doc/03_JFA_system_with_ALIZE3.0.tar.gz
https://alize.univ-avignon.fr/doc/demo_LIA_SpkSeg.zip
01_GMM-UBM_system_with_ALIZE3.0
第一个教程给出了如何构建一个简单的GMM/UBM系统的示例
1.使用SPRO或HTK的特征提取
本教程提供的配置文件提取60维MFCC特征向量,(19MFCC+对数能量和一阶和二阶导数)要运行教程,您需要:
SPRO工具包中的sfbcep(http://www.irisa.fr/metiss/guig/spro/)
请注意,如果SPRO未与SPHERE库对齐,则需要
NIST语音处理工具包中的w_decode和h_strip(http://www.speech.cs.cmu.edu/comp.speech/Section1/AudioSoftware/nist.html)
以原始PCM格式转换SPHERE文件。或 HTK工具包中的HCopy(http://htk.eng.cam.ac.uk/)
2.特征选择和归一化
在本部分中,使用NormFeat应用简单的特征处理和LIA_SpkDet工具包中的EnergyDetector
3.标准GMM/UBM扬声器验证系统的培训
3.1. 使用TrainWorld训练通用背景模型(UBM)
3.2. 使用TrainTarget调整扬声器相关的GMM模型
3.3. 使用ComputeTest将测试片段与扬声器模型进行比较
3.4. 使用ComputeNorm用T、Z或ZT范数对分数进行归一化(也可以计算TZ范数)
特征提取
D:\08c++\VoicePrintReco-VPR2.0\Demos\MyDemo\SproBin4.0>sfbcep.exe -i baiduClose.wav -o output.mfcc -c config_file.cfg
安装cygwin
放弃sfbcep尝试
准备使用window10 自带的Ubuntu使用ASV-Subtools
内置ubuntu
这样的报错。正是因为网络被代理劫持导致的。解决的办法如下
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AppId_Catalog\0408F7A3]
"AppFullPath"="C:\\Windows\\System32\\wsl.exe"
"PermittedLspCategories"=dword:80000000
将上述代码复制粘贴到记事本,保存后修改文件后缀为reg,双击运行即可
传输子系统文件
简单来说就是我的电脑里的地址栏输入 \wsl$
Kaldi 安装
创建一个work目录(进入/work 路径下)
git clone https://github.com/kaldi-asr/kaldi.git
编译tools
cd kaldi/tools
extras/check_dependencies.sh
安装C编译器
sudo apt-get update
sudo apt-get install build-essential
根据提示安装完成所有依赖
编译kaldi
sudo apt-get install zlib1g-dev automake autoconf sox gfortran libtool subversion python2.7
sudo apt-get install python
检查python命令进入的环境是否为python2.7
sudo ./extras/install_openblas.sh
sudo ./extras/install_mkl.sh
sudo apt-get install libatlas-base-dev
make openfst
进入src目录
kaldi/src/
配置生成Makefile。
./configure --shared
显示 Kaldi has been successfully configured. To compile:
编译kaldi
make -j clean depend
make -j4
查看依赖情况
/kaldi/tools/extras$ ./check_dependencies.sh
./check_dependencies.sh: all OK.
运行和验证
cd ./kaldi/egs/yesno/s5
./run.sh
显示 %WER 0.00 [ 0 / 232, 0 ins, 0 del, 0 sub ] exp/mono0a/decode_test_yesno/wer_10_0.0
表示安装kaldi成功
安装subtools
下载subtools
mkdir -p /work/kaldi/egs/syf/example
cd /work/kaldi/egs/syf/example
git clone https://github.com/Snowdar/asv-subtools.git subtools
安装pip
sudo apt-get install python3-pip
安装pytorch
pip install torch
安装依赖库
pip install -r subtools/requirements.txt
The 'sklearn' PyPI package is deprecated, use 'scikit-learn'
rather than 'sklearn' for pip commands.
修改成如下
syf@syf:~/work/kaldi/egs/syf/example$ vi subtools/requirements.txt
numpy
pyyaml
thop
scipy
#sklearn
scikit-learn
pandas
packaging
matplotlib
tensorboard
tensorboardX
tqdm>=4.42.0
# progressbar
# progressbar2
在运行一次 pip install -r subtools/requirements.txt
修改配置路径
/work/kaldi/egs/syf/example/subtools$ vi path.sh
#kaldi_root_dir=$(dirname $(dirname $(dirname $current_dir)))
kaldi_root_dir=/work/kaldi/syf/example
在 example 下构建 data 目录用于存放数据映射文件
mkdir -p data/door_train
利用 find 命令获取该文件夹下所有 wav 文件的绝对路径并保存至 temp.lst中
mkdir -p data1/wav
/work/kaldi/egs/syf/example/data1/wav$ ls
bdgm.wav bdkm.wav xngm.wav xnkm.wav xxgm.wav xxkm.wav
进入syf/example 目录下
sudo find data1/wav/ -name "*.wav" > data/door_train/temp.lst
输出结果
data1/wav/xngm.wav
data1/wav/bdkm.wav
data1/wav/xxkm.wav
data1/wav/xxgm.wav
data1/wav/xnkm.wav
data1/wav/bdgm.wav
利用 awk 命令将 temp.lst 中的每一行进行切分并重新组合构建 wav.scp
将temp.lst 第一列 按照/分割成字符数组a,再将a数组最后一个文件名称去掉后缀名,拼接出新的格式放入wav.scp 文件
sudo awk '{split($1,a,"/");{split(a[3],b,".")}print a[1]"-"a[2]"-"b[1],$1}' ./data/door_train/temp.lst > ./data/door_train/wav.scp
结果展示
syf@syf:~/work/kaldi/egs/syf/example$ cat ./data/door_train/wav.scp
data1-wav-xngm data1/wav/xngm.wav
data1-wav-bdkm data1/wav/bdkm.wav
data1-wav-xxkm data1/wav/xxkm.wav
data1-wav-xxgm data1/wav/xxgm.wav
data1-wav-xnkm data1/wav/xnkm.wav
data1-wav-bdgm data1/wav/bdgm.wav
utt2spk和spk2utt
syf@syf:~/work/kaldi/egs/syf/example$ sudo awk '{split($1,a,"/");{split(a[3],b,".")}print a[1]"-"a[2]"-"b[1],a[1]}' ./data/door_train/temp.lst > ./data/door_train/utt2spk
syf@syf:~/work/kaldi/egs/syf/example$ sudo awk '{split($1,a,"/");{split(a[3],b,".")}print a[1],a[1]"-"a[2]"-"b[1]}' ./data/door_train/temp.lst > ./data/door_train/spk2utt
syf@syf:~/work/kaldi/egs/syf/example$ cat ./data/door_train/utt2spk
data1-wav-xngm data1
data1-wav-bdkm data1
data1-wav-xxkm data1
data1-wav-xxgm data1
data1-wav-xnkm data1
data1-wav-bdgm data1
syf@syf:~/work/kaldi/egs/syf/example$ cat ./data/door_train/spk2utt
data1 data1-wav-xngm
data1 data1-wav-bdkm
data1 data1-wav-xxkm
data1 data1-wav-xxgm
data1 data1-wav-xnkm
data1 data1-wav-bdgm
检查文件
syf@syf:~/work/kaldi/egs/syf/example$ sudo sh subtools/kaldi/utils/fix_data_dir.sh data/door_train/
subtools/kaldi/utils/fix_data_dir.sh: 34: subtools/kaldi/utils/parse_options.sh: Syntax error: Bad for loop variable
构建训练集
syf@syf:~/work/kaldi/egs/syf/example$ sudo subtools/recipe/voxceleb/prepare/make_voxceleb1_v2.pl data1/wav dev data/door_train
Cannot open directory: No such file or directory at subtools/recipe/voxceleb/prepare/make_voxceleb1_v2.pl line 29.
特征提取
失败了
尝试LIA_RAL 官方例子
下载代码并解压赋权限
syf@syf:~/0codes/01_GMM-UBM_system_with_ALIZE3.0$ ll
total 72
drwxrwxrwx 10 syf syf 4096 Mar 20 15:57 ./
drwxrwxrwx 7 root root 4096 Mar 20 15:57 ../
-rwxrwxrwx 1 syf syf 59 Aug 18 2013 .directory*
-rwxrwxrwx 1 syf syf 2812 Aug 18 2013 01_RUN_feature_extraction.sh*
-rwxrwxrwx 1 syf syf 2196 Aug 18 2013 02a_RUN_spro_front-end.sh*
-rwxrwxrwx 1 syf syf 2135 Aug 18 2013 02b_RUN_htk_front-end.sh*
-rwxrwxrwx 1 syf syf 4203 Sep 3 2013 03_RUN_gmm-ubm.sh*
-rwxrwxrwx 1 syf syf 3898 Aug 18 2013 CreateNormLists.pl*
-rwxrwxrwx 1 syf syf 2771 Sep 3 2013 README*
drwxrwxrwx 2 syf syf 4096 Mar 20 15:57 bin/
drwxrwxrwx 2 syf syf 4096 Mar 20 15:57 cfg/
drwxrwxrwx 6 syf syf 4096 Mar 20 15:57 data/
drwxrwxrwx 2 syf syf 4096 Sep 12 2013 gmm/
drwxrwxrwx 2 syf syf 4096 Sep 12 2013 log/
drwxrwxrwx 2 syf syf 4096 Aug 18 2013 lst/
drwxrwxrwx 2 syf syf 4096 Mar 20 15:57 ndx/
drwxrwxrwx 2 syf syf 4096 Sep 12 2013 res/
syf@syf:~/0codes/01_GMM-UBM_system_with_ALIZE3.0$
运行第一个例子
syf@syf:~/0codes/01_GMM-UBM_system_with_ALIZE3.0$ sudo ./01_RUN_feature_extraction.sh
bin/sfbcep -m -k 0.97 -p19 -n 24 -r 22 -e -D -A -F SPHERE data/sph/xaaf.sph data/prm/xaaf.tmp.prm
./01_RUN_feature_extraction.sh: line 75: bin/sfbcep: No such file or directory
可能是sfbcep所需的库类缺少了
sudo apt-get install build-essential libblas-dev liblapack-dev libhdf5-dev libboost-all-dev sox libsndfile1-dev