📄 intro.doc
字号:
ENTROPIC RESEARCH LABORATORY, INC. INTRODUCTION TO THE ENTROPIC SIGNAL PROCESSING SYSTEM (ESPS) John Shore and Alan Parker Entropic Research Laboratory, Inc. Washington Research Laboratory 600 Pennsylvania Ave. S.E., Suite 202 Washington, D.C. 20003 (202)547-1420 1 . INTRODUCTION The Entropic Signal Processing System (ESPS) is a set of interacting signal processing programs. It is a third-generation system that was developed over a three-year period with these main goals: + to provide a useful set of easy-to-use programs for direct sup- port of such traditional operations as analog I/O, filtering, spectrum analysis, quantization, pattern classification, signal editing, file editing, plotting, etc; + to provide a toolkit that supports the rapid development of new signal processing programs; + to exploit UNIXr| tools and features (e.g., pipes) + to facilitate record keeping in such a way that ESPS files con- tain a complete history of the origin of the data in the file and of all intermediate processing steps; + to allow easy user-extensions to ESPS file types (including the creation of new file types) in such a way that the extensions are supported automatically by standard ESPS plotting, printing, editing, and database programs; ____________________ c Copyright 1987-1993 Entropic Research Laboratory, Inc.; All rights reserved. INTRODUCTION TO ESPS page 2 ESPS currently includes approximately 85 user-level programs (called from the UNIX shell) for file manipulation, sampled-data I/O, plot- ting, and signal processing operations. Also included is a library of approximately 200 functions that support the modification of existing programs and the development of new programs. The ESPS library con- tains functions that perform signal processing primitives as well as functions that support the creation and manipulation of ESPS files. ESPS provides 5 built-in file types; it also provides the ability to modify these file types and to create new file types. The ESPS library was developed with disciplined software engineering methods, including information-hiding. The library functions perform extensive error-checking, and a complete LINT library is included. ESPS main programs and most of the library functions are written in C. However, the ESPS library also supports FORTRAN so that new signal processing operations can be written either in C or FORTRAN. 2 . ESPS DOCUMENTATION The principal documentation for ESPS is the ESPS Users Manual. [1] This contains UNIX-style manual pages for all programs, library func- tions, and file types. The ESPS Manual is organized in the usual UNIX style, with Section 1 describing user-level programs, Section 3 describing the ESPS library, and Section 5 describing ESPS file for- mats. Section 3 is further divided into two sections, one for signal processing functions and one for ESPS utility functions. References to ESPS programs, library functions, and file types usually include a parenthetical pointer to the section of the ESPS Manual in which the manual page is located. For example, "(3-ESPS)" indicates Section 3 of the ESPS Manual. The entire ESPS Manual is available on-line and can be viewed with the eman (1-ESPS) program, which operates just like the UNIX man (1) pro- gram (including the -k option to search for programs whose descrip- tions contain a given keyword). The ESPS documentation also includes a series of technical memoranda that explain ESPS data files, [2] ESPS parameter and common files, [3] and ESPS feature files, [4] files. Also provided are ESPS program- ming guidelines, [5] an applications note on filtering, [6] and an applications note on ESPS record keeping. [7] 3 . ESPS FILES ESPS files have a common structure consisting of a variable-length header followed by data records. Within a single ESPS file, the records have a fixed-length that depends on information in the header. Record-lengths vary, however, even among files of the same basic type. ____________________ | UNIX is a trademark of AT&T Bell Laboratories Version 3.6 ERL 1/22/93 INTRODUCTION TO ESPS page 3 The ESPS header is the primary means by which record-keeping is per- formed within ESPS. An ESPS header includes the values of all impor- tant parameters to the program that created the ESPS file. It also includes the headers of any files that were inputs to the program that created the file. Since the header is a recursive structure, these included headers themselves may contain the headers of previous source files. It follows that most ESPS files contain a complete history of the origin of the data in the file and all the intermediate processing steps. In addition to this formal record-keeping mechanism, informal comments can be added to any ESPS file header by means of comment (1-ESPS). For details about the ESPS history mechanism, see the applications note. [7] ESPS file headers and data records are viewed in ASCII form by means of the program psps (1-ESPS), which includes options for viewing recursively all of the embedded headers. The output from psps identi- fies values from header and data-records fields by name. Within pro- grams, the fields are also referred to by name. On some systems, ESPS files can be created directly from analog inputs and played out over digital to analog converters. Also, conversion programs are available for ASCII files, ILSr| sampled-data files, and MASSCOMPr Laboratory Workbench (LWB)| files. 3 .1 . Built-in File Types Older versions of ESPS contained the following built-in file types: SD contains sampled data FILT contains digital filters SCBK contains scalar quantization codebooks FEA contains arbitrary features Except for FEA files, which are discussed further below, these built- in files have a predefined record structure. That is, their data records comprise fields with pre-defined names and data types. The definitions are suitable for the types of data stored in these built- in file types. Similarly, the headers of the built-in types contain pre-defined fields for relevant information. However, any program can add additional header fields through the use of generic header items (see Section 7.1.3). Generic header items can also be added by means of the user-level program addgen (1-ESPS). ____________________ | ILS is a trademark of Signal Technology, Inc. | MASSCOMP and LWB are trademarks of Massachusetts Computer Corporation. Version 3.6 ERL 1/22/93 INTRODUCTION TO ESPS page 4 Section 5 of the ESPS Manual contains detailed information about what is stored in the various ESPS file types. 3 .2 . Feature Files and User-Defined File Types The current version of ESPS uses feature files for all data. The FEA file type is a general purpose file type that can be used to store arbitrary information in fixed-length records; optionally, the records can point to positions in various source files. Unlike the case for the other ESPS file types - the names, sizes, and data types of the fields in FEA records are not pre-defined. Because of this, and because of the ways in which FEA files are supported by standard ESPS file manipulation and plotting programs, FEA files can be used to create user-defined ESPS files that have all of the advantages of the built-in file types. This can be done by using the ESPS library whether or not ESPS source is available. [4] We call FEA files self-describing because the structure of a FEA file is defined in the file header, rather than in some external specifica- tion. In particular, the self-description portion of the FEA header is contained in the type-specific section of the header, and is displayed by fea_element (1-ESPS), or by psps (1-ESPS) withthe -v option. In many cases, non-ESPS binary files can be converted to ESPS FEA files using addfeahd (1-ESPS). When a new file type is implemented using FEA files, it is referred to as a FEA file sub-type. Several such implementations are provided with ESPS, including the following: FEA_SD used for single and multi-channel sampled data (including com- plex sampled data). FEA_SPEC used for storing spectral information, such as power spectra. Each record contains a vector of spectral values (powers or power densities in the case of power spectra), together with certain optional fields - total power, an imaginary-part vec- tor, number of frequencies, and a vector of frequencies - that are present or absent according to the values of certain header items; FEA_ANA suitable for speech processing; contains spectral parameters (various representations), pulse lengths, powers, and voicing information; FEA_VQ contains vector quantization codebooks; FEA_FILT contains digital filters; Version 3.6 ERL 1/22/93 INTRODUCTION TO ESPS page 5 FEA_STAT contains statistical information (means, covariances, etc.) suitable for pattern-classification; By using access functions provided with the ESPS Library, users can implement their own FEA file sub-types. They can also extend existing FEA file types, like those mentioned above, by adding whatever addi- tional record fields are desired. The power of FEA files is enhanced by the existence of ESPS programs like the following, which work on any FEA file (including user-defined or user-extended FEA files): psps(1-ESPS) produces ASCII representation of any ESPS file (including headers), with all fields referred to by name; genplot(1-ESPS) plots information from FEA file records in precise, multi-line format; fea_edit(1-ESPS) permits you to edit an ASCII representation of a FEA file using the editor of your choice; Thus, you can modify the data in an existing FEA file or create a new file with arbitrary data. Both file headers and data records can be edited with fea_edit. select(1-ESPS) treats ESPS FEA files as a database and allows interactive selection of records that satisfy user-supplied queries; selected records can be output to another FEA file; Here are some examples of queries on an input FEA_ANA file: ->select (spec_param[0] > .96) && (frame_type == "VOICED") 123 records selected ->select ((spec_param[0] + spec_param[1]) > 1.5) && (frame_len > 100) 21 records selected ->select (spec_param[0] > spec_param[1]) && (log(sqrt(raw_power[0])) > 7) 13 records selected ->select (mean(raw_power) > 1.75E10) || (raw_power[0] > 1.75E10) 100 records selected Here, "spec_param", "frame_type", "frame_len", and "raw_power" are the names of fields in a FEA_ANA file. Similar queries can be constructed for any FEA file using the names of fields in the FEA file. Queries can be constructed using simple rela- tional expressions involving the elements in FEA records, built-in arithmetic operators (*,+,-,/,^), built in functions (sin, cos, tan, atan, log, log10, exp, sqrt), and user-defined functions implemented as external programs. Also, the "eval" Version 3.6 ERL 1/22/93 INTRODUCTION TO ESPS page 6 command in select allows you to specify arbitrary arithmetic expressions on the FEA fields and have the results printed on standard output. fea_stat(1-ESPS) Computes means, covariances, eigenvalues, eigenvectors, and other statistics from the records in a FEA file; outputs a FEA_STAT file; classify(1-ESPS) performs classification of FEA file records using information in FEA_STAT files; Another useful aspect of FEA files is a mechanism called "segment labelling", which makes it easy to associate FEA file records with positions or ranges in sampled-data files. If a FEA file is declared to be segment-labelled, then its records automatically include file name, starting position, and length fields (these need to be filled in by user programs, but the field support is there). This mechanism could be used, for example, to support a database of phonetically- labelled sampled data files by implementing a FEA file containing a phoneme code (or string) in each segment-labelled record. Then select(1-ESPS) could be used to process sets of these files. For example, the select command ->select phoneme == "AW" || phoneme == "OW" would yield records that provide file names, starting positions, and lengths for all occurrences of the two named phonemes. 4 . ESPS PROGRAMS AND UNIX PIPES So that pipes can be used, most ESPS programs are written so that they use standard input and output as well as specific files. As an exam- ple, consider the following sequence of ESPS commands: %refcof data.sd data.fana %me_spec data.fana data.spec %plotspec data.spec The first command causes the reflection coefficients computed from data frames in the SD file data.sd to be placed in the FEA_ANA file data.fana. The second command computes spectra for each set of reflection coefficients and puts the results in the SPEC file data.spec. The third command plots all the spectra on the screen using a single set of axes. If there is no need to retain the inter- mediate FEA_ANA and FEA_SPEC files, one could do the following instead: %refcof data.sd - | me_spec - - | plotspec - Version 3.6 ERL 1/22/93
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -