/**
         * @return The list of feature vectors from the fileStream used by
         *         audioSource
         */
        private List <float[]> GetFeatures()
        {
            List <float[]> ret = new List <float[]>();

            try
            {
                int   featureLength = -1;
                IData feature       = _frontEnd.GetData();
                while (!(feature is DataEndSignal))
                {
                    if (feature is DoubleData)
                    {
                        double[] featureData = ((DoubleData)feature).Values;
                        if (featureLength < 0)
                        {
                            featureLength = featureData.Length;
                        }
                        float[] convertedData = new float[featureData.Length];
                        for (int i = 0; i < featureData.Length; i++)
                        {
                            convertedData[i] = (float)featureData[i];
                        }
                        ret.Add(convertedData);
                    }
                    else if (feature is FloatData)
                    {
                        float[] featureData = ((FloatData)feature).Values;
                        if (featureLength < 0)
                        {
                            featureLength = featureData.Length;
                        }
                        ret.Add(featureData);
                    }
                    feature = _frontEnd.GetData();
                }
            }
            catch (Exception e)
            {
                e.PrintStackTrace();
            }
            return(ret);
        }
Esempio n. 2
0
        public bool Bandwidth(String file)
        {
            _source.SetAudioFile(file, "");

            IData data;
            var   energy = new double[Bands];

            while ((data = _frontend.GetData()) != null)
            {
                if (data is DoubleData)
                {
                    double   maxIntensity = LowIntensity;
                    double[] frame        = ((DoubleData)data).Values;

                    for (int i = 0; i < Bands; i++)
                    {
                        maxIntensity = Math.Max(maxIntensity, frame[i]);
                    }

                    if (maxIntensity <= LowIntensity)
                    {
                        continue;
                    }

                    for (int i = 0; i < Bands; i++)
                    {
                        energy[i] = Math.Max(frame[i] / maxIntensity, energy[i]);
                    }
                }
            }

            double maxLow = Max(energy, LowRangeStart, LowRangeEnd);
            double maxHi  = Max(energy, HighRangeStart, HighRangeEnd);

            // System.out.format("%f %f\n", maxHi, maxLow);
            // for (int i = 0; i < bands; i++)
            // System.out.format("%.4f ", energy[i]);
            // System.out.println();

            if (maxHi < NoSignalLevel && maxLow > SignalLevel)
            {
                return(true);
            }

            return(false);
        }