コード例 #1
0
        public FeaturesContainer GetFeatures(SignalContainer signal)
        {
            var features = signal.GetFrames().Select(frame => new FrameFeatures(frame.Bounds, frame.Signal)).
                           Where(feature => feature.FeatureDimension == signal.FrameSize).ToList();

            return(new FeaturesContainer(features));
        }
コード例 #2
0
        public SignalContainer GetSpeech(SignalContainer rawSignal)
        {
            SignalContainer singal = rawSignal.Copy();

            singal.FrameSize  = 100; //ToDo! Constant change
            singal.FrameShift = singal.FrameSize;
            List <double> framesEnergy  = singal.GetFrames().Select(frame => SignalHelper.GetAverageEnergy(frame.Signal)).ToList();
            double        averageEnergy = framesEnergy.Average();

            double[]     flattenedFramesEnergy = ApplyMeanFilter(framesEnergy.ToArray(), 3);
            SpeechBounds speechFramesBounds    = GetSpeechBounds(flattenedFramesEnergy, averageEnergy);
            var          speechFrames          = singal.GetFrames().Skip(speechFramesBounds.Start).Take(speechFramesBounds.Width);

            double[] speechSignal = speechFrames.SelectMany(frame => frame.Signal).ToArray();
            return(new SignalContainer(speechSignal)
            {
                FrameSize = rawSignal.FrameSize,
                FrameShift = rawSignal.FrameShift
            });
        }
コード例 #3
0
        public FeaturesContainer GetFeatures(SignalContainer signal)
        {
            IList <Frame>        frames   = signal.GetFrames();
            List <FrameFeatures> features = new List <FrameFeatures>();

            foreach (Frame frame in frames)
            {
                SignalContainer             extendedSignal         = GetSignalForFiltering(frame.Signal);
                IList <FilterProcessResult> extendedSignalChannels = FilterBankCore.ProcessSignal(extendedSignal);
                FilterBankCore.Reset();
                IList <FilterProcessResult> signalChannels = GetFilteredSignalsPart(extendedSignalChannels, frame.Bounds.Width);
                double[] channelsNormalizedEnergy          = GetChannelsEnergy(signalChannels);
                features.Add(new FrameFeatures(frame.Bounds, channelsNormalizedEnergy));
            }
            return(new FeaturesContainer(features));
        }