Ejemplo n.º 1
0
        /// <summary>
        /// Construct extractor from sampling rate, frame duration and hop duration (in seconds)
        /// </summary>
        /// <param name="samplingRate"></param>
        protected FeatureExtractor(FeatureExtractorOptions options)
        {
            if (options.Errors.Count > 0)
            {
                throw new ArgumentException("Invalid configuration:\r\n" + string.Join("\r\n", options.Errors));
            }

            SamplingRate  = options.SamplingRate;
            FrameDuration = options.FrameDuration;
            HopDuration   = options.HopDuration;
            FrameSize     = (int)(SamplingRate * FrameDuration);
            HopSize       = (int)(SamplingRate * HopDuration);
            _blockSize    = FrameSize;
            _preEmphasis  = (float)options.PreEmphasis;
            _window       = options.Window;

            if (_window != WindowTypes.Rectangular)
            {
                _windowSamples = Window.OfType(_window, FrameSize);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Constructs extractor from configuration <paramref name="options"/>.
        /// </summary>
        protected FeatureExtractor(FeatureExtractorOptions options)
        {
            if (options.Errors.Count > 0)
            {
                throw new ArgumentException("Invalid configuration:\r\n" + string.Join("\r\n", options.Errors));
            }

            SamplingRate = options.SamplingRate;

            if (options.FrameSize > 0)  // frame size has priority over frame duration
            {
                FrameSize     = options.FrameSize;
                FrameDuration = (double)FrameSize / SamplingRate;
            }
            else
            {
                FrameDuration = options.FrameDuration;
                FrameSize     = (int)Math.Round(SamplingRate * FrameDuration, MidpointRounding.AwayFromZero);
            }

            if (options.HopSize > 0)  // hop size has priority over hop duration
            {
                HopSize     = options.HopSize;
                HopDuration = (double)HopSize / SamplingRate;
            }
            else
            {
                HopDuration = options.HopDuration;
                HopSize     = (int)Math.Round(SamplingRate * HopDuration, MidpointRounding.AwayFromZero);
            }

            _blockSize   = FrameSize;
            _preEmphasis = (float)options.PreEmphasis;
            _window      = options.Window;

            if (_window != WindowType.Rectangular)
            {
                _windowSamples = Window.OfType(_window, FrameSize);
            }
        }