/// <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]; }
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(); }