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

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.