File: s2_4x.py

package info (click to toggle)
sphinxtrain 5.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 32,572 kB
  • sloc: ansic: 94,052; perl: 8,939; python: 6,702; cpp: 2,044; makefile: 6
file content (48 lines) | stat: -rw-r--r-- 1,566 bytes parent folder | download
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
# Copyright (c) 2006 Carnegie Mellon University
#
# You may copy and modify this freely under the same terms as
# Sphinx-III

"""Compute Sphinx-II 4-stream features.

This module provides a compute() function to compute 52-dimensional
4-stream features consisting of cepstra and their first and second
time derivatives, and the C0 values. This is the default feature type
used for PocketSphinx and Sphinx-II semi-continuous acoustic models.
"""

__author__ = "David Huggins-Daines <dhuggins@cs.cmu.edu>"
__version__ = "$Revision$"

from numpy import zeros, concatenate

def compute(mfcc):
    """Compute 52-dimensional 4-stream features consisting of cepstra
     and their first and second time derivatives, and the C0 values."""
    r, c = mfcc.shape

    # Pad the features to compute dcep, ddcep
    pad = concatenate((zeros((5,c)), mfcc, zeros((5,c))))

    # Now create the output array
    feat = (zeros((r, c-1),'d'),
            zeros((r, (c-1)*2),'d'),
            zeros((r, 3),'d'),
            zeros((r, c-1),'d'))

    # cep (without C0)
    feat[0][:] = mfcc[:,1:]
    
    # dcep = mfc[2] - mfc[-2] : mfc[4] - mfc[-4]
    feat[1][:, 0:12] = (pad[7:-3,1:] - pad[3:-7,1:])
    feat[1][:, 12:]  = (pad[9:-1,1:] - pad[1:-9,1:])

    # ddcep = (mfc[3] - mfc[-1]) - (mfc[1] - mfc[-3])
    feat[3][:] = (pad[8:-2,1:] - pad[4:-6,1:]) - (pad[6:-4,1:] - pad[2:-8,1:])

    # pow = C0,D0,DD0
    feat[2][:,0] = mfcc[:,0]
    feat[2][:,1] = (pad[7:-3,0] - pad[3:-7,0])
    feat[2][:,2] = (pad[8:-2,0] - pad[4:-6,0]) - (pad[6:-4,0] - pad[2:-8,0])

    return feat