| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > СММ |
| Автор: Voprosnikov 23.6.2004, 16:41 |
| Вопрос про скрытые модели маркова в распознавании речи. Подскажите, плиз, каким образом осуществляется: 1) выбор количества состояний каждой модели 2) задание количества компонент Гауссовской смеси в случае непрерывных СММ 3) задание начальных значений pi, A, B (т.е. параметров СММ) Если известна ссылка на ресурс, где все это в понятной форме разъяснено - благодарности не будет предела Заранее спасибо. |
| Автор: maxim1000 23.6.2004, 16:55 | ||
в одной из встречавшихся мне реализаций делали так: 1. выбирают достаточно большое количество состояний 2. распознают исходное слово 3. уменьшают количество состояний 4. повторяют предыдущие пункты, пока ошибка распознавания не превысит порог |
| Автор: podval 23.6.2004, 19:52 | ||
Зависит от того, на чём обучаем СММ. Если на фонемах, то чаще всего берут 3 состояния + 2 фиктивных (как бы начало и конец фонемы). Если на аллофонах - какая-то своя методика. На 2-й и 3-й вопрос однозначного ответа нет. Очень много "если - то". Хорошо об этом написано в ТИИЭР в статье Рабинера "Применение СММ в распознавании речи". Вообще на эту тему русской литературы почти нет. То, что указал выше, является переводом. Туториал от гуру: http://www.ai.mit.edu/~murphyk/Software/HMM/rabiner.pdf Еще чтения: http://www.ee.washington.edu/techsite/papers/documents/UWEETR-2002-0003.pdf http://www.icsi.berkeley.edu/~jagota/NCS/vol2.html http://www.datalab.uci.edu/papers/hmmpin.pdf У Рабинера есть еще хорошая книжка "Fundamentals of speech recognition". Вот это в качестве "галопа по европам": http://dsp-book.narod.ru/rec-notes.pdf. Сразу обнадежу: "с нуля" поднять эту тему непросто Полезная страничка: http://encyclopedia.thefreedictionary.com/Hidden%20Markov%20model. На ней линки не забудь. |
| Автор: Voprosnikov 23.6.2004, 21:36 | ||
Спасибо за ответ и за "обнадеживание" =) Целью я задалась, так что... Рабинера тоже читала - в оригинале, но, как было замечено, с нуля тяжело в этом разобраться, отсюда и вопросы... Вот по-поводу Рабинера... В главе 4, пункт Е он пишет о возможных (2х) способах выбора количества состояний модели: первый вариант - кол-во фонем, второй - кол-во observations, те каждые 15мс моделирует одно состояние. Так вот, во втором случае получается, что наша СММ будет иметь достаточно много состояний. 1. Меняется ли это количество в процессе тренинга или остается? 2. Что из себя представляет тренинг Витерби? (на пальцах если можно =) 3. В распознавании алгоритм Витерби может быть использован для подсчета max вероятности наблюдений, пропущенных через модель. А для чего нам может пригодится последовательность состояний, максимизирующих эту вероятность? Ведь, как я понимаю, при распознавании речи используются чаще всего лево-правые СММ 1го порядка и последовательность там может быть лишь различной комбинацией "состояние(i) - состояние(i+1)" и "состояние(i) - состояние(i)"... 4) этот вопрос был задан на другом форуме, но ответа не последовало.... Может, здесь кто подскажет... например, нас есть СММ для слова "лом", мы произносим слово "лом" и просто "л" - какая вероятность будет больше: Р("лом"|СММ) или Р("л"|СММ)? Если считать по forward алгоритму, то Р("л"|СММ) будет больше. Как вообще длина слова может быть учтена в СММ? И опять длина СММ - в реальных системах она одна для всех СММ или все-таки различна? Очень надеюсь на ответ... |
| Автор: podval 23.6.2004, 22:50 | ||||||||||
Остается: одно наблюдение = один фрейм сигнала = одно состояние.
Это не тренинг, а декодирование.
Чтобы определить, к какой из фраз (слов) наиболее вероятно относится принятая реализация.
Принято считать не P(x), а -log P(x). Длина слова учитывается как раз количеством состояний в полученной СММ.
Смотря длину ЧЕГО ты спрашиваешь. Если рассматривать длину элементарной единицы речи (фонема, например), то ее длина, измеренная в количестве состояний СММ, одна и та же. Длина слов, фраз - разная, т.к длительность их разная, т.е. разное количество фонем и, соответственно, разное количество состояний СММ. |
| Автор: Voprosnikov 24.6.2004, 00:19 | ||
Вот в этом-то и вопрос... Предположим, что мы рассматриваем СММ для целых слов, не для фонем. Вот спикер что-то сказал (иными словами, получили мы тренировочный набор векторов свойств), теперь мы хотим создать СММ для этого слова. Как выбрать кол-во состояний модели: 2 способа упомянутые выше (из Рабинера) - и все, больше ничего не придумали? Т.е. я беру и на каждый вектор создаю состояние и в итоге для выходной ф-ции должно получиться, что для этого отдельного символа (то, что получили после VQ, т.е.) вероятность выхода большая, а для остальных символов - маленькая? Вопрос звучит несколько сумбурно, но тем не менее... это все как-то unclear пока что... Да, и потом получается подряд много одинаковых состояний, т.к. рассматриваем 15мс интервал... а что тогда делать с "петлями", если на каждый символ - свое состояние? Да, а с "лом" и "л" как? Какой будет результат? |
| Автор: podval 24.6.2004, 08:55 | ||||||||
СММ используются по-разному в разных задачах. Если мы распознаем ключевые слова (keywords spotting) - это одно, если занимаемся распознаванием слитной речи (continuous speech) - это совершенно другое. СММ в этих двух случаях решают разные задачи, обучаются и используются по-разному.
Вернись, пожалуйста к основам. Перечитай туториал.
Ну и что с того? Если принятая реализация имеет длину N состояний, то декодировать будем, ориентируясь именно на N, а ветви, длина которых меньше, просто режутся. Другими словами, если мы нашли, что принятая реализация содержит 3 фонемы, то слова из 1 фонемы нас уже не волнуют, какая бы вероятность для них ни была. |
| Автор: podval 24.6.2004, 09:12 |
| Рекомендую разыскать вот такую книгу: Frederick Jelinek. "Statistical Methods for Speech Recognition". Massachusetts Institute of Technology, 2nd printing, 1999. Очень толково написано все, что касается применения СММ. |
| Автор: Voprosnikov 24.6.2004, 09:52 | ||
ок, спасибо за ответы! постараюсь найти книжку... а есть ли ее перевод? |
| Автор: podval 24.6.2004, 20:10 |
| Насчет перевода очень сомневаюсь. В России людей, плотно занимающихся методами СММ, маловато. |
| Автор: Voprosnikov 25.6.2004, 16:06 | ||
Ок. Я уже на английском нашла. Там математики...эх... Кстати, в Вы не знаете ресурсы, где можно скачать работающие демки систем распознавания речи+краткое описание общих принципов их построения? Что бы немного прикоснуться к практике... |
| Автор: podval 25.6.2004, 18:33 |
| http://www.torch.ch/ - здесь очень удачная библиотека функций на С++. http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html - это матлабовский тулбокс. http://htk.eng.cam.ac.uk/ - Hidden Markov Model Toolkit. |
| Автор: Voprosnikov 29.6.2004, 12:13 | ||
ок, спасибо большое за ссылки! Еще вопрос про инициализацию СММ... Segmental K-means алгоритм может быть использован для тренинга как самостотятельно, так и как вспомогательная процедура для инициализации параметров СММ перед переоценкой с пом. Вом-Вэлша? Это так? И еще: какие методы тренинга вообще используются. Как я понимаю все зависет от того, что оптимизируем. Можно кратко указать, какие алгоритмы существуют и что они оптимизируют? (а то каша в голове почти неизбежна Заранее спасибо! |
| Автор: podval 29.6.2004, 20:28 | ||||
Ну если ты прочитала об этом, значит так Слишком узкоспециализированный вопрос.
Ищи EM algorithm. Гугл выдаст большую кучу ссылок. Вот одна из них выглядит вполне убедительно: http://page.mi.fu-berlin.de/~biocomp/Lehre/MarkovKetten_WS02/seminar/BilmesGentleTutEMAlgoHMM98.pdf |
| Автор: Voprosnikov 30.6.2004, 00:03 | ||
Ух, спасибо большое... На самом деле у меня вопросов по СММ воз и маленькая тележка... Так что тему буду продолжать, если возражений нет... |
| Автор: podval 30.6.2004, 19:30 |
| Будем, но только я в этой теме разбираюсь в пределах своей некомпетенции Как говаривают, точный ответ не обещаю, но направление поиска всегда пожалуйста. |
| Автор: kestas 18.11.2004, 16:29 | ||
Help I need link to |
| Автор: podval 18.11.2004, 18:36 | ||||
I am afraid you can find a hard copy at shops only. I recommend to use one very helpful on-line tutorial here: http://www.isip.msstate.edu/projects/speech/software/tutorials/production/fundamentals/current/ |