示例#1
0
        public virtual SpeechType GetFrameSpeechType(WAVSound frame)
        // , int channel, double lowPassCutoffFrequency, double lowPassRatioThreshold,
        //                                 double energyThreshold, double silenceThreshold)
        {
            double zeroCrossingRate = frame.GetRelativeNumberOfZeroCrossings(channel);
            double averageEnergy    = frame.GetAverageEnergy(channel);

            if (averageEnergy < silenceThreshold)
            {
                return(SpeechType.Silence);
            }
            else
            {
                WAVSound lowPassFilteredFrame = frame.Copy();
                lowPassFilteredFrame.LowPassFilter(lowPassCutoffFrequency);
                double lowPassFilteredAverageEnergy = lowPassFilteredFrame.GetAverageEnergy(channel);
                double energyRatio = lowPassFilteredAverageEnergy / averageEnergy;
                if ((energyRatio > lowPassRatioThreshold) && (averageEnergy > energyThreshold) && (zeroCrossingRate < zeroCrossingRateThreshold))
                {
                    return(SpeechType.Voiced);
                }
                else if (zeroCrossingRate < zeroCrossingRateThreshold)
                {
                    return(SpeechType.Voiced);
                }
                else
                {
                    return(SpeechType.Unvoiced);
                }
            }
        }
示例#2
0
        //
        public SoundFeature GetRelativeNumberOfZeroCrossingsSeries(string name)
        {
            SoundFeature rnzcFeature = new SoundFeature();

            rnzcFeature.Name = name;
            rnzcFeature.SetSize(frameList.Count);
            for (int iFrame = 0; iFrame < frameList.Count; iFrame++)
            {
                WAVSound frame = frameList[iFrame];
                double   relativeNumberOfZeroCrossings = frame.GetRelativeNumberOfZeroCrossings(0); // 0 = channel index (again assuming mono).
                rnzcFeature.ValueList[iFrame] = relativeNumberOfZeroCrossings;
            }
            return(rnzcFeature);
        }