Edinburgh Speech Tools
2.4-release
Loading...
Searching...
No Matches
esps_utils.h
1
/*************************************************************************/
2
/* */
3
/* Centre for Speech Technology Research */
4
/* University of Edinburgh, UK */
5
/* Copyright (c) 1996 */
6
/* All Rights Reserved. */
7
/* */
8
/* Permission is hereby granted, free of charge, to use and distribute */
9
/* this software and its documentation without restriction, including */
10
/* without limitation the rights to use, copy, modify, merge, publish, */
11
/* distribute, sublicense, and/or sell copies of this work, and to */
12
/* permit persons to whom this work is furnished to do so, subject to */
13
/* the following conditions: */
14
/* 1. The code must retain the above copyright notice, this list of */
15
/* conditions and the following disclaimer. */
16
/* 2. Any modifications must be clearly marked as such. */
17
/* 3. Original authors' names are not deleted. */
18
/* 4. The authors' names are not used to endorse or promote products */
19
/* derived from this software without specific prior written */
20
/* permission. */
21
/* */
22
/* THE UNIVERSITY OF EDINBURGH AND THE CONTRIBUTORS TO THIS WORK */
23
/* DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING */
24
/* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT */
25
/* SHALL THE UNIVERSITY OF EDINBURGH NOR THE CONTRIBUTORS BE LIABLE */
26
/* FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES */
27
/* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN */
28
/* AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, */
29
/* ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF */
30
/* THIS SOFTWARE. */
31
/* */
32
/*************************************************************************/
33
/* Author : Alan Black */
34
/* Date : June 1996 */
35
/*-----------------------------------------------------------------------*/
36
/* Licence free version of esps file i/o functions: headers */
37
/* */
38
/*=======================================================================*/
39
#ifndef __ESPS_IO_H__
40
#define __ESPS_IO_H__
41
42
#define ESPS_MAGIC 27162
43
struct
ESPS_PREAMBLE
{
44
int
machine_code;
/* the machine that generated this (4 is sun) */
45
int
check_code;
/* dunno */
46
int
data_offset;
/* offset from start to start of data records */
47
int
record_size;
/* data record size in bytes */
48
int
check;
/* ESPS magic number */
49
int
edr;
/* byte order independent order or native */
50
int
fil1;
/* dunno */
51
int
foreign_hd;
/* foreign header -- not supported */
52
};
53
struct
ESPS_FIXED_HDR
{
54
short
thirteen;
/* seems to be always 13 */
55
short
sdr_size;
/* always 0 */
56
int
magic;
/* magic number again */
57
char
date[26];
/* file creation date */
58
char
version[8];
/* header version */
59
char
prog[16];
/* program used to create file */
60
char
vers[8];
/* program version */
61
char
progcompdate[26];
/* when that program was compile d */
62
int
num_samples;
/* number of samples (can be 0) */
63
int
filler;
64
int
num_doubles;
/* num of doubles in record */
65
int
num_floats;
66
int
num_ints;
67
int
num_shorts;
68
int
num_chars;
69
int
fsize;
/* always 40 */
70
int
hsize;
/* wish I knew, it does vary */
71
char
username[8];
/* user who created this file */
72
int
fil1[5];
/* dunno */
73
short
fea_type;
/* may be */
74
short
fil2;
75
short
num_fields;
/* number of fields in a record */
76
short
fil3;
77
int
fil4[9];
/* a bunch of numbers that look like addresses */
78
int
fil5[8];
/* all zeros */
79
};
80
81
struct
ESPS_FEA_struct
{
82
short
type;
83
short
clength;
84
char
*name;
85
int
count;
86
short
dtype;
87
union
88
{
89
int
*ival;
90
char
*cval;
91
float
*fval;
92
double
*dval;
93
short
*sval;
94
} v;
95
struct
ESPS_FEA_struct
*next;
96
};
97
typedef
struct
ESPS_FEA_struct
*
esps_fea
;
98
99
/* FEA files consist of record which can contain fields (off different */
100
/* data types) The following is used to represent arbitrary records */
101
/* names of the records are given in the header structure */
102
struct
ESPS_FIELD_struct
{
103
int
type;
104
int
dimension;
105
union
106
{
107
int
*ival;
108
char
*cval;
109
float
*fval;
110
double
*dval;
111
short
*sval;
112
} v;
113
};
114
typedef
struct
ESPS_FIELD_struct
*
esps_field
;
115
116
struct
ESPS_REC_struct
{
117
int
num_fields;
118
int
size;
119
esps_field
*field;
120
};
121
typedef
struct
ESPS_REC_struct
*
esps_rec
;
122
123
enum
esps_file_type {ESPS_FEA, ESPS_SD, ESPS_SPGRAM, ESPS_FILT};
124
125
/* This is what the user gets/gives, just the useful information */
126
struct
ESPS_HDR_struct
{
127
enum
esps_file_type file_type;
128
int
swapped;
/* byte order in file */
129
int
hdr_size;
/* full size of file header in bytes */
130
int
num_records;
131
int
num_fields;
132
char
**field_name;
133
short
*field_type;
134
int
*field_dimension;
135
esps_fea
fea;
/* list of FEA */
136
};
137
typedef
struct
ESPS_HDR_struct
*
esps_hdr
;
138
139
#define ESPS_DOUBLE 1
140
#define ESPS_FLOAT 2
141
#define ESPS_INT 3
142
#define ESPS_SHORT 4
143
#define ESPS_CHAR 5
/* I doubt I'm treating char and byte appropriately */
144
#define ESPS_CODED 7
/* enumerated type. Same size as short */
145
#define ESPS_BYTE 8
146
/* There are others too including COMPLEX ones */
147
148
/* Some random numbers on FEA records */
149
#define ESPS_FEA_FILE 1
150
#define ESPS_FEA_DIRECTORY 15
151
#define ESPS_FEA_COMMAND 11
152
153
esps_fea
new_esps_fea(
void
);
154
void
delete_esps_fea(
esps_fea
r);
155
void
print_esps_fea(
esps_fea
r);
156
esps_fea
read_esps_fea(
FILE
*fd,
esps_hdr
hdr
);
157
void
write_esps_fea(
FILE
*fd,
esps_fea
t,
esps_hdr
hdr
);
158
esps_hdr
make_esps_hdr(
void
);
159
esps_hdr
make_esps_sd_hdr(
void
);
160
void
delete_esps_hdr(
esps_hdr
h);
161
enum
EST_read_status read_esps_hdr(
esps_hdr
*
hdr
,
FILE
*fd);
162
enum
EST_write_status write_esps_hdr(
esps_hdr
hdr
,
FILE
*fd);
163
164
int
fea_value_d(
const
char
*name,
int
pos,
esps_hdr
hdr
,
double
*d);
165
int
fea_value_f(
const
char
*name,
int
pos,
esps_hdr
hdr
,
float
*d);
166
int
fea_value_s(
const
char
*name,
int
pos,
esps_hdr
hdr
,
short
*d);
167
int
fea_value_i(
const
char
*name,
int
pos,
esps_hdr
hdr
,
int
*d);
168
int
fea_value_c(
const
char
*name,
int
pos,
esps_hdr
hdr
,
char
*d);
169
170
double
get_field_d(
esps_rec
r,
int
field,
int
pos);
171
float
get_field_f(
esps_rec
r,
int
field,
int
pos);
172
int
get_field_i(
esps_rec
r,
int
field,
int
pos);
173
short
get_field_s(
esps_rec
r,
int
field,
int
pos);
174
char
get_field_c(
esps_rec
r,
int
field,
int
pos);
175
void
set_field_d(
esps_rec
r,
int
field,
int
pos,
double
d);
176
void
set_field_f(
esps_rec
r,
int
field,
int
pos,
float
d);
177
void
set_field_i(
esps_rec
r,
int
field,
int
pos,
int
d);
178
void
set_field_s(
esps_rec
r,
int
field,
int
pos,
short
d);
179
void
set_field_c(
esps_rec
r,
int
field,
int
pos,
char
d);
180
esps_rec
new_esps_rec(
esps_hdr
hdr
);
181
void
delete_esps_rec(
esps_rec
r);
182
int
read_esps_rec(
esps_rec
r,
esps_hdr
h,
FILE
*fd);
183
int
write_esps_rec(
esps_rec
r,
esps_hdr
h,
FILE
*fd);
184
185
void
add_field(
esps_hdr
hdr
,
const
char
*name,
int
type,
int
dimension);
186
void
add_fea_d(
esps_hdr
hdr
,
const
char
*name,
int
pos,
double
d);
187
void
add_fea_s(
esps_hdr
hdr
,
const
char
*name,
int
pos,
short
d);
188
void
add_fea_i(
esps_hdr
hdr
,
const
char
*name,
int
pos,
int
d);
189
void
add_fea_f(
esps_hdr
hdr
,
const
char
*name,
int
pos,
float
d);
190
void
add_fea_c(
esps_hdr
hdr
,
const
char
*name,
int
pos,
char
d);
191
void
add_fea_special(
esps_hdr
hdr
,
int
type,
const
char
*name);
192
193
#endif
/* __ESPS_IO_H__ */
194
195
EST_Hash_Pair
Definition
EST_THash.h:75
ESPS_FEA_struct
Definition
esps_utils.h:81
ESPS_FIELD_struct
Definition
esps_utils.h:102
ESPS_FIXED_HDR
Definition
esps_utils.h:53
ESPS_HDR_struct
Definition
esps_utils.h:126
ESPS_PREAMBLE
Definition
esps_utils.h:43
ESPS_REC_struct
Definition
esps_utils.h:116
speech_class
esps_utils.h
Generated on Wed Jan 29 2025 14:56:50 for Edinburgh Speech Tools by
1.9.8