Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Речевые Технологии > Дикторонезависимое распознавание шипящих |
Автор: webcoder88 20.01.16, 08:07 |
Дикторонезависимое распознавание шипящих без предварительной тренировки методом расчета энерго-частотной характеристики. Суть метода заключается в расчете энергии исходного сигнала E0, далее определяется энергия сигнала после фильтрации полосовым фильтром. Каждое значение E(i) делится на E0, после чего строится график. Количество фильтров и соответственно точек равно 20000/частота полосового фильтра. При ширине 500Гц, кол-во равно 40 точек. Распознавание фонемы С. 44100, 500Гц Русскоязычный диктор, мужской или женский голос, продолжительность фонемы не имеет значения. Значение максимума лежит ниже уровня 0.25 График имеет 2 близко расположенных пика (Твин Пикс ) Отношение частот пиков лежит в диапазоне 0.65...0.88 и увелич-ся с частотой. График частного - не прямая, а задирается вверх как перевернутая экспонента. Строить лень. Я нашел примерную формулу (подгонка). Англоязычный диктор, мужской или женский голос, продолжительность фонемы не имеет значения. Значение максимума лежит ниже уровня 0.25. 2-ой пик слабо выражен. s1_3sh.png (, : 520) Добавлено Пики Ц лежат правее пиков С (взрывной звук вначале дает много высокочастотных гармоник) График для Ш,Щ,Ч для Елены практически совпадают и накладываются др. на друга, причем при уменьшении ширины полосового фильтра до 100Гц график не распадается на отд. пики, те энергия этих фонем сосредоточена в одной узкой полосе, а значение всегда лежит выше уровня 0.6. Добавлено 0.45 .. 0.6 |
Автор: webcoder88 20.01.16, 08:17 |
Еще 1 график. s_888math.png (, : 515) Добавлено Независимомть к положению максимума ко второму пику (инвариантность?) достигается простыми алгоритмами: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> % Поиск максимума Dmax3 = max(D3) %поиск индекса for(i=1:iend) %fprintf('D3(i)=%f',D3(i)); if (D3(i)==Dmax3) Imax3=i; end; end; ;Imax3 i2=Imax3-10; if (i2<1) i2=1; end; i3=Imax3+10; if (i3>iend) i3=iend; end; % %Распознавание С Dmax33 = Dmax3*0.2; Imax33=0; for(i=i2:i3) if (i==Imax3) i=i+1; % пропустить end; if D3(i)>Dmax33 Dmax33=D3(i); Imax33=i end; end; Dmax33 if (Imax33 >Imax3) Ch3=Imax3/Imax33; else Ch3=Imax33/Imax3; end; if (Ch3>0.63 & Ch3<0.95 & Dmax3<0.25) fprintf ('Фонема - С\n'); end; Добавлено Метод будет работать только на предварительно размеченном звуковом файле. Буду благодарен, если подскажете код чтения меток hts и инициализации массива меток в Матлаб. |
Автор: webcoder88 22.01.16, 07:52 |
Несколько слов о формировании фонемы С в русском языке. Во время поизношения язык придвигается к передним зубам, поэтому в образовании общего звука участвуют 2 вида потоков. Первый основной поток образуется при движ. воздуха между передней частью нёба (и губами). Этот поток однородный и похож на хвук Ш. Второй вид потока образован несколькими турбулентными потоками воздуха, проходящего через щели в зубах. Этот поток напоминает свист. Поэтому на графике распр-я энергии можно видеть максимум и еще 1 или несколько потоков поменьше. Мощность второго потока зависит от неск. факторов: скорости выдыхаемого воздуха и положения языка относительно неба и передних зубов. Поток от нёба может быть сведен к минимуму. Графики голоса cmu_us_arctic_slt имеет 1, ярко выраженный пик. Возможно, что голос синтезирован или прошел спец. обработку. На голосе Елена теория подтверждается практикой, тк 2 пика есть в любом случае. Elena_a001.png (, : 525) Добавлено После фильтрации узким полосовым фильтром в диапазоне частот от 8 до 15кГц звук С становится похож на сверчка. |
Автор: webcoder88 24.01.16, 12:23 |
Теперь мягкий звук "сь". В отличие от звука "с", который формируется направлением струи воздуха в верхние зубы, звук "сь" появляется при направлении струи воздуха в нижние зубы. На слух сь слышится более свистящим - нижние зубы более мелкие. Мягкие согласные отправляются в нижнюю челюсть, а их норм. аналоги - в небо и верхнюю челюсть. |