yuersthe1

导航

说话人识别ALIZE工具包的编译

ALIZE是法国Avignon大学提供的一个开源的说话人识别工具包,利用它可以搭建目前最新水平(state of the art)的说话人识别系统

官方网站:http://alize.univ-avignon.fr/download_en.html

编译的时候中间可能会遇到许多意想不到的问题,下面是我的一些总结:

首先在官网下载ALIZE 3.0和LIA_RAL 3.0,然后再去这里下载特征提取工具包SPro 5.0:

https://gforge.inria.fr/projects/spro/

编译环境:VS2010

首先打开ALIZE 3.0文件夹下的sln文件,直接生成就可通过。

然后打来LIA_RAL 3.0文件夹下的sln文件,这时要注意选定所有工程,右击点属性,在VC++目录-包含目录 下面选择三个文件夹:

同时在VC++目录-库目录 下添加已经编译好的alize的win32库文件:

ALIZE_3.0\lib\Debug\ALIZE_Win32_Debug.lib

之后全部生成解决方案,中间会报有几个生成失败,那是因为生成过程中是多线程的,有些文件在编译过程中正在被别的文件占用。全部生成一遍之后,将生成失败的一个一个生成即可成功。

这里有些人会遇到编译过后不生成exe文件的情况,推荐的编译方法是首先单独编译liatools那个项目,之后再一个一个项目进行编译。每编译一个项目就把生成的相应exe文件复制保存下来。

最后是SPro 5.0的编译,SPro 5.0在windows下编译需要对里面的文件进行修改

首先,建立解决方案,按如下结构建立每个项目:

然后和编译LIA_RAL 3.0一样添加include,选择spro的h文件所在文件夹即可

之后别急着生成,打开spro.h文件,在里面添加如下几句:

# include <math.h>
# define M_PI       3.14159265358979323846
# include <limits.h>
# define SIZEOF_SHORT 2
# define SIZEOF_LONG 4
# include <malloc.h>
# include <memory.h>
# include <string.h>

# include "system.h"

#define strcasecmp strcmp

#define VERSION "5.0"

之后打开sig.c,ctrl+F搜索p = f->buf,如果函数前面有定义p,就在这句话所在的函数中找到前面的void *p改成float *p,然后将p = f->buf改成p=(float *)f->buf;如果函数前面没有定义p,就直接改成float *p=(float *)f->buf。搜到一个改一个。

改完之后对这7个项目一个一个生成即可成功。

这里:https://github.com/ibillxia/VoicePrintReco/tree/master/Demo有一个牛人在windows下的做的实例。

另外,经试验发现这个工具包在linux下直接按照readme编译没有问题,不用做语法上的修改就可以编译成功。不过gcc编译器我用的是4.43版本的。过去在cygwin下用gcc3.6编译死活不成功,浪费了不少时间。

posted on 2014-04-17 18:01  yuersthe1  阅读(3077)  评论(2编辑  收藏  举报