Neural Network Audio Scene Classifier for Hearing Implants

20230226352 · 2023-07-20

    Inventors

    Cpc classification

    International classification

    Abstract

    An audio scene classifier classifies an audio input signal from an audio scene and includes a pre-processing neural network configured for pre-processing the audio input signal based on initial classification parameters to produce an initial signal classification, and a scene classifier neural network configured for processing the initial scene classification based on scene classification parameters to produce an audio scene classification output. The initial classification parameters reflect neural network training based on a first set of initial audio training data, and the scene classification parameters reflect neural network training on a second set of classification audio training data separate and different from the first set of initial audio training data. A hearing implant signal processor configured for processing the audio input signal and the audio scene classification output to generate the stimulation signals to the hearing implant for perception by the patient as sound.

    Claims

    1. A signal processing method for generating stimulation signals for a hearing implant implanted in a patient, the method comprising: classifying an audio input signal from an audio scene with a multi-layer neural network, the classifying comprising: a) pre-processing the audio input signal with a pre-processing neural network using initial classification parameters to produce an initial signal classification, and b) processing the initial signal classification with a scene classifier neural network using scene classification parameters to produce an audio scene classification output, wherein the initial classification parameters reflect neural network training based on a first set of initial audio training data, and the scene classification parameters reflect neural network training on a second set of classification audio training data separate and different from the first set of initial audio training data, wherein the pre-processing neural network optimizes meta-parameters without explicit training of weights via back propagation, and wherein the classifier neural network includes a back propagation procedure; processing the audio input signal and the audio scene classification output with a hearing implant signal processor for generating the stimulation signals.

    2. The method according to claim 1, wherein the pre-processing neural network includes successive recurrent convolutional layers.

    3. The method according to claim 2, wherein the recurrent convolutional layers are implemented as recursive filter banks.

    4. The method according to claim 1, wherein the pre-processing neural network includes an envelope processing block configured for calculating sub-band signal envelopes for the audio input signal.

    5. The method according to claim 1, wherein the pre-processing neural network includes a pooling layer configured for signal decimation within the pre-processing neural network.

    6. The method according to claim 1, wherein the initial signal classification is a multi-dimensional feature vector.

    7. The method according to claim 1, wherein the scene classifier neural network comprises a fully connected neural network layer.

    8. The system according to claim 1, wherein the scene classifier neural network comprises a linear discriminant analysis (LDA) classifier.

    9. The method according to claim 1, wherein the meta-parameters include filter bandwidths.

    10. A signal processing system for generating stimulation signals for a hearing implant implanted in a patient, the system comprising: an audio scene classifier comprising a multi-layer neural network configured for classifying an audio input signal from an audio scene, wherein the audio scene classifier includes: a) a pre-processing neural network configured for pre-processing the audio input signal based on initial classification parameters to produce an initial signal classification, and b) a scene classifier neural network configured for processing the initial signal classification based on scene classification parameters to produce an audio scene classification output, wherein the initial classification parameters reflect neural network training based on a first set of initial audio training data, and the scene classification parameters reflect neural network training on a second set of classification audio training data separate and different from the first set of initial audio training data, wherein the pre-processing neural network optimizes meta-parameters without explicit training of weights via back propagation, and wherein the classifier neural network includes a back propagation procedure; a hearing implant signal processor configured for processing the audio input signal and the audio scene classification output for generating the stimulation signals.

    11. The system according to claim 10, wherein the pre-processing neural network includes successive recurrent convolutional layers.

    12. The system according to claim 11, wherein the recurrent convolutional layers are implemented as recursive filter banks.

    13. The system according to claim 10, wherein the pre-processing neural network includes an envelope processing block configured for calculating sub-band signal envelopes for the audio input signal.

    14. The system according to claim 10, wherein the pre-processing neural network includes a pooling layer configured for signal decimation within the pre-processing neural network.

    15. The system according to claim 10, wherein the initial signal classification is a multi-dimensional feature vector.

    16. The system according to claim 10, wherein the scene classifier neural network comprises a fully connected neural network layer.

    17. The system according to claim 10, wherein the scene classifier neural network comprises a linear discriminant analysis (LDA) classifier.

    18. The system according to claim 10, wherein the meta-parameters include filter bandwidths.

    Description

    BRIEF DESCRIPTION OF THE DRAWINGS

    [0023] FIG. 1 shows the anatomy of a typical human ear and components in a cochlear implant system.

    [0024] FIG. 2 shows an example spectrogram of a speech sample.

    [0025] FIG. 3 shows major signal processing blocks of a typical cochlear implant system.

    [0026] FIG. 4 shows an example of a short time period of an input speech signal from a sensing microphone.

    [0027] FIG. 5 shows the microphone signal decomposed by band-pass filtering by a bank of filters.

    [0028] FIG. 6 shows major functional blocks in a signal processing system according to an embodiment of the present invention.

    [0029] FIG. 7 shows processing steps in initially training a pre-processing neural network according to an embodiment of the present invention.

    [0030] FIG. 8 shows processing steps in iteratively training a classifier neural network according to an embodiment of the present invention.

    [0031] FIG. 9 shows functional details of a pre-processing neural network according to one specific embodiment of the present invention.

    [0032] FIG. 10 shows an example of how filter bank filter bandwidths may be structured according to an embodiment of the present invention.

    DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS

    [0033] Neural network training is a complicated and demanding process that requires a lot of training data for optimizing the parameters of the network. The effectiveness of the training further very much depends on the training data that is used. Many undesirable side effects may occur after the training, and it might even happen that the neural network does not even perform the intended task. This problem is particularly pronounced when trying to classify audio scenes for hearing implants where a nearly infinite number of variations exist for each classified scene and seamless transitions occur between distinct scenes.

    [0034] Embodiments of the present invention are directed to an audio scene classifier for hearing implants that uses a multi-layer neural network optimized for iterative training of a low number of parameters that can be trained with reasonable effort and sized training sets. This is accomplished by separating the neural network into an initial pre-processing neural network whose output is then input to a classification neural network. This allows for separate training of the individual neural networks and thereby allows use of smaller training sets and faster training that is carried out in a two-step process as described below.

    [0035] FIG. 6 shows major functional blocks in a signal processing system according to an embodiment of the present invention for generating stimulation signals for a hearing implant implanted in a patient. An audio scene classifier 601 is configured for classifying an audio input signal from an audio scene and includes a pre-processing neural network 603 that is configured for pre-processing the audio input signal based on initial classification parameters to produce an initial signal classification, and a scene classifier neural network 604 that is configured for processing the initial scene classification based on scene classification parameters to produce an audio scene classification output. The initial classification parameters reflect neural network training based on a first set of initial audio training data, and the scene classification parameters reflect neural network training on a second set of classification audio training data separate and different from the first set of initial audio training data. A hearing implant signal processor 602 is configured for processing the audio input signal and the output of the audio scene classifier 601 to generate the stimulation signals to a pulse generator 304 to provide to the hearing implant 305 for perception by the patient as sound.

    [0036] FIG. 7 shows processing steps in initially training the pre-processing neural network 603, which starts, step 701, by initializing the pre-processing neural network 603 with pre-calculated parameter that are within an expected range of parameters, for example, in the middle of a parameter range. A first training set of audio training data (Training Set 1) is selected, step 702, and input for training of the pre-processing neural network 603, step 703. The output from the pre-processing neural network 603 then, step 704, is used as the input to the classifier neural network 604 for optimizing it using various known optimization methods.

    [0037] FIG. 8 then shows various subsequent processing steps in iteratively training a classifier neural network 604 starting with the optimized parameters from the initial training of the pre-processing neural network as discussed above with regards to FIG. 7, step 801. A second training set of audio training data (Training Set 2), which is different from the first training set, is selected, step 802, and input to the pre-processing neural network 603. The output from the pre-processing neural network 603 is further input and processed by the classification neural network 604, step 804. An error vector then is calculated, step 805, by comparing the output from the classification neural network 604 to the audio scene that the second training set data should belong to. The error vector then, step 806, is used to optimize the pre-processing neural network 603. The new parameterization of the pre-processing neural network 603, then leads to a two-step iterative training procedure that ends when selected stopping criteria are met.

    [0038] FIG. 9 shows functional details of a pre-processing neural network according to one specific embodiment of the present invention with several linear and non-linear processing blocks. In the specific example shown, there are two successive recurrent convolutional layers, pooling layers, non-linear functions and an averaging layer. The recurrent convolutional layers can be implemented as recursive filters banks. Without loss of generality, the input signal is assumed to be an audio signal x(k) with length .sub.N, which is first high-pass filtered (HPF-block) and then fed into N.sub.TF parallel processing blocks that act as band pass filters. This leads to N.sub.TF output sub band signals x.sub.T,i(k) with different spectral contents. The band pass filtered sub band signals can be expressed by the equation:

    [00001] x T , i ( k ) = .Math. n = 0 P 1 b i , n x ( k - n ) - .Math. m = 1 P 2 a i , m x T , i ( k - m )

    where b.sub.i,n are the feed forward coefficients, and a.sub.i,n the feedback coefficients of the i-th filter block. The filter order is P=max(P.sub.1,P.sub.2).

    [0039] The sub band signals envelopes then are calculated by rectification and low pass filtering. Note that any other method for determining the envelopes can be used, too. The low pass filter may be, for example, a fifth-order recursive Chebyshev II filter with 30 dB attenuation in the stop band. The cutoff frequency ƒ.sub.T,s can be determined by the highest band pass filter upper edge frequency of the next filter bank plus an additional offset. The low pass filter prior to the pooling layer (decimation block) helps to avoid aliasing effects. The output of the pooling layer is the subsampled sub band envelope signal x.sub.R,i(n), which then is processed through the non-linear function block. This non-linear function can include, for example, range limitation, normalization and further non-linear functions such as logarithms or exponentials. The output Y.sub.TF of this stage is a N.sub.TF×N.sub.R matrix with

    [00002] N R = .Math. N R .Math.

    where R is a decimation factor and └.┘ is the floor operation.

    [0040] The output signals y.sub.R,i=[y.sub.R,i(1) y.sub.R,i(2) . . . y.sub.R,i(N.sub.R)] are arranged into a matrix Y.sub.TF=[y.sub.R,1.sup.T y.sub.R,2.sup.T . . . y.sub.R,N.sub.TF.sup.T].sup.T where each row corresponds to a specific frequency band. The output of this layer Y.sub.TF (where each row corresponds to a specific frequency band) is first fed row by row to N.sub.M recurrent convolutional layers which can represent a bank of modulation filters. The modulation filters can be individually parameterized for each frequency band yielding an overall number of filters N.sub.M×N.sub.TF. The ordering of the parallel band pass filters for each frequency is analogous to the parallel band pass. The absolute values of the filtered signals {circumflex over (x)}.sub.M,i(n) with i∈{1, . . . N.sub.TF, ×N.sub.M} of these filter banks custom-character.sub.M,i(n)=|{circumflex over (x)}.sub.M,i(n)| are averaged and the final result is a feature vector Y.sub.MF with dimensions N.sub.TF×N.sub.M. This feature vector is the output of the pre-processing neural network and input to the classification neural network.

    [0041] The classification neural network may be for example a fully connected neural network layer, a linear discriminant analysis (LDA) classifier, or a more complex classification layer. The outputs of this layer are the predefined class labels C.sub.i or/and probabilities P.sub.i for them.

    [0042] As explained above, the multi-layer neural network arrangement is iteratively optimized. First an initial setting for the pre-processing neural network is chosen and the feature vectors Y.sub.MF for the Training Set 1 are calculated. For this feature vector, the classification neural network can be trained by a standard method such as back propagation or LDA. Then for Training Set 2, the corresponding class labels or/and probabilities are calculated and used to calculate an error vector that is input to the training approach of the pre-processing neural network. This yields a new setting for the pre-processing neural network. With this new setting, the next iteration of the training procedure starts.

    [0043] The training of the pre-processing neural network optimizes it in the sense of minimizing an error function, minimizing the mismatch between the estimated class labels and the ground truth class labels. Instead of explicitly training the weights of the pre-processing neural network via a back propagation procedure (which is the state-of-the art algorithm for training neural networks), meta-parameters are optimized, for example with generic algorithms or model-based optimization approaches. This significantly reduces the number of tunable weights and also reduces the amount of training data needed due to lower weight vector dimensionality. As a result the neural network has better generalization capabilities, which are important for its performance in previously unseen conditions.

    [0044] The meta-parameters could be, for example, filter bandwidths and the neural network weights would be the coefficients of the corresponding filters. In this example, any filter design rule can be applied for computing the filter coefficients. However, other rules for mapping meta-parameters to network weights may be used as well. This mapping could be learned automatically via an optimization procedure and/or may be adaptive such that the network weights are updated during optimization and/or during the operation of the trained network. The optimal bandwidths of the filter for a given classification problem can be found by known optimization algorithms. Before running the optimization process, a filter design rule is chosen for mapping meta-parameters to filter coefficients. For example, Butterworth filters can be chosen for the first filter bank and Chebychev 2 filters for the second one, or vice versa.

    [0045] FIG. 10 shows an example of how filter bank filter bandwidths may be structured according to an embodiment of the present invention. The first filters in the filter banks are low pass filters where the edge frequency is the lower edge frequency of the successive band pass filter and so on. This mapping rule from meta-parameters to network weights ensures that the network uses all information available in the input signal. The specification of the network structure via meta-parameters and filter design rules reduces the optimization complexity. The upper and lower edge frequencies of each filter can also be independently trained and other design rules are possible. With this approach, the initialization of the pre-processing neural network can be done by selection of all boundary frequencies according to

    [00003] 0 = f u 0 < f u 1 = f l 2 < .Math. < f l N fs 2 ,

    where fs is sampling frequency of corresponding input signal. The network weights can be achieved by using the defined mapping rule.

    [0046] As mentioned above, there are N.sub.TF.Math.(N.sub.M+1)−1 independently tunable parameters. Finding optimal parameters using an exhaustive search may not be feasible due to the high dimensionality. A gradient descent algorithm also may not be suitable because the multimodal cost function (classification error) is not differentiable. Thus a Covariance Matrix Adaptation Evolution Strategy (CMA-ES) can be used based in order to find an ideal parameter set for the feature extraction step (see e.g., N. Hansen, “The CMA evolution strategy: A comparing review,” in Towards a new evolutionary computation. Advances in estimation of distribution algorithms. Springer, 2006, pp. 75-102, which is incorporated herein by reference in its entirety). ES is a subclass of evolutionary algorithms (EA) and shares the idea of imitating natural evolution, for instance by mutation and selection, and it does not require the computation of any derivatives (H. Beyer, Theory of Evolution Strategies, Springer, 2001 edition; incorporated herein by reference in its entirety). The optimal parameter set can be iteratively approximated by evaluating a fitness function after each step, where the fitness function or cost function may be the classification error (the ratio of the number of misclassified objects to the number of all objects) of the LDA classifier as a function of the independently tunable parameters.

    [0047] The basic equation for CMA-ES is the sampling equation of new search points (Hansen 2006):


    x.sub.k.sup.g+1˜m.sup.(g)+σ.sup.(g)custom-character(0,C.sup.(g)) for k=1, . . . ,λ

    where g is the index of the current generation (iteration), x.sub.k.sup.g+1 is the k-th offspring from generation g+1, λ is the number of offspring, m.sup.(g) is the mean value of the search distribution at generation g,custom-character(0,C.sup.(g)) is a multivariate normal distribution with the covariance matrix C.sup.(g) of generation g, and σ.sup.(g) is the step-size of generation g. From the A sampled new solution candidates, the μ best points (in terms of minimal cost function) are selected and the new mean of generation g+1 is determined by a weighted average according to:

    [00004] m ( g + 1 ) = .Math. i = 1 μ w i x i : μ g + 1 .Math. i = 1 μ w i = 1 , ω 1 ω 2 .Math. w μ > 0

    [0048] In each iteration of the CMA-ES, the covariance matrix C and the step-size σ are adapted according to the success of the sampled offspring. The shape of the multivariate normal distribution is formed in the direction of the old mean m.sup.(g) towards the new mean m.sup.(g+1). The sampling, selection and recombination steps are repeated until reaching either a predefined threshold on the cost function or a maximum number of generations, or the range of the current functional evaluation is below a threshold (local minima is reached). The allowed search space of the parameters can be restricted to intervals as described by Colutto et al. in S. Colutto, F. Frühauf, M. Fuchs, and O. Scherzer, “The CMA-ES on Riemannian manifolds to reconstruct shapes in 3-D voxel images,” IEEE Transactions on Evolutionary Computation, vol. 14, no. 2, pp. 227-245, April 2010, which is incorporated herein by reference in its entirety. For a more detailed description of CMA-ES, in particular on how the covariance matrix C and the step-size a are adapted in each step, as well as a Matlab implementation, please refer to Hansen 2006. Other generic algorithms such as particle swarm optimization also can be used.

    [0049] Optimizing the filter bank parameters used for deriving the weights of the network in order to decrease the classification error is a challenging task due to its high dimensionality and multi-modal error function. Brute-force and gradient-descent may not be feasible for this task. One useful approach may be based on Model-Based Optimization (MBO) (see Alexander Forrester, Andras Sobester, and Andy Keane. Engineering Design via Surrogate Modeling: A Practical Guide. Wiley, September 2008; and Claus Weihs, Swetlana Herbrandt, Nadja Bauer, Klaus Friedrichs, and Daniel Horn. Efficient Global Optimization: Motivation, Variations, and Applications. In ARCHIVES OF DATA SCIENCE, 2016, both of which are incorporated herein by reference in their entireties).

    [0050] MBO is an iterative approach used to optimize a black box objective function. It is used where the evaluation of an objective function (e.g., the classification error depending on different filter bank parameters) is expensive in terms of available resources such as computational time. An approximation model, a so-called surrogate model, is constructed of this expensive objective function in order to find the optimal parameter for a given problem. The evaluation of the surrogate model is cheaper than the original objective function. The MBO steps can be divided as follows: [0051] Design a sampling plan, [0052] Constructing a surrogate model, [0053] Exploring and exploiting a surrogate model.

    [0054] A high dimensional multi-modal parameter space is assumed and the goal of the optimization is to find the point which minimizes the cost function. The initial step of the MBO is to construct a sampling plan. This means that n points are determined which will then be evaluated by the objective function. These n points should cover the whole region of the parameter space, and for this the space-filling design called Latin hypercube design can be used. The parameter space is divided into n equal-sized hyper-cubes (bins), where n∈{5k, 6k, . . . , 10k} is recommended and k is the number of parameters. The points are then placed in the bins such that “from each occupied bin we could exit the parameter space along any direction parallel with any of the axes without encountering any other occupied bins” (Forrester 2008). Randomly set points do not guarantee the space-filling property of the sampling plan X (n×k matrix) and to evaluate the space-fillingness of X the maximin metric of Morris and Mitchell is used: [0055] “We call X the maximin plan among all available plans if it maximizes d.sub.1, among plans for which this is true, minimizes J.sub.1, among all plans for which this is true, maximizes d.sub.2, among all plans for which this is true, minimizes J.sub.2, . . . , minimizes J.sub.m.”
    With d.sub.1, d.sub.2, d.sub.3, . . . , d.sub.m the list of unique values of distances between all possible pairs of points in the sampling plan X sorted in ascending order, and J.sub.j is the number of pairs of points in X separated by the distance d.sub.j.

    [0056] The above definition means that one sequentially maximizes d.sub.1 and then minimizes J.sub.1, maximizes d.sub.2 and then minimizes J.sub.2 and so on. Or in other words, the goal is to have as minimal distinct pairs with maximum distance as possible. As a metric for the distance d between two points the p-norm is used:

    [00005] d p ( x ( i 1 ) , x ( i 2 ) ) = ( .Math. j = 1 k .Math. "\[LeftBracketingBar]" x j i 1 - x j i 2 .Math. "\[RightBracketingBar]" p ) 1 / p

    where p=1 is used as the rectangular norm. Based on the above definition of a maximin plan, Morris and Mitchell propose comparing sampling plans according to the criterion:

    [00006] Φ q ( X ) = ( .Math. j = 1 m J j d j - q ) 1 / q

    [0057] The smaller Φ.sub.q, the better X fulfills the space-filling property (Forrester 2008). For the best Latin hypercube, Morris and Mitchell recommend minimizing Φ.sub.q for q=1, 2, 5, 10, 20, 50 and 100 and choosing the sampling plan with the smallest Φ.sub.q.

    [0058] A surrogate model ĝ(x) can be constructed such that it is a reasonable approximation of the unknown objective function ƒ(x) (where x is a k dimensional vector pointing to a point in the parameter space). Different types of models can be constructed such as an ordinary Kriging model:


    ĝ(x)=μ+Z(x)

    where μ is a constant global mean and Z(x) is a Gaussian process. The mean of this Gaussian process is 0, and its covariance is:


    Cov(Z(x),Z(x))=σ.sup.2ρ(x−x′,Ψ)

    with ρ the Matern 3/2 kernel function and Ψ a scaling parameter. The constant σ.sup.2 is global variance. The Matern 3/2 kernel is defined as:

    [00007] ρ ( x - x ) = ( 1 + 3 .Math. "\[LeftBracketingBar]" x - x .Math. "\[RightBracketingBar]" Ψ ) exp ( - 3 .Math. "\[LeftBracketingBar]" x - x .Math. "\[RightBracketingBar]" Ψ )

    So the unknown parameters of this model are μ, σ.sup.2 and Ψ, which are estimated by using the n previously by the objective function evaluated points y=(y.sub.1, . . . , y.sub.n).sup.T.

    [0059] The likelihood function is:

    [00008] L ( μ , σ 2 , Ψ ) = 1 ( 2 π ) n σ 2 n det ( R ) exp ( - 1 2 σ 2 ( y - 1 μ ) T R - 1 ( y - 1 μ ) )

    with R(Ψ)=(ρ(x.sub.i−x.sub.j,Ψ)).sub.i,j=1, . . . ,n and det(R) its determinant. From this the Maximum likelihood estimation of the unknown parameters can be determined:

    [00009] μ = arg max μ L ( μ , σ 2 , Ψ ) σ 2 = arg max σ 2 L ( μ , σ 2 , Ψ ) Ψ = arg max Ψ L ( μ , σ 2 , Ψ )

    [0060] The surrogate prediction {circumflex over (ƒ)}.sub.n(x) and the corresponding prediction uncertainty ŝ.sub.n(x) (see Weihs 2016) can be determined based on the first n evaluations of ƒ. The estimated surrogate function follows a normal distribution ĝ(x)˜custom-character({circumflex over (ƒ)}.sub.n(x),ŝ.sub.n.sup.2(x)). With the actual best value

    [00010] y min = min i = 1 , .Math. , n y i = min i = 1 , .Math. , n f ( x i ) ,

    then the improvement for a point x and the estimated surrogate ĝ(x) is I.sub.n(x)=max(y.sub.min−ĝ(x),0). The next point to evaluate is found by maximizing the expected improvement:

    [00011] x n + 1 = arg max x E ( I n ( x ) )

    [0061] The above criterion gives a balance between exploration (improving global accuracy of the surrogate model) and exploitation (improving local accuracy in the region of the optimum of the surrogate model). This ensures that the optimizer will not get stuck in local optima and yet converges to an optimum. After each iteration of MBO, the surrogate model will be updated. Different convergence criteria could be chosen to determine when to stop evaluating new points for updating the surrogate model. Some criteria could be, e.g., to define a preset number of iterations and stop after this or to stop after the expected improvement drops below a predefined threshold.

    [0062] The hearing implant may be, without limitation, a cochlear implant, in which the electrodes of a multichannel electrode array are positioned such that they are, for example, spatially divided within the cochlea. The cochlear implant may be partially implanted, and include, without limitation, an external speech/signal processor, microphone and/or coil, with an implanted stimulator and/or electrode array. In other embodiments, the cochlear implant may be a totally implanted cochlear implant. In further embodiments, the multi-channel electrode may be associated with a brainstem implant, such as an auditory brainstem implant (ABI).

    [0063] Embodiments of the invention may be implemented in part in any conventional computer programming language. For example, preferred embodiments may be implemented in a procedural programming language (e.g., “C”) or an object oriented programming language (e.g., “C++”, Python). Alternative embodiments of the invention may be implemented as pre-programmed hardware elements, other related components, or as a combination of hardware and software components.

    [0064] Embodiments can be implemented in part as a computer program product for use with a computer system. Such implementation may include a series of computer instructions fixed either on a tangible medium, such as a computer readable medium (e.g., a diskette, CD-ROM, ROM, or fixed disk) or transmittable to a computer system, via a modem or other interface device, such as a communications adapter connected to a network over a medium. The medium may be either a tangible medium (e.g., optical or analog communications lines) or a medium implemented with wireless techniques (e.g., microwave, infrared or other transmission techniques). The series of computer instructions embodies all or part of the functionality previously described herein with respect to the system. Those skilled in the art should appreciate that such computer instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Furthermore, such instructions may be stored in any memory device, such as semiconductor, magnetic, optical or other memory devices, and may be transmitted using any communications technology, such as optical, infrared, microwave, or other transmission technologies. It is expected that such a computer program product may be distributed as a removable medium with accompanying printed or electronic documentation (e.g., shrink wrapped software), preloaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server or electronic bulletin board over the network (e.g., the Internet or World Wide Web). Of course, some embodiments of the invention may be implemented as a combination of both software (e.g., a computer program product) and hardware. Still other embodiments of the invention are implemented as entirely hardware, or entirely software (e.g., a computer program product).

    [0065] Although various exemplary embodiments of the invention have been disclosed, it should be apparent to those skilled in the art that various changes and modifications can be made which will achieve some of the advantages of the invention without departing from the true scope of the invention.