Beispiel #1
0
        // read time spectrum processor - iterface of this form
        public void ProcessData(double[] specData, double[] samples)
        {
            if (pause)
            {
                return;
            }
            //if (InvokeRequired)
            //   BeginInvoke(new SpecProcessorFunc(ArchiveData), new object[] { specData });
            //else

            if (chkNoiseReducer.Checked)
            {
                noiseReduction.ProcessData(specData, samples);
            }

            noiseAnalyser.ProcessData(specData, samples);
            IntensityAnalyser.ProcessData(specData, samples);
            // تشخیص حرف تلفظ شده از طریق داده های اسپکتروم
            if (noiseAnalyser.IsSpeaking)
            {
                detector.Detect(specData, 0, noiseAnalyser.NoiseLevel, noiseAnalyser.NoiseLevel);
            }

            ArchiveData(specData, samples);
        }
Beispiel #2
0
        // دریافت فرکانسهای بدست آمده از نمونه های صوتی 8192 تایی
        // جهت تشخیص زیر و بمی
        private void New8192FourierFrequencyArrived(double[] data, double[] samples)
        {
            noiseFilterSpeaking.ProcessData(data, samples);
            noiseFilterVowelChecker.ProcessData(data, samples);

            // اگر حرف صدادار تلفظ شده بود
            if (noiseFilterVowelChecker.IsSpeaking)
            {
                // اسپکتروم باید نرمال شود
                normalizerFilter.ProcessData(data, samples);
                // زیری و بمی با استفاده از اسپکتروم نرمال شده
                tempoFilter.ProcessData(data, samples);
            }
            else
            {
                // حروف صدادار وجود ندارد و باید ریست شود
                tempoFilter.Reset();
            }
        }
Beispiel #3
0
        // static NoiseAnalyserFilter noiseFilterVowelChecker = new NoiseAnalyserFilter(7, 50, 3);
        public static void DrawIntensity(int zoom, Bitmap bmp, IntensityAnalyserFilter filter)
        {
            Graphics g = Graphics.FromImage(bmp);


            Point[] linePoints = new Point[Math.Min(800 / zoom, Math.Min(GramUtils.Archive.Count, 800))];


            // g.FillRectangle(Brushes.White, 0, 0, 1024, 800);
            int from = Math.Max(GramUtils.Archive.Count - 800, 0);
            int j = 0; float step = 1;

            for (int row = GramUtils.Archive.Count - 1; row >= from; row--)
            {
                // zoom = int.Parse(cmbZoom.SelectedItem.ToString().Replace("x", ""));
                //int amp = int.Parse(cmdAmp.SelectedItem.ToString().Replace("x", ""));


                //  for (int x = 0; x < GramUtils.Archive[row].Length / 2; x++)
                // {
                if ((j + 1) * zoom >= 800)
                {
                    break;
                }
                filter.ProcessData(null, SampleArchive[row]);

                linePoints[j].X = (int)(filter.Avg * 1000.0);
                linePoints[j].Y = (int)(j * zoom);
                ;
                /// for (int hj = (int)(j * zoom); hj < (j * zoom) + zoom; hj++)
                //bmp.SetPixel((int)(filter.avg * 500.0), (j * zoom), Color.Blue);



                //}
                j++;
            }
            linePoints[0].X = 0;
            linePoints[linePoints.Length - 1].X = 0;
            g.DrawPolygon(Pens.Blue, linePoints);
            g.Dispose();
        }