說話人識別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編譯死活不成功,浪費了不少時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM