예제 #1
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="options">LPC options</param>
        public LpcExtractor(LpcOptions options) : base(options)
        {
            _order = options.LpcOrder;

            FeatureCount = _order + 1;

            _blockSize = MathUtils.NextPowerOfTwo(2 * FrameSize - 1);
            _convolver = new Convolver(_blockSize);
            _reversed  = new float[FrameSize];
            _cc        = new float[_blockSize];
        }
예제 #2
0
파일: LpcForm.cs 프로젝트: zlwind/NWaves
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var ofd = new OpenFileDialog();

            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            using (var stream = new FileStream(ofd.FileName, FileMode.Open))
            {
                var waveFile = new WaveFile(stream);
                _signal = waveFile[Channels.Left];
            }

            _fft = new RealFft(512);

            var options = new LpcOptions
            {
                SamplingRate  = _signal.SamplingRate,
                LpcOrder      = 16,
                FrameDuration = FrameDuration,
                HopDuration   = HopDuration
            };

            var lpcExtractor = new LpcExtractor(options);

            //var lpcExtractor = new LpccExtractor(options);

            //var lpcExtractor = new PlpExtractor(_signal.SamplingRate, 10,
            //                                    lpcOrder: 8,
            //                                    rasta: 0.94,
            //                                    filterbankSize: 20,
            //                                    //lifterSize: 22,
            //                                    window: WindowTypes.Hann);

            _lpcVectors = lpcExtractor.ParallelComputeFrom(_signal);

            FillFeaturesList(_lpcVectors, lpcExtractor.FeatureDescriptions, lpcExtractor.TimeMarkers(_lpcVectors.Count));
            lpcListView.Items[0].Selected = true;

            spectrumPanel.Line     = ComputeSpectrum(0);
            spectrumPanel.Markline = EstimateSpectrum(0);
            spectrumPanel.ToDecibel();

            lpcPanel.Line = _lpcVectors[0].Skip(1).ToArray();
        }