public override double Detect(double[] fftSamples) { levelR1.ProcessData(fftSamples, null); if (levelR1.IsSpeaking) { return(1); } else { return(0); } //sum1 = sum2=sum3=sum4 = 0; //for (i = beg1; i <= end1; i++) // sum1 += fftSamples[i]; //for (i = beg2; i <= end2; i++) // //if (sum2 < fftSamples[i]) // sum2 += fftSamples[i]; //sum1= sum1 / (end1 - beg1); //sum2 = sum2 / (end2 - beg2); //if (sum2 > sum1 ) // return 100; // There is no any chance return(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); }
// دریافت فرکانسهای بدست آمده از نمونه های صوتی 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(); } }
// Loads data into archive void ArchiveData(double[] specData, double[] samples) { if (noiseAnalyser.IsSpeaking) { lblTalking.ForeColor = Color.Red; } else { lblTalking.ForeColor = Color.Gray; } GramUtils.NormalArchive.Add(specData); GramUtils.SampleArchive.Add(samples); TalkArchive.Add(noiseAnalyser.IsSpeaking); var roundedRow = (double[])specData.Clone(); new SpectrumNormalizerFilter().ProcessData(roundedRow, null); noiseFilterVowelChecker.ProcessData(roundedRow, null); GramUtils.RoundedArchive.Add(roundedRow); }