/usr/include/torch/IOHTK.h is in libtorch3-dev 3.1-2.1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 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 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | // Copyright (C) 2003--2004 Johnny Mariethoz (Johnny.Mariethoz@idiap.ch)
//
// This file is part of Torch 3.1.
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. The name of the author may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef IO_HTK_INC
#define IO_HTK_INC
#include "IOSequence.h"
#include "DiskXFile.h"
namespace Torch {
// HTK File Header
struct HTKHeader {
long n_samples;
long sample_period;
short sample_size;
short sample_kind;
};
#define BASEMASK 077 /* Mask to remove qualifiers */
#define HASENERGY 0100 /* _E log energy included */
#define HASNULLE 0200 /* _N absolute energy suppressed */
#define HASDELTA 0400 /* _D delta coef appended */
#define HASACCS 01000 /* _A acceleration coefs appended */
#define HASCOMPX 02000 /* _C is compressed */
#define HASZEROM 04000 /* _Z zero meaned */
#define HASCRCC 010000 /* _K has CRC check */
#define HASZEROC 020000 /* _0 0'th Cepstra included */
#define HASVQ 040000 /* _V has VQ index attached */
enum _BaseParmKind{
WAVEFORM, /* Raw speech waveform (handled by HWave) */
LPC,LPREFC,LPCEPSTRA,LPDELCEP, /* LP-based Coefficients */
IREFC, /* Ref Coef in 16 bit form */
MFCC, /* Mel-Freq Cepstra */
FBANK, /* Log Filter Bank */
MELSPEC, /* Mel-Freq Spectrum (Linear) */
USER, /* Arbitrary user specified data */
DISCRETE, /* Discrete VQ symbols (shorts) */
ANON
};
typedef short ParmKind; /* BaseParmKind + Qualifiers */
/** Handles the standard binary sequence format in HTK.
@see IOBin
@author Johnny Mariethoz (Johnny.Mariethoz@idiap.ch)
*/
class IOHTK : public IOSequence
{
private:
DiskXFile *file;
int current_frame_index;
void readHeader(XFile* file);
public:
bool one_file_is_one_sequence;
int n_total_frames;
char *filename;
int max_load;
bool is_sequential;
/// Contain the htk header informations
HTKHeader* header;
/** Reads the sequence contained in #filename#.
If #one_file_is_one_sequence# is false, #getSequence()# will return one sequence
with one frame at each call. (If calling #getSequence(t, foo)#,
it will put in the sequence #foo# the frame corresponding to the line #t# of the file).
Note also that if #one_file_is_one_sequence# is false, the access to the IO must be
sequential when calling #getSequence()# if #is_sequential# is true. (Sequential mode
is faster).
If #max_load_# is positive, it loads only the first #max_load_# frames,
if #one_file_is_one_sequence# is false.
The file will be opened when reading the first sequence, and closed when reading the
last one if #is_sequential# is true. Otherwise, the file will be opened and closed
each time you call #getSequence()#.
*/
IOHTK(const char *filename_, bool one_file_is_one_sequence_=false, int max_load_=-1, bool is_sequential_=false);
/// Saves #sequence# in #file# using the HTK format.
static void saveSequence(XFile *file, Sequence *sequence, HTKHeader* header_);
virtual void getSequence(int t, Sequence *sequence);
virtual int getNumberOfFrames(int t);
virtual int getTotalNumberOfFrames();
virtual ~IOHTK();
/// HTK source code
char* parmKind2Str(ParmKind kind, char *buf);
ParmKind str2ParmKind(char *str);
ParmKind baseParmKind(ParmKind kind);
bool hasEnergy(ParmKind kind);
bool hasDelta(ParmKind kind) ;
bool hasAccs(ParmKind kind) ;
bool hasNulle(ParmKind kind) ;
bool hasCompx(ParmKind kind) ;
bool hasCrcc(ParmKind kind) ;
bool hasZerom(ParmKind kind) ;
bool hasZeroc(ParmKind kind) ;
bool hasVQ(ParmKind kind) ;
};
}
#endif
|