Any research in the area of signal processing requires the development
of large applications in a relatively short period of time.
Unfortunately, research commonly suffers from a creative backlog due
to rewriting of common functions, and the time spent in debugging such
things as file I/O. It would be ideal to have a large, hierarchical
software environment which can support advanced research in signal
processing. The ISIP Foundation Classes (IFCs) and software
environment are designed to meet this need, providing everything from
complex data structures to an abstract file I/O interface. This
software environment starts from the lowest, the operating system
(/system), and culminates in a state-of-the-art public domain large
vocabulary speech recognition system.
Some significant features of the ISIP software environment include
-
unicode compatibility and wide character support to allow
multilingual applications
-
abstract interface for file i/o
-
well-equipped library of DSP functions
-
advanced mathematical classes to provide linear algebra and
efficient matrix operations
The hierarchical structure of the software environment is shown below.
The libraries are listed in the order in which they are used
to link programs (bottom to top):
System-Level (/system):
|
Integral Datatypes, Error Handling, Operating System Support
(e.g., Console, Error, File, Integral, MemoryManager, Console, SysString)
|
Input/Output/Files (/io):
|
File Handlers, Parsers, Lists, and Symbol Tables
(e.g., Sof, SofList, SofParser, SofSymbolTable)
|
Math Scalars (/math/scalar):
|
Scalar Template, Scalar-Valued Math Objects, Strings
(e.g., MScalar, MComplexScalar, Char, ComplexFloat, Float, String)
|
Math Vector (/math/vector):
|
Vector Template, Math Vector Objects
(e.g., MVector, VectorByte, VectorComplexFloat, VectorFloat)
|
Math Matrix (/math/matrix):
|
Matrix Template, Math Matrix Objects
(e.g., MMatrix, MatrixByte, MatrixComplexFloat, MatrixFloat)
|
Numeric (/numeric):
|
General Numerical Analysis, Linear Algebra, Optimization
(e.g., Bark, Bessel, LinearAlgebra, NonlinearOptimization, Sigmoid)
|
Data Structures (/dstr):
|
Data Structure Templates, Graphs, Ntuples, and Wrappers
(e.g., BiGraph, DoubleLinkedList, GraphVertex, HashTable, Vector)
|
Shell Interactions (/shell):
|
Shell Interactions, Filename and File Database Processing
(e.g., CommanLine, DebugLevel, Filename, and Sdb)
|
Multimedia (mmedia):
|
External File Format Conversions and Parsing
(e.g., AnnotationGraph, AudioFile, JSGFParser, TranscriptionDatabase)
|
Statistics (/stat):
|
Standard Statistical Models and Functions, Mixtures
(e.g., GaussianModel, MixtureModel, StatisticalModel, UniformModel)
|
Algorithms (/algo):
|
Digital Signal Processing Algorithms, Signal Generation and Modeling
(e.g., Correlation, Energy, FourierTransform, Statistics, Window)
|
Signal Processing (/sp):
|
Feature Extraction, Front End Processing, and Recipes
(e.g., AudioFrontEnd, FrontEnd, FtrBuffer, Recipe, RecipePool)
|
Search Algorithms (/search):
|
Hierarchical Search, Viterbi Beam Search, Lexical Trees, and N-grams
(e.g., HierarchicalSearch, Histroy, LexicalTree, Ngram, SearchLevel)
|
Pattern Recognition (/pr):
|
Stochastic Modeling Techniques, Machine Learning, Language Modeling
(e.g., HiddenMarkovModel, LanguageModel, RelevanceVectorMachine)
|
Speech Recognition (/asr):
|
Recognition Architectures and Engines for Speech Signals
(e.g., SpeechRecognizer)
|
The system library is desgined to insulate users from the
operating system. The I/O library provides the same type of
abstraction for files. Most users will interact with the environment
starting at the math/scalar library level.
Each library in the above table is linked to a short description
of the library, including a tutorial on how to use the classes in
that library.