Ejemplo n.º 1
0
        public static SpeakerViewModel GetWorstSpeaker(List <SpeakerViewModel> speakers)
        {
            var worstSpeaker = new SpeakerViewModel();  // речь худшего диктора, массив из 7 элементов
            var bestW        = double.NegativeInfinity; // лучшая разборчивость

            foreach (var speaker in speakers)           // идем по всем дикторам
            {
                var w = Intelligibility.GetW(speaker.Speech, FormantNoiseLevels, k, deltaA, 0.0);

                if (w > bestW)
                {
                    bestW        = w;
                    worstSpeaker = speaker; // если разборчивость диктора выше остальных, он становится худшим
                }
            }

            return(worstSpeaker);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the QF or w.
        /// </summary>
        /// <returns>The QF or w.</returns>
        /// <param name="from">диапазон для q</param>
        /// <param name="to">диапазон для q</param>
        /// <param name="neededW">разборчивость, которую мы хотим обеспечить</param>
        public static int GetQForW(int from, int to, double neededW)
        {
            // В качестве Lречь берём усреднённый спектр речи
            var Lspeech = AverageSpeechLevels;

            //А в качестве Lшума формантоподобную помеху
            var Lnoise = FormantNoiseLevels;

            //Рассчитываем как и в баке W в зависимости от разных q С УСРЕДНЕННЫМ СПЕКТРОМ
            for (int q = from; q < to; q++)
            {
                var w = Intelligibility.GetW(Lspeech, Lnoise, k, deltaA, q);
                if (w >= neededW)
                {
                    // прога сказала, что к этому значениию W отлично подходит вот это q.
                    // то есть выбрало из 60 всего одно.
                    return(q);
                }
            }

            throw new ArgumentException("There is no q for given W");
        }