![]() |
|
|
![]()
|
|
| КидерOK |
|
|||
|
Unregistered |
Привет всем. Пишу программу по обработке речевых сигналов. Если реализация ДПФ и Полосовых Фильтров не составила труда, то вот с Коэффициентами Линейного Предсказания возник трабл
Может быть кто-то знает простой алгоритм для вычисления спектра речевого сигнала на основе линейного предсказания? Естесственно, алгоритм пишется на C/C++. Если кто-то знает, напишите пожалуйста кусок кода хотя бы для анализа текущего сегмента (окна). Заранее спасибо |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
народ хелп горю
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
для этого надо сесть и немного пописать на бумажке...
z - оператор запаздывания s - сигнал A(z) - полином, соответствующий модели линейного предсказания e=A(z^-1)s - ошибка линейного предсказания E(w) - значение спектра сигнала e на частоте w S(w) - соответственно для сигнала s T - период дискретизации тогда: E(w)=A(exp(-iwT)S(w) S(w)=E(w) / A(exp(-iwT)) |S(w)|=|E(w)| / |A(exp(-iwT))| обычно в данной модели принимают |E(w)|=E - не зависит от w, т.е. e - сигнал типа "белый шум" тогда получается: |S(w)|=E / |A(exp(-iwT))| Это сообщение отредактировал(а) maxim1000 - 20.5.2004, 11:17 -------------------- qqq |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Ну и как по этому описанию составить алгоритм? Это все теория, теории - полный интернет. А толковую библиотеку - днем с огнем.
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
1. берем кусок сигнала
2. находим такие коэффициенты полинома A, чтобы среднеквадратическая ошибка была наименьшей. Обычно это делают через автокорреляционную функцию - решают систему линейных уравнений: c(j+1)=a1*c(j)+a2*c(j-1)+...+am*c(j-m+1) 3. при определении коэффициентов полинома A также определяем среднеквадратическое значение сигнала ошибки 4. вычисляем модуль спектра |S(w)|=E / |A(exp(-iwT))|
ну так обычно в теории и дается алгоритм -------------------- qqq |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Алгоритм простой - решить уравнение, записанное в самом конце статьи (уравнение Юла-Уокера).
Коэффициенты от 1 до a(p) - искомые коэффициенты LPC-фильтра. Добавлено @ 22:28 З.Ы. поскольку обрабатываешь речь, самый действенный способ - решить уравнение "в лоб". Всякие "навороченные" методы, которые могут ускорить вычисления, обладают плохой устойчивостью, особеннно когда матрица R плохо обусловлена. Будешь получать всякие exception' ы из-за того, что напрашивается решение с комплексными коэффициентами. Положение осложняется тем, что для речи порядок LPC фильтра должен быть не ниже 12. Иногда и больше. Вобщем, с наскока сразу не сделаешь, потратишь некоторое время. Зато в Матлабе получается всё красиво Присоединённый файл ( Кол-во скачиваний: 12 )
Youle.doc |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Как пример - процедура Левинсона-Дарбина. Не самое лучшее решение, но наведет на мысли.
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
упс... в моей магистерской как раз используется этот метод... а нельзя ли подробней почему? (а то надо быть готовым к этому на защите -------------------- qqq |
|||
|
||||
| podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
А что тут говорить? Итеративная процедура, придуманная ого-го когда. На защите наверняка могут спросить об устойчивости синтезированного фильтра. Если фильтр неустойчив, то при малом входном сигнале можно получить очень большой выходной. Скажешь, как ввести проверку условия устойчивости.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |