__init__.py 6.23 KB
Newer Older
Anthony Larcher's avatar
Initial  
Anthony Larcher committed
1
# -*- coding: utf-8 -*-
Anthony Larcher's avatar
Anthony Larcher committed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#
# This file is part of SIDEKIT.
#
# SIDEKIT is a python package for speaker verification.
# Home page: http://www-lium.univ-lemans.fr/sidekit/
#
# SIDEKIT is a python package for speaker verification.
# Home page: http://www-lium.univ-lemans.fr/sidekit/
#    
# SIDEKIT is free software: you can redistribute it and/or modify
# it under the terms of the GNU LLesser General Public License as 
# published by the Free Software Foundation, either version 3 of the License, 
# or (at your option) any later version.
#
# SIDEKIT is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with SIDEKIT.  If not, see <http://www.gnu.org/licenses/>.
Anthony Larcher's avatar
Initial  
Anthony Larcher committed
23
24

"""
Anthony Larcher's avatar
Anthony Larcher committed
25
Copyright 2014-2017 Anthony Larcher and Sylvain Meignier
Anthony Larcher's avatar
Anthony Larcher committed
26
"""
Anthony Larcher's avatar
Initial  
Anthony Larcher committed
27

Anthony Larcher's avatar
Anthony Larcher committed
28
29
from ctypes import *
from ctypes.util import find_library
Anthony Larcher's avatar
svm    
Anthony Larcher committed
30
import logging
Anthony Larcher's avatar
Anthony Larcher committed
31
import numpy
Anthony Larcher's avatar
Anthony Larcher committed
32
import os
Anthony Larcher's avatar
svm    
Anthony Larcher committed
33
import sys
Anthony Larcher's avatar
Anthony Larcher committed
34
import importlib
Anthony Larcher's avatar
Anthony Larcher committed
35
36
37
38
39


# Read environment variable if it exists
SIDEKIT_CONFIG={"theano":True,
                "theano_config":'gpu',  # Can be 'cpu' or 'gpu'
Anthony Larcher's avatar
Anthony Larcher committed
40
41
                "libsvm":True,
                "mpi":False
Anthony Larcher's avatar
Anthony Larcher committed
42
                }
Anthony Larcher's avatar
Anthony Larcher committed
43

Anthony Larcher's avatar
Anthony Larcher committed
44
45
46
47
48
49
50
51
52
53
54
if 'SIDEKIT' in os.environ:
    for cfg in os.environ['SIDEKIT'].split(","):
        k, val = cfg.split("=")
        if k == "theano":
            if val == "false":
                SIDEKIT_CONFIG["theano"] = False
        elif k == "theano_config":
            SIDEKIT_CONFIG["theano_config"] = val
        elif k == "libsvm":
           if val == "false":
                SIDEKIT_CONFIG["libsvm"] = False 
Anthony Larcher's avatar
Anthony Larcher committed
55
56
57
        elif k == "mpi":
            if val == "true":
               SIDEKIT_CONFIG["mpi"] = True 
Anthony Larcher's avatar
Anthony Larcher committed
58

Anthony Larcher's avatar
Anthony Larcher committed
59
PARALLEL_MODULE = 'multiprocessing'  # can be , threading, multiprocessing MPI is planned in the future
Anthony Larcher's avatar
Anthony Larcher committed
60
PARAM_TYPE = numpy.float32
Anthony Larcher's avatar
Anthony Larcher committed
61
STAT_TYPE = numpy.float32
Anthony Larcher's avatar
Anthony Larcher committed
62

Anthony Larcher's avatar
Anthony Larcher committed
63
64
65
66
67
68
69
# Import bosaris-like classes
from sidekit.bosaris import IdMap
from sidekit.bosaris import Ndx
from sidekit.bosaris import Key
from sidekit.bosaris import Scores
from sidekit.bosaris import DetPlot
from sidekit.bosaris import effective_prior
70
from sidekit.bosaris import logit_effective_prior
Anthony Larcher's avatar
Anthony Larcher committed
71
72
73
from sidekit.bosaris import fast_minDCF

# Import classes
74
from sidekit.features_extractor import FeaturesExtractor
Anthony Larcher's avatar
Anthony Larcher committed
75
76
77
from sidekit.features_server import FeaturesServer
from sidekit.mixture import Mixture
from sidekit.statserver import StatServer
Anthony Larcher's avatar
Anthony Larcher committed
78
from sidekit.factor_analyser import FactorAnalyser
Anthony Larcher's avatar
Anthony Larcher committed
79

Anthony Larcher's avatar
Anthony Larcher committed
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
from sidekit.frontend.io import write_pcm
from sidekit.frontend.io import read_pcm
from sidekit.frontend.io import pcmu2lin
from sidekit.frontend.io import read_sph
from sidekit.frontend.io import write_label
from sidekit.frontend.io import read_label
from sidekit.frontend.io import read_spro4
from sidekit.frontend.io import read_audio
from sidekit.frontend.io import write_spro4
from sidekit.frontend.io import read_htk
from sidekit.frontend.io import write_htk

from sidekit.frontend.vad import vad_energy
from sidekit.frontend.vad import vad_snr
from sidekit.frontend.vad import label_fusion
from sidekit.frontend.vad import speech_enhancement


from sidekit.frontend.normfeat import cms
from sidekit.frontend.normfeat import cmvn
from sidekit.frontend.normfeat import stg
from sidekit.frontend.normfeat import rasta_filt


from sidekit.frontend.features import compute_delta
from sidekit.frontend.features import framing
from sidekit.frontend.features import pre_emphasis
from sidekit.frontend.features import trfbank
from sidekit.frontend.features import mel_filter_bank
from sidekit.frontend.features import mfcc
from sidekit.frontend.features import pca_dct
from sidekit.frontend.features import shifted_delta_cepstral

Anthony Larcher's avatar
Anthony Larcher committed
113
114
115
116
117
from sidekit.iv_scoring import cosine_scoring
from sidekit.iv_scoring import mahalanobis_scoring
from sidekit.iv_scoring import two_covariance_scoring
from sidekit.iv_scoring import PLDA_scoring

Anthony Larcher's avatar
gmm ubm    
Anthony Larcher committed
118
119
from sidekit.gmm_scoring import gmm_scoring 

Anthony Larcher's avatar
JFA    
Anthony Larcher committed
120
121
from sidekit.jfa_scoring import jfa_scoring

Anthony Larcher's avatar
Anthony Larcher committed
122

Anthony Larcher's avatar
Anthony Larcher committed
123
# Import NNET classes and functions if the FLAG is True
Anthony Larcher's avatar
svm    
Anthony Larcher committed
124
theano_imported = False
Anthony Larcher's avatar
Anthony Larcher committed
125
try:
Anthony Larcher's avatar
Anthony Larcher committed
126
127
128
129
130
131
    if SIDEKIT_CONFIG["theano"]:
        if SIDEKIT_CONFIG["theano_config"] == "gpu":
            os.environ['THEANO_FLAGS'] = 'mode=FAST_RUN,device=gpu,floatX=float32'
        else:
            os.environ['THEANO_FLAGS'] = 'mode=FAST_RUN,device=cpu,floatX=float32'
        theano_imported = True
Anthony Larcher's avatar
Anthony Larcher committed
132
except ImportError:
Anthony Larcher's avatar
nnet    
Anthony Larcher committed
133
    print("Cannot import Theano")
Anthony Larcher's avatar
Anthony Larcher committed
134

Anthony Larcher's avatar
svm    
Anthony Larcher committed
135
136
137
138
if theano_imported:
    print("Import theano")
    from sidekit.nnet.feed_forward import FForwardNetwork

Anthony Larcher's avatar
Anthony Larcher committed
139

Anthony Larcher's avatar
Anthony Larcher committed
140
from sidekit.sv_utils import clean_stat_server
Anthony Larcher's avatar
Anthony Larcher committed
141

Anthony Larcher's avatar
svm    
Anthony Larcher committed
142
libsvm_loaded = False
Anthony Larcher's avatar
Anthony Larcher committed
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
if SIDEKIT_CONFIG["libsvm"]:
    try:
        dirname = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'libsvm')
        if sys.platform == 'win32':
            libsvm = CDLL(os.path.join(dirname, r'libsvm.dll'))
            libsvm_loaded = True
        else:
            libsvm = CDLL(os.path.join(dirname, 'libsvm.so.2'))
            libsvm_loaded = True
    except:
        # For unix the prefix 'lib' is not considered.
        if find_library('svm'):
            libsvm = CDLL(find_library('svm'))
            libsvm_loaded = True
        elif find_library('libsvm'):
            libsvm = CDLL(find_library('libsvm'))
            libsvm_loaded = True
        else:
            libsvm_loaded = False
            logging.warning('WARNNG: libsvm is not installed, please refer to the' +
                            ' documentation if you intend to use SVM classifiers')
Anthony Larcher's avatar
svm    
Anthony Larcher committed
164
165
166
167
168
169

if libsvm_loaded:
    from sidekit.libsvm import *
    from sidekit.svm_scoring import *
    from sidekit.svm_training import *

Anthony Larcher's avatar
Anthony Larcher committed
170
171
172
173

if SIDEKIT_CONFIG["mpi"]:
    found_mpi4py = importlib.find_loader('mpi4py') is not None
    if found_mpi4py:
Anthony Larcher's avatar
Anthony Larcher committed
174
        from sidekit.sidekit_mpi import EM_split, total_variability, extract_ivector
Anthony Larcher's avatar
Anthony Larcher committed
175
176
177
        print("Import MPI")
        

Anthony Larcher's avatar
Anthony Larcher committed
178
179
__author__ = "Anthony Larcher and Sylvain Meignier"
__copyright__ = "Copyright 2014-2016 Anthony Larcher and Sylvain Meignier"
Anthony Larcher's avatar
Initial  
Anthony Larcher committed
180
181
182
183
184
__license__ = "LGPL"
__maintainer__ = "Anthony Larcher"
__email__ = "anthony.larcher@univ-lemans.fr"
__status__ = "Production"
__docformat__ = 'reStructuredText'
Anthony Larcher's avatar
Anthony Larcher committed
185
__version__="1.2"
Anthony Larcher's avatar
Initial  
Anthony Larcher committed
186

Anthony Larcher's avatar
Anthony Larcher committed
187
188
189
190
191
# __all__ = ["io",
#            "vad",
#            "normfeat",
#            "features"
#            ]