На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD, nsh
  
> Вычисление формант , Вычисление формант
    Подскажите пожалуйста, каким образом можно вычислить форманты (как найти их частоты)? Уже просмотрел много информации в интернете, в книгах, но так чёткого представления и не сложилось об их поиске.
    Построил график зависимости амплитуды от частоты (насколько я понял это спектр). Я понял, что некоторые пики на графике будут формантами. Насколько я понял, что можно вычислять форманты с помощью LPC коэффициентов, а также с помощью кепстрального анализа. Да, нашёл я LPC коэффициенты, а дальше что нужно делать?
    Можете пожалуйста объяснить идею вычисления формант?
    Спасибо!
      И ещё: во многих источниках пишут, что для нахождения формант можно использовать LPC коэффициенты. А с какой целью их можно использовать? что нам это даст и почему именно их советуют использовать?
        вариант:
        по LPC коэфициентам получить спектр
        максимумы на спектре - будут форматнами

        вот тут ещё почитайте
        Какие из гармоник - форманты?
          Цитата
          Подскажите пожалуйста, каким образом можно вычислить форманты (как найти их частоты)? Уже просмотрел много информации в интернете, в книгах, но так чёткого представления и не сложилось об их поиске.
          Построил график зависимости амплитуды от частоты (насколько я понял это спектр).


          Простой для понимания код можно посмотреть здесь:

          http://www.mathworks.com/help/signal/ug/fo...efficients.html

          Чтобы понять, как использовать LPC (l1, l2, l3...) коэффициенты, нужно понять их смысл - это коэффициенты фильтра речевого тракта.

          ExpandedWrap disabled
                F(z) = 1 / (1 - r1)(1 - r2)(1 - r3)... = 1 / (l_1 + x * l_2 + x^2 * l^3...)

          Форманты соответствуют пикам усиления, чтобы их найти, нужно найти комплексные корни полинома с LPC коэффициентами. После преобразования углов корней (r1, r2, r3) в частоты можно получить значения формант.

          Для большей точности можно отслеживать значения между окнами с помощью алгоритма динамического программирования. Нужно следить, чтобы форманты не прыгали.

          В целом для работы лучше использовать уже существующие приложения, в которых есть все необходимые настройки - praat или другие.

          Для полного понимания LPC лучше прочесть книгу по обработке сигналов.
          Сообщение отредактировано: nsh -
            спасибо, немножко стало ясней)

            Подскажите пожалуйста, что подразумевается под prediction polynomial, можете написать эту формулу, полученную из:
            A = lpc(x1,8) Formant Estimation with LPC Coefficients.

            Можете пожалуйста объяснить, что это за формула: F(z) = 1 / (1 - r1)(1 - r2)(1 - r3)... = 1 / (l_1 + x * l_2 + x^2 * l^3...)

            Какую толковую и понятную книгу можете посоветовать для понимания связи LPC коэффициентов и нахождения формант? (уже просмотрел довольно много книг, но не нашёл иль не понял объяснений)
              Цитата
              Можете пожалуйста объяснить, что это за формула: F(z) = 1 / (1 - r1)(1 - r2)(1 - r3)... = 1 / (l_1 + x * l_2 + x^2 * l^3...)


              Формула фильтра

              Цитата
              Какую толковую и понятную книгу можете посоветовать для понимания связи LPC коэффициентов и нахождения формант?


              Цифровая обработка речевых сигналов

              Л.Р. Рабинер, Р.В. Шафер

              http://dsp-book.narod.ru/R_Sh/R_Sh.htm
                Спасибо большое за помощь, но можно пожалуйста как-то более подробней объяснять, поскольку я впервые разбираюсь с речевыми сигналами, и на каждом шагу появляются непонятные вещи.

                Цитата
                F(z) = 1 / (1 - r1)(1 - r2)(1 - r3)... = 1 / (l_1 + x * l_2 + x^2 * l^3...) Формула фильтра

                Если сможете, можно пожалуйста поподробней здесь, что это за такая формула и откуда!


                Читаю на данный момент книгу Цифровая обработка речевых сигналов Рабинер, Шафер. Хорошая книга! Там находят форманты с помощью кепстральных коэффициентов (не через LPC).
                А именно: после нахождения кепстральных коэффициентов находят кепстрально сглаженный логарифмический спектр (который каким-то образом очень сглаживает спектр), и уже максимумы этого спектра отвечают формантам. Правильно ли я понял?

                Спасибо за помощь!
                  вариант с кестралными коэфициэнтами тоже возможен, но мне кажется что у него есть два недостатка:
                  1) может проявляться основной той - который может помешать правильному нахождению формант
                  2) субъективно кажется больше вычислительной мощности понадобится
                    Цитата
                    Форманты соответствуют пикам усиления, чтобы их найти, нужно найти комплексные корни полинома с LPC коэффициентами


                    какой имеет вид полином с LPC коэффициентами?
                      LPC коэфициенты представляют собой многочлен (полином)
                      http://ru.wikipedia.org/wiki/%D0%9C%D0%BD%...%BB%D0%B5%D0%BD
                      c_0 + c_1x^1 + ... + c_nx^n=0

                      user posted image

                      c_n - сответсвуют коэфициентам LPC
                      такой многочлен зачастую имеет несколько решений
                      соответсвенно все решения - будут формантами
                        Цитата
                        LPC коэфициенты представляют собой многочлен (полином)
                        c_0 + c_1x^1 + ... + c_nx^n=0

                        почему нужно находить корни данного многочлена. Вы написали, что решения полинома укажут на форманты. А почему именно корни данного полинома??? откуда это выводится - мне не понятно. какие факты подтверждают, что корни указывают на форманты???

                        я нашёл LPC коэффициенты и застрял на этом моменте.

                        пусть одно из решений полинома rts, угол ang = арктангенс(imag(rts)/real(rts)); частота frq = ang *(Fs/(2*pi)) - эта частота и будет формантой.
                        Но вот каким образом мы определяем полином (откуда он берётся после нахождения LPC коэффициентов)???
                          Цитата
                          почему нужно находить корни данного многочлена.

                          это ещё один вариант нахождения формант - более точный скорее всего.

                          Цитата
                          Вы написали, что решения полинома укажут на форманты.

                          это написал Николай:
                          Цитата
                          Форманты соответствуют пикам усиления, чтобы их найти, нужно найти комплексные корни полинома с LPC коэффициентами.

                          p.s. я писал можно сделать обратное преобразование Фурье от LPC коэфицинетов и на полученном спектре найти максимумы.

                          Цитата
                          А почему именно корни данного полинома???

                          к сожалению это я объяснить не смогу.
                          что ещё с полинома взять-то =)

                          Цитата
                          откуда это выводится - мне не понятно. какие факты подтверждают, что корни указывают на форманты???

                          про факты не скажу. я просто вычитал и проверил - это работает.

                          Цитата
                          Но вот каким образом мы определяем полином (откуда он берётся после нахождения LPC коэффициентов)???

                          полином - это просто многочлен.
                          для 5 LPC коэфициентов многочлен который необходимо решить будет выглядеть так:
                          LPC(0)+X*LPC(1)+X^2*LPC(2)+X^3*LPC(3)+X^4*LPC(4)=0

                          http://www.mathportal.org/calculators/solv...tion-solver.php
                          http://www.mathsisfun.com/algebra/polynomials-solving.html

                          существуют готовые функции для его решения в matlab и opencv.
                            Спасибо за помощь!!!

                            В книге Рабинера Цифровая обработка речевых сигналов есть формула:
                            [img]http://postimg.org/image/f3ovv1xt9/[/img]

                            а вот такой формулы не видал: LPC(0)+X*LPC(1)+X^2*LPC(2)+X^3*LPC(3)+X^4*LPC(4)=0, поэтому и интерсно откуда она возникла. как находить корни уже этого полинома - понятно.
                              Цитата
                              книге Рабинера Цифровая обработка речевых сигналов есть формула:
                              user posted image
                              а вот такой формулы не видал: LPC(0)+X*LPC(1)+X^2*LPC(2)+X^3*LPC(3)+X^4*LPC(4)=0


                              Мы в ответах просто хотели выразить полином в общем виде, в книжке, конечно же, форма более правильная.

                              Если рассматривать резонанс сигнала в речевом тракте, то его можно описать по формуле:

                              ExpandedWrap disabled
                                y = A(z) * z


                              где, по Рабинеру

                              ExpandedWrap disabled
                                A(z) = 1 - \sum a_k z^(-k)


                              y - сигнал на выходе (наблюдаемый), z - возбуждающий сигнал. Чтобы понять где находится форманта, где происходит наибольшее усиление, достаточно построить график комплексного обратного полинома. В простейшем случае можно построить график |A(z)| = |1/(z - a1)(z-a2)|:

                              user posted image

                              Как видно, наибольшее усиление сигнала происходит в направлении на полюса, они же корни полинома - a1 и a2. Чем ближе к полюсу, тем больше усиление, модуль стремится к бесконечности. Это направление и соответствует формантам.
                              Сообщение отредактировано: nsh -
                                Спасибо за подробные объяснения!

                                Подскажите пожалуйста, вот нашёл комплексные корни полинома, а как сопоставить их частоте соответствующей форманты?
                                смотрел в реализации matlab, но там не ясно откуда они это берут.
                                  корень в полярных координатах z=r*exp(a)
                                  r - радиус фильтра, определяет ширину,
                                  частота f=(a / (2 * pi)) * F, F- частота квантования
                                  Сообщение отредактировано: nsh -
                                    В matlab находят частоту как (arctg(Im(z)/Re(z))*F / (2 * pi)), z - комплексный корень полинома.

                                    Насколько я понял, максимум частоты сопоставляется (представляется) как (2 * pi), и уже в зависимости от угла комплексного корня полинома находим частоту форманты.
                                    Но хочется услышать насчёт этого момента разумное объяснение (правильно ли рассуждение?). По возможности можно более детальней для понимания сути происходящего. Спасибо!
                                    Сообщение отредактировано: nsh -
                                      Цитата
                                      Насколько я понял, максимум частоты сопоставляется (представляется) как (2 * pi), и уже в зависимости от угла комплексного корня полинома находим частоту форманты.


                                      Вы всё правильно поняли. Попробуйте разбираться в таких вещах самостоятельно, в будущем пригодится.
                                        ну я то понимаю как сделать, но не понимаю почему именно так. не хватает соответствующей подготовки (базовых знаний в данной тематике)
                                          Можете пожалуйста дать совет!
                                          Построил кепстрально-сглаженный логарифмический спектр и попытался сравнить найденные значения формант, полученные мной и программой Praat, и как то значения ну очень и очень отличаются. После нахождения кепстра изменял порядок коэффициентов для обнуления, но как то результатов особых не добился.
                                          Что в данной модели ещё можно изменить для корректного нахождения формант?
                                          Спасибо!
                                            Цитата
                                            Построил кепстрально-сглаженный логарифмический спектр и попытался сравнить найденные значения формант, полученные мной и программой Praat, и как то значения ну очень и очень отличаются. После нахождения кепстра изменял порядок коэффициентов для обнуления, но как то результатов особых не добился.


                                            Ну надо данные и код, наверное, показать. А то, как говорится, телепаты в отпуске.
                                              Исследовавал прикреплённый файл (произношение звука "а") на наличие формант с помощью PRAAT и Speech Analyzer
                                              Прикреплённый файлПрикреплённый файлsound_A.wav (16,46 Кбайт, скачиваний: 540)

                                              Между двумя программами вышло несоответствие: Speech Analyzer выдаёт результаты формант F1, F2, F3, F4, но в PRAAT выдаются эти же значения только F1, F3, F4, т.е. либо PRAAT не находит вторую форманту в прикреплённом файле, либо Speech Analyzer выдаёт "ложную" вторую форманту.

                                              Сравнение данных при 130 миллисекундах файла:

                                              PRAAT Speech Analyzer
                                              F1 F2 F3 F1 F2 F3 F4
                                              668 2519 3169 678 1587 2580 3240

                                              Можете пожалуйста подсказать, почему возникает несоответствие и какая из программ выдаёт правильные результаты, а какая нет.

                                              Также сам строил кепстрально сглаженный логарифмический спектр. После вычисления обратного преобразования Фурье от логарифма спектра, обнуляю коэффициенты с К до (N - K). При выборе К = 8 значения получаются уж слишком приближённые (не точные), что не позволяет точного нахождения формант. При выборе К = 20, результат получается значительно точнее, но в данном случае получаются лишние значения частот. часть из найденных частот - форманты, но не ясно как отделять форманты от лишних частот. Можете пожалуйста дать совет
                                                если это звук А - то редуцированный
                                                начало больше похоже на Э конец на Ы или И
                                                в районе максимального пика энергии (в позиции 170мс)
                                                F1 около 660Hz
                                                F2 около 2950Hz
                                                F3/F4 около 7300Hz (можно рассматривать как F4, так как F3 на самом деле подходит очень близко в F2 и практически не видна. В динамике её можно было бы уследить в районе 4100Hz)

                                                в позиции 130мс:
                                                F1 ~ 630Hz
                                                F2 ~ 2700Hz
                                                F3 ~ 4560Hz
                                                Сообщение отредактировано: zamir -
                                                  а какой Вы программой пользовались для получения таких данных?
                                                    SFSWin LPC 9 коэффициентов

                                                    Добавлено
                                                    http://www.phon.ucl.ac.uk/resource/sfs/
                                                      Цитата zamir @
                                                      F2 ~ 2700Hz

                                                      Какая F2? Зачем Вы третью форманту за вторую выдаёте? Тогда уж напишите, что второй нет.
                                                      И из литературы и из логики - вторая форманта у "А" находится около 1000 Гц или чуть выше.

                                                      Цитата zamir @
                                                      если это звук А - то редуцированный

                                                      Причём тут редукция? По звучанию и по параметрам вполне себе ударный звук, т.к. достигаются и удерживаются "эталонные" значения первой и второй формант для ударного "А". Здесь имеет место явная коартикуляция. Складывается ощущение, что звук вырезан из слитной речи, кроме стационарного участка "А", захватив участки коартикуляции с соседними звуками. После "А" явно идёт либо "и", либо мягкая согласная (например, "Ай").

                                                      На рисунке 1 не совсем форманты - там максимальные по интенсивности гармоники в двух частотных интервалах: до 800 Гц и от 800 до 2500 Гц. Красный цвет - гармоника, максимальная по значению интенсивности, чёрный - вторая по интенсивности. На интервале, где только чёрный цвет - невокализованный участок, поэтому гармоники не определяются. Второй рисунок - частота основного тона (на всякий случай).
                                                      Прикреплённый файлПрикреплённый файл1.jpg (100,21 Кбайт, скачиваний: 687)
                                                      Прикреплённый файлПрикреплённый файл2.jpg (79,11 Кбайт, скачиваний: 678)
                                                        Я извиняюсь, читаю мало, мне казалось форманты свойственны не только речи но и другим звукам, поэтому у меня сложилось мнение что у них нет конкретных диапазонов частот...

                                                        Что касаемо моего слуха, видимо мой слух не оправдывает мою фамилию...

                                                        вот что я слышу как А:
                                                        http://upload.wikimedia.org/wikipedia/comm...unded_vowel.ogg
                                                        car [kʰäː]
                                                        http://upload.wikimedia.org/wikipedia/comm...unded_vowel.ogg
                                                        nut [nɐt]

                                                        вот то что мне больше Э напоминает
                                                        http://upload.wikimedia.org/wikipedia/comm...unded_vowel.ogg
                                                        bird [bɜːd]
                                                        http://upload.wikimedia.org/wikipedia/comm...unded_vowel.ogg
                                                        bed [bɛd]

                                                        Соответсвенно звук который приложили мне больше напоминает Э

                                                        Добавлено
                                                        А вот распознаётся этот звук у меня не так как я его слышу...
                                                        звук А наиболее хорошо распознаётся в промежудке 100мс-120мс (этот звук мы услушать не можем)
                                                        затем этот звук больше напоминает О
                                                        который начиная со 190мс постепенно переходит в А и максимально напоминает А в отметке 260мс
                                                        после этого звук проходит в О (270мс - 390мс) и переходит в И на отметке 400мс

                                                        наибольше скопление энергии в промежудке 190-260мс
                                                        это как раз промежуток перехода звука из О в А

                                                        Если верить моей распознавалке то в русском языке - это либо буква А либо буква О первой степени редукции
                                                        http://upload.wikimedia.org/wikipedia/comm...unded_vowel.ogg

                                                        p.s. слышу я всё равно Э, соответсвенно либо я глух, либо распознавка плохо обучена...
                                                          Всем спасибо за ответы!

                                                          Построил кепстрально сглаженный логарифмический спектр. После вычисления обратного преобразования Фурье от логарифма спектра, обнуляю коэффициенты с К до (N - K). При выборе К = 8 значения получаются уж слишком приближённые (не точные), что не позволяет точного нахождения формант. При выборе К = 20, результат получается значительно точнее, но в данном случае получаются лишние значения частот. часть из найденных частот - форманты, но не ясно как отделять форманты от лишних частот. Можете пожалуйста дать совет
                                                            Этот метод нахождения формант не даёт хорошего результата.
                                                            Самым лучшим способом мне видится LPC.

                                                            Цитата
                                                            При выборе К = 8 значения получаются уж слишком приближённые (не точные), что не позволяет точного нахождения формант.

                                                            Если вам не нравится только точность - то вы можете увеличить колличество отсчётов Фурье перед обратным преобразованием.
                                                              Цитата zamir @
                                                              p.s. слышу я всё равно Э

                                                              Звуком "Э" здесь не пахнет, основываясь на частоте второй форманты. На рисунке один из вариантов усреднённых частот формант ударных гласных.
                                                              Интереснее не сам звук, а контекст, из которого звук выдернут. А автор скрывает искомое слово.
                                                              Прикреплённый файлПрикреплённый файлformants.jpg (40,2 Кбайт, скачиваний: 743)
                                                                Цитата
                                                                Звуком "Э" здесь не пахнет, основываясь на частоте второй форманты.

                                                                я про свой слух, а не распознавание =) при распознавании основная масса звука находит между А и О - если бы это было русское слово то я с большой уверенностью говорил что в слове это была буква О. Но этом отрезке мне кажется небыло русского слова. Потому что "нормального" слова начинающегося на О после которого идёт И или Й/(ЕЮЯ) и при этом О безударное я не нашёл =) К тому же русскому человеку держать длительное время фонему между О и А врятли удастся.

                                                                Цитата
                                                                На рисунке один из вариантов усреднённых частот формант ударных гласных.

                                                                хороший рисунок. Ранее не встречал. Спасибо.
                                                                  Это отрывок был английским звуком "а". Но дело не в том, какой это звук, а как поточнее определять форманты (файл был прикреплён как рассматриваемый объект, в котором разногласие в нахождении формант)
                                                                    Цитата
                                                                    Но дело не в том, какой это звук, а как поточнее определять форманты


                                                                    Как уже писалось, для точного нахождения формант нужно отслеживать их значения на различных периодах сигнала с помощью алгоритма динамического программирования.
                                                                      Цитата sar_android @
                                                                      Это отрывок был английским звуком "а".

                                                                      Терзают смутные сомнения, что это был дифтонг, а не звук "а".

                                                                      Цитата sar_android @
                                                                      как поточнее определять форманты

                                                                      Смотря зачем. Если для распознавания звуков, то устоялось мнение, что для этого достаточно первых двух формант (по крайней мере, для гласных). А третья, четвёртая форманты характеризуют индивидуальность голоса человека. Выделяете частотный интервал, примерно соответствующий искомой форманте, и пасёте там спектральные максимумы. Проблема - частотные интервалы формант пересекаются. Вторая проблема - вокализованные звуки. У них на формантную структуру накладывается гармоническая структура, поэтому вдобавок к глобальным формантным максимумам появляются локальные максимумы на частотах, кратных частоте основного тона.
                                                                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                      0 пользователей:


                                                                      Рейтинг@Mail.ru
                                                                      [ Script execution time: 0,0726 ]   [ 21 queries used ]   [ Generated: 8.09.24, 10:21 GMT ]