Mercurial > hg > aim92
diff docs/aimFileFormats @ 0:5242703e91d3 tip
Initial checkin for AIM92 aimR8.2 (last updated May 1997).
author | tomwalters |
---|---|
date | Fri, 20 May 2011 15:19:45 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/aimFileFormats Fri May 20 15:19:45 2011 +0100 @@ -0,0 +1,166 @@ + + +Appendix C Output File Formats + +This Appendix describes the format of output from the ASP modules, for +users who wish to process this output with another program of their own. +For example, gensai produces a stabilised auditory image which is suitable +as input to a speech recognition system. In most cases the output file +will probably require an additional processing step before it may be used +by another program. + +Each ASP module produces an output file in response to the -output option. +These output files consist of a header (containing information concerning +the makeup and history of the file) followed by a series of 16-bit data +items which represent the actual data contained in the file. + +There are two obvious ways in which such a data file may be used as input +to a user's own program; firstly, the user's program may be adapted to read +and interpret the header of ASP output files before actually processing the +data in them, and secondly, the header may be removed and the relevant +information entered into the user's program manually before it proceeds to +process the data section of the ASP output file. The former of these +techniques is preferable in many ways, providing consistency and insulating +the user from the details of ASP headers, although it may require some +effort to alter the user's program to correctly process these headers. The +second method may be preferable if the user is merely interested in testing +the ASP software's suitability as a preprocessor for their program, or if +the program in question cannot be altered (either because it was purchased +from someone else, or because it would be too complicated to change it). + +The second method merely requires a reliable way to separate an ASP output +file into header and data sections, and the user must then 'translate' the +information in the header into the terms understood by the parameters of +his/her program. To this end, the ASP package includes two programs called +head and tail which take an ASP output file as their argument and produce +another file containing its header and data sections, respectively. The +header is adapted to resemble very closely an ASP module's options file, +and ought to be easily understood by anyone familiar with the ASP modules +and the way in which they are used. As far as translation concepts from +ASP to another program is concerned, we can only volunteer this +documentation as a guide to the interpretation of each ASP option. + +The former of the two methods requires rather more detailed understanding +of the output file structure, and this discussion will be divided into two +parts, one on the header and the other on the data itself. + +Head and Tail + +For users who wish to remove the header part of an ASP output file, the +software includes two programs called head and tail which take an ASP +output file as their argument and produce another file containing its +header and data sections, respectively. The header is adapted to resemble +very closely an ASP module's options file, and ought to be easily +understood by anyone familiar with the ASP modules and the way in which +they are used. As far as translation of concepts from ASP to another +program is concerned we can only volunteer this documentation as a guide to +the interpretation of each ASP option. + +Whichever method the user chooses in combining ASP output files with their +own programs, some information regarding the types and format of +information in ASP output modules will be needed. Discussion of the +structure of the output files will be divided into two sections, one on the +header and the other on the data itself. + +The header + +Each ASP module's output file contains a header which provides information +about the origin and history of the data in the file. This information is +used by subsequent modules in the ASP hierarchy, as described in Appendix +B. The header is a sequence of ASCII characters (and is thus readable, so +even using more on the output file would produce sensible text for the +duration of the header). This sequence is divided into three parts. + +1 An identifying line. + +2 A series of option setting lines. + +3 NULL (ASCII 0) character. + +The identifying line is a means of determining, from the first few +characters in a file, whether that file is in fact an ASP output file. It +also is used for determining the length of the header as a whole; thus, +each output file begins with a string such as: + +header_bytes=0000709 + +where header_bytes is the identifying string (which actually descended from +the 'pipes' signal processing language) and the header is 709 bytes long. +The length of the header includes the identifying line and the final NULL +character. + +Each option setting line is of the form: + +<option name>=<option value> + +and these lines taken together will closely resemble a normal ASP options +file, although there may be some options which are not familiar to even an +experienced ASP user. These options are 'hidden' ones which are passed +between ASP modules, but which are of no interest to users of the software. + They may, however, be of interest to programmers who wish to take ASP +output as input to their own programs, so a complete list of these hidden +options is given at the end of this Appendix. + +The data + +The structure of the actual data section of an ASP output file will be +dependent on the ASP module which produced it. Since we are then committed +to describing each of the output structures in detail, we will begin with +the data structure that ASP modules expect in input waveforms. + +Input waveform structure + +For convenience, the ASP software assumes that input waveforms do not have +headers of any form. The only information about the structure of an input +waveform that is required relates to the samplerate at which the waveform +was generated or collected, and the number of significant bits that are in +the data. These two attributes are taken as options which must be entered +by the user, but they could just as easily be viewed as the contents of a +suitable header for a waveform. The actual data section of a waveform +consists of a single stream of (16-bit, or 'short') integers whose length +determines the actual length, in points, of the waveform. To view the +waveform only the user can use genwav. + +Basilar membrane motion output structure + +The genbmm module takes a waveform of the structure defined above and +produces the basilar membrane motion corresponding to this input waveform +by using a gammatone filter bank. The output data is expressed as the +multiplexed output of a series of channels, one per channel in the filter +bank. Thus the first n data points (where n is the number of channels) in +the output correspond to the first output data point for each of the n +channels, beginning with the highest frequency channel and ending with +lowest. The second batch of n data points in the output file correspond to +the second data point for each of the n channels in turn, and so on. There +will be m of these n-data item segments, where m is the length of the input +file in data points, and the length of a sgm output file will thus be the m +x n, which may obviously be quite large. + +Prepended to this data is a header which contains information related to +the way in which the data was produced. Some of this information was +supplied by the user of the genbmm program (eg samplerate, length_wave, +mincf_afb, etc) and some was derived from other sources (eg channels and +pointsperchannel, which were computed by genbmm from the mincf_afb, +maxcf_afb, dencf_afb, and length_wave options). + +Cochleogram output structure + +The output of gencgm is of identical structure to that of genbmm, although +of course the header will contain extra information related to how the +cochleogram was generated. + +Stablised auditory image output structure + +The output of gensai is a series of 'frames', one per graphical image that +is displayed by gensai and revsai. Each of these frames has the structure +of an entire data section of a genbmm or gencgm output file. Thus the .sai +data is structured as a series of multiplexed waveforms. The size of a +.sai file will be m x n x f, where f is the number of frames generated by +gensai, and is thus likely to be huge. Again, the header will have +additional information related to the generation of the stabilised auditory +image. + + + + +