Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[34.231.180.210] |
|
Сообщ.
#1
,
|
|
|
Подскажите пожалуйста, каким образом можно вычислить форманты (как найти их частоты)? Уже просмотрел много информации в интернете, в книгах, но так чёткого представления и не сложилось об их поиске.
Построил график зависимости амплитуды от частоты (насколько я понял это спектр). Я понял, что некоторые пики на графике будут формантами. Насколько я понял, что можно вычислять форманты с помощью LPC коэффициентов, а также с помощью кепстрального анализа. Да, нашёл я LPC коэффициенты, а дальше что нужно делать? Можете пожалуйста объяснить идею вычисления формант? Спасибо! |
Сообщ.
#2
,
|
|
|
И ещё: во многих источниках пишут, что для нахождения формант можно использовать LPC коэффициенты. А с какой целью их можно использовать? что нам это даст и почему именно их советуют использовать?
|
Сообщ.
#3
,
|
|
|
вариант:
по LPC коэфициентам получить спектр максимумы на спектре - будут форматнами вот тут ещё почитайте Какие из гармоник - форманты? |
Сообщ.
#4
,
|
|
|
Цитата Подскажите пожалуйста, каким образом можно вычислить форманты (как найти их частоты)? Уже просмотрел много информации в интернете, в книгах, но так чёткого представления и не сложилось об их поиске. Построил график зависимости амплитуды от частоты (насколько я понял это спектр). Простой для понимания код можно посмотреть здесь: http://www.mathworks.com/help/signal/ug/fo...efficients.html Чтобы понять, как использовать LPC (l1, l2, l3...) коэффициенты, нужно понять их смысл - это коэффициенты фильтра речевого тракта. 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 лучше прочесть книгу по обработке сигналов. |
Сообщ.
#5
,
|
|
|
спасибо, немножко стало ясней)
Подскажите пожалуйста, что подразумевается под 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 коэффициентов и нахождения формант? (уже просмотрел довольно много книг, но не нашёл иль не понял объяснений) |
Сообщ.
#6
,
|
|
|
Цитата Можете пожалуйста объяснить, что это за формула: 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 |
Сообщ.
#7
,
|
|
|
Спасибо большое за помощь, но можно пожалуйста как-то более подробней объяснять, поскольку я впервые разбираюсь с речевыми сигналами, и на каждом шагу появляются непонятные вещи.
Цитата F(z) = 1 / (1 - r1)(1 - r2)(1 - r3)... = 1 / (l_1 + x * l_2 + x^2 * l^3...) Формула фильтра Если сможете, можно пожалуйста поподробней здесь, что это за такая формула и откуда! Читаю на данный момент книгу Цифровая обработка речевых сигналов Рабинер, Шафер. Хорошая книга! Там находят форманты с помощью кепстральных коэффициентов (не через LPC). А именно: после нахождения кепстральных коэффициентов находят кепстрально сглаженный логарифмический спектр (который каким-то образом очень сглаживает спектр), и уже максимумы этого спектра отвечают формантам. Правильно ли я понял? Спасибо за помощь! |
Сообщ.
#8
,
|
|
|
вариант с кестралными коэфициэнтами тоже возможен, но мне кажется что у него есть два недостатка:
1) может проявляться основной той - который может помешать правильному нахождению формант 2) субъективно кажется больше вычислительной мощности понадобится |
Сообщ.
#9
,
|
|
|
Цитата Форманты соответствуют пикам усиления, чтобы их найти, нужно найти комплексные корни полинома с LPC коэффициентами какой имеет вид полином с LPC коэффициентами? |
Сообщ.
#10
,
|
|
|
LPC коэфициенты представляют собой многочлен (полином)
http://ru.wikipedia.org/wiki/%D0%9C%D0%BD%...%BB%D0%B5%D0%BD c_0 + c_1x^1 + ... + c_nx^n=0 c_n - сответсвуют коэфициентам LPC такой многочлен зачастую имеет несколько решений соответсвенно все решения - будут формантами |
Сообщ.
#11
,
|
|
|
Цитата LPC коэфициенты представляют собой многочлен (полином) c_0 + c_1x^1 + ... + c_nx^n=0 почему нужно находить корни данного многочлена. Вы написали, что решения полинома укажут на форманты. А почему именно корни данного полинома??? откуда это выводится - мне не понятно. какие факты подтверждают, что корни указывают на форманты??? я нашёл LPC коэффициенты и застрял на этом моменте. пусть одно из решений полинома rts, угол ang = арктангенс(imag(rts)/real(rts)); частота frq = ang *(Fs/(2*pi)) - эта частота и будет формантой. Но вот каким образом мы определяем полином (откуда он берётся после нахождения LPC коэффициентов)??? |
Сообщ.
#12
,
|
|
|
Цитата почему нужно находить корни данного многочлена. это ещё один вариант нахождения формант - более точный скорее всего. Цитата Вы написали, что решения полинома укажут на форманты. это написал Николай: Цитата Форманты соответствуют пикам усиления, чтобы их найти, нужно найти комплексные корни полинома с 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. |
Сообщ.
#13
,
|
|
|
Спасибо за помощь!!!
В книге Рабинера Цифровая обработка речевых сигналов есть формула: [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, поэтому и интерсно откуда она возникла. как находить корни уже этого полинома - понятно. |
Сообщ.
#14
,
|
|
|
Цитата книге Рабинера Цифровая обработка речевых сигналов есть формула: а вот такой формулы не видал: LPC(0)+X*LPC(1)+X^2*LPC(2)+X^3*LPC(3)+X^4*LPC(4)=0 Мы в ответах просто хотели выразить полином в общем виде, в книжке, конечно же, форма более правильная. Если рассматривать резонанс сигнала в речевом тракте, то его можно описать по формуле: y = A(z) * z где, по Рабинеру A(z) = 1 - \sum a_k z^(-k) y - сигнал на выходе (наблюдаемый), z - возбуждающий сигнал. Чтобы понять где находится форманта, где происходит наибольшее усиление, достаточно построить график комплексного обратного полинома. В простейшем случае можно построить график |A(z)| = |1/(z - a1)(z-a2)|: Как видно, наибольшее усиление сигнала происходит в направлении на полюса, они же корни полинома - a1 и a2. Чем ближе к полюсу, тем больше усиление, модуль стремится к бесконечности. Это направление и соответствует формантам. |
Сообщ.
#15
,
|
|
|
Спасибо за подробные объяснения!
Подскажите пожалуйста, вот нашёл комплексные корни полинома, а как сопоставить их частоте соответствующей форманты? смотрел в реализации matlab, но там не ясно откуда они это берут. |
Сообщ.
#16
,
|
|
|
корень в полярных координатах z=r*exp(a)
r - радиус фильтра, определяет ширину, частота f=(a / (2 * pi)) * F, F- частота квантования |
Сообщ.
#17
,
|
|
|
В matlab находят частоту как (arctg(Im(z)/Re(z))*F / (2 * pi)), z - комплексный корень полинома.
Насколько я понял, максимум частоты сопоставляется (представляется) как (2 * pi), и уже в зависимости от угла комплексного корня полинома находим частоту форманты. Но хочется услышать насчёт этого момента разумное объяснение (правильно ли рассуждение?). По возможности можно более детальней для понимания сути происходящего. Спасибо! |
Сообщ.
#18
,
|
|
|
Цитата Насколько я понял, максимум частоты сопоставляется (представляется) как (2 * pi), и уже в зависимости от угла комплексного корня полинома находим частоту форманты. Вы всё правильно поняли. Попробуйте разбираться в таких вещах самостоятельно, в будущем пригодится. |
Сообщ.
#19
,
|
|
|
ну я то понимаю как сделать, но не понимаю почему именно так. не хватает соответствующей подготовки (базовых знаний в данной тематике)
|
Сообщ.
#20
,
|
|
|
Можете пожалуйста дать совет!
Построил кепстрально-сглаженный логарифмический спектр и попытался сравнить найденные значения формант, полученные мной и программой Praat, и как то значения ну очень и очень отличаются. После нахождения кепстра изменял порядок коэффициентов для обнуления, но как то результатов особых не добился. Что в данной модели ещё можно изменить для корректного нахождения формант? Спасибо! |
Сообщ.
#21
,
|
|
|
Цитата Построил кепстрально-сглаженный логарифмический спектр и попытался сравнить найденные значения формант, полученные мной и программой Praat, и как то значения ну очень и очень отличаются. После нахождения кепстра изменял порядок коэффициентов для обнуления, но как то результатов особых не добился. Ну надо данные и код, наверное, показать. А то, как говорится, телепаты в отпуске. |
Сообщ.
#22
,
|
|
|
Исследовавал прикреплённый файл (произношение звука "а") на наличие формант с помощью 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, результат получается значительно точнее, но в данном случае получаются лишние значения частот. часть из найденных частот - форманты, но не ясно как отделять форманты от лишних частот. Можете пожалуйста дать совет |
Сообщ.
#23
,
|
|
|
если это звук А - то редуцированный
начало больше похоже на Э конец на Ы или И в районе максимального пика энергии (в позиции 170мс) F1 около 660Hz F2 около 2950Hz F3/F4 около 7300Hz (можно рассматривать как F4, так как F3 на самом деле подходит очень близко в F2 и практически не видна. В динамике её можно было бы уследить в районе 4100Hz) в позиции 130мс: F1 ~ 630Hz F2 ~ 2700Hz F3 ~ 4560Hz |
Сообщ.
#24
,
|
|
|
а какой Вы программой пользовались для получения таких данных?
|
Сообщ.
#25
,
|
|
|
Сообщ.
#26
,
|
|
|
Цитата zamir @ F2 ~ 2700Hz Какая F2? Зачем Вы третью форманту за вторую выдаёте? Тогда уж напишите, что второй нет. И из литературы и из логики - вторая форманта у "А" находится около 1000 Гц или чуть выше. Цитата zamir @ если это звук А - то редуцированный Причём тут редукция? По звучанию и по параметрам вполне себе ударный звук, т.к. достигаются и удерживаются "эталонные" значения первой и второй формант для ударного "А". Здесь имеет место явная коартикуляция. Складывается ощущение, что звук вырезан из слитной речи, кроме стационарного участка "А", захватив участки коартикуляции с соседними звуками. После "А" явно идёт либо "и", либо мягкая согласная (например, "Ай"). На рисунке 1 не совсем форманты - там максимальные по интенсивности гармоники в двух частотных интервалах: до 800 Гц и от 800 до 2500 Гц. Красный цвет - гармоника, максимальная по значению интенсивности, чёрный - вторая по интенсивности. На интервале, где только чёрный цвет - невокализованный участок, поэтому гармоники не определяются. Второй рисунок - частота основного тона (на всякий случай). Прикреплённый файл1.jpg (100,21 Кбайт, скачиваний: 687) Прикреплённый файл2.jpg (79,11 Кбайт, скачиваний: 678) |
Сообщ.
#27
,
|
|
|
Я извиняюсь, читаю мало, мне казалось форманты свойственны не только речи но и другим звукам, поэтому у меня сложилось мнение что у них нет конкретных диапазонов частот...
Что касаемо моего слуха, видимо мой слух не оправдывает мою фамилию... вот что я слышу как А: 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. слышу я всё равно Э, соответсвенно либо я глух, либо распознавка плохо обучена... |
Сообщ.
#28
,
|
|
|
Всем спасибо за ответы!
Построил кепстрально сглаженный логарифмический спектр. После вычисления обратного преобразования Фурье от логарифма спектра, обнуляю коэффициенты с К до (N - K). При выборе К = 8 значения получаются уж слишком приближённые (не точные), что не позволяет точного нахождения формант. При выборе К = 20, результат получается значительно точнее, но в данном случае получаются лишние значения частот. часть из найденных частот - форманты, но не ясно как отделять форманты от лишних частот. Можете пожалуйста дать совет |
Сообщ.
#29
,
|
|
|
Этот метод нахождения формант не даёт хорошего результата.
Самым лучшим способом мне видится LPC. Цитата При выборе К = 8 значения получаются уж слишком приближённые (не точные), что не позволяет точного нахождения формант. Если вам не нравится только точность - то вы можете увеличить колличество отсчётов Фурье перед обратным преобразованием. |
Сообщ.
#30
,
|
|
|
Цитата zamir @ p.s. слышу я всё равно Э Звуком "Э" здесь не пахнет, основываясь на частоте второй форманты. На рисунке один из вариантов усреднённых частот формант ударных гласных. Интереснее не сам звук, а контекст, из которого звук выдернут. А автор скрывает искомое слово. Прикреплённый файлformants.jpg (40,2 Кбайт, скачиваний: 743) |
Сообщ.
#31
,
|
|
|
Цитата Звуком "Э" здесь не пахнет, основываясь на частоте второй форманты. я про свой слух, а не распознавание =) при распознавании основная масса звука находит между А и О - если бы это было русское слово то я с большой уверенностью говорил что в слове это была буква О. Но этом отрезке мне кажется небыло русского слова. Потому что "нормального" слова начинающегося на О после которого идёт И или Й/(ЕЮЯ) и при этом О безударное я не нашёл =) К тому же русскому человеку держать длительное время фонему между О и А врятли удастся. Цитата На рисунке один из вариантов усреднённых частот формант ударных гласных. хороший рисунок. Ранее не встречал. Спасибо. |
Сообщ.
#32
,
|
|
|
Это отрывок был английским звуком "а". Но дело не в том, какой это звук, а как поточнее определять форманты (файл был прикреплён как рассматриваемый объект, в котором разногласие в нахождении формант)
|
Сообщ.
#33
,
|
|
|
Цитата Но дело не в том, какой это звук, а как поточнее определять форманты Как уже писалось, для точного нахождения формант нужно отслеживать их значения на различных периодах сигнала с помощью алгоритма динамического программирования. |
Сообщ.
#34
,
|
|
|
Цитата sar_android @ Это отрывок был английским звуком "а". Терзают смутные сомнения, что это был дифтонг, а не звук "а". Цитата sar_android @ как поточнее определять форманты Смотря зачем. Если для распознавания звуков, то устоялось мнение, что для этого достаточно первых двух формант (по крайней мере, для гласных). А третья, четвёртая форманты характеризуют индивидуальность голоса человека. Выделяете частотный интервал, примерно соответствующий искомой форманте, и пасёте там спектральные максимумы. Проблема - частотные интервалы формант пересекаются. Вторая проблема - вокализованные звуки. У них на формантную структуру накладывается гармоническая структура, поэтому вдобавок к глобальным формантным максимумам появляются локальные максимумы на частотах, кратных частоте основного тона. |