
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.30] |
![]() |
|
Страницы: (23) « Первая ... 15 16 [17] 18 19 ... 22 23 ( Перейти к последнему сообщению ) |
Сообщ.
#241
,
|
|
|
Доброго времени суток!
Использую: pocketsphinx ОС: Windows 7 x64 Цель: Управление умным домом. Различные команды например: "дом включи фильм", "следующий", "предыдущий", "спасибо". Вопрос: "Как создать свою lm с помощью srilm?" (собрать из исходников я смогу, но что дальше и с какими параметрами вызывать...) А то по cmuclmtk есть инструкция, на русском, пошаговая. А про srilm не понятно, какие команды надо выполнить и что скормить, чтобы получить lm? Я так понимаю нужно составить какой-то файл (не знаю формата) с предложениями, его скормить и получить lm. Вопрос 2: "Какой формат этого файла? Вопрос 3: "Если у меня могут быть команды как целиком 'дом включи фильм', так и частично 'дом включи','фильм' или 'дом','включи фильм'. То как составлять перечень предложений для lm и для адаптации?" Спасибо! |
![]() |
Сообщ.
#242
,
|
|
Цитата Вопрос: "Как создать свою lm с помощью srilm?" (собрать из исходников я смогу, но что дальше и с какими параметрами вызывать...) А то по cmuclmtk есть инструкция, на русском, пошаговая. А про srilm не понятно, какие команды надо выполнить и что скормить, чтобы получить lm? Документация по srilm тут: http://www.speech.sri.com/projects/srilm/p...p2002-srilm.pdf Для того, чтобы сделать модель из текстового файла можно использовать следующую команду: ![]() ![]() ngram-count -text text.txt -lm text.lm Цитата Вопрос 2: "Какой формат этого файла? Входной файл - любой текстовые файл, новые предложения на новой строчке. В файле не должно быть пунктуации, все слова должны быть в одном регистре. Цитата Вопрос 3: "Если у меня могут быть команды как целиком 'дом включи фильм', так и частично 'дом включи','фильм' или 'дом','включи фильм'. То как составлять перечень предложений для lm и для адаптации? Так и составлять. Каждое возможное предложение на новой строчке. Для активации распознавания лучше использовать режим поиска ключевых слов и переключаться в распознавание только когда ключевое слово обнаружен. Подробно это описано в документации. Добавлено Цитата SAndrusReg @ Exception in thread "main" java.lang.IllegalStateException: javax.sound.sampled.LineUnavailableException: line with format PCM_SIGNED 16000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian not supported. На данный момент Dialog не работает под Windows из-за того, что Windows не позволят использовать микрофон дважды. Если создавать только один LiveRecognizer, всё будет работать. Сообщения были разделены в тему "Вызов команды с помощью голоса" |
Сообщ.
#243
,
|
|
|
Здравствуйте.
Прочитал всю ветку. Много полезного. "Но я старый солдат и не знаю" Си и Linux, только Delphi, посему что-то собрать и запустить для меня не реально. Зато реально разобраться во всем с нуля, с потрахов. Иду своим путем. Все что касается FFT, MFCC, DTW - это пройденый этап. Позвольте вопрос, уважаемый nsh. Вот здесь http://cmusphinx.sourceforge.net/wiki/tutorialconcepts Есть фраза: Then for each frame of length typically 10 milliseconds we extract 39 numbers that represent the speech. Какие кокретно параметры описывают кадр? Наверняка есть кепстральные коэфы, сколько их и что кроме? На мой взгляд от того каков специфический набор параметров многое зависит, в том числе и влияние шума. |
![]() |
Сообщ.
#244
,
|
|
Цитата "Но я старый солдат и не знаю" Си и Linux, только Delphi, Pocketsphinx можно использовать из Delphi, пример можно скачать тут: https://www.dropbox.com/s/pmtdpvtkkcb8m24/P...Delphi.zip?dl=0 Цитата Какие кокретно параметры описывают кадр? Наверняка есть кепстральные коэфы, сколько их и что кроме? MFCC 13 коэффициентов, 13 разностных (дельта) коэффициентов, 13 двойных разностей. Больше там ничего нет. http://www.dialog-21.ru/digests/dialog2007...als/html/36.htm |
Сообщ.
#245
,
|
|
|
Цитата nsh @ MFCC 13 коэффициентов, 13 разностных (дельта) коэффициентов, 13 двойных разностей. Больше там ничего нет. Мне не понятно следующее. Хорошо, есть 39 параметров, которые характеризуют каждые 10 мс. речевого потока. Назовем это вектором. Есть априори полученная фонетическая модель. Что это значит? Для каждой фонемы прописано из скольки таких векторов она состоит? То есть первичным является вектор. Фонема состоит из нескольких векторов. Но как решается неоднозначность по темпу произношения? Априорная фонетическая модель создана одним диктором, или имеет варианты? Т.е одна фонема для разных дикторов содержит разный набор векторов и это записано где-то в базе? |
![]() |
Сообщ.
#246
,
|
|
Цитата Хорошо, есть 39 параметров, которые характеризуют каждые 10 мс. речевого потока. Назовем это вектором. Есть априори полученная фонетическая модель. Что это значит? Для каждой фонемы прописано из скольки таких векторов она состоит? Ничего не прописано. Модель описывает вероятность значения вектора для каждой фонемы. Есть наиболее вероятное значение (среднее) и распределение вероятностей (дисперсия). По вектору и модели мы можем определить вероятность того, что вектор принадлежит части фонемы (началу фонемы, середине фонемы и концу фонемы) и так для каждой фонемы. Цитата Но как решается неоднозначность по темпу произношения? При поиске наилучшего слова мы разрешаем сопоставлять несколько фреймов одному фонемному состоянию. Цитата Априорная фонетическая модель создана одним диктором, или имеет варианты? Обычно модель создана из голосов большого числа дикторов. Такие модели позволяют распознавать речь разных людей. Есть модели созданные из речи одного диктора. Такие модели не могут распознавать речь разных людей, но хорошо распознают речь диктора. Цитата Т.е одна фонема для разных дикторов содержит разный набор векторов и это записано где-то в базе? Распределение вероятностей общее. Дисперсия, в то же время, описывается несколькими возможными слагаемыми. Эти слагаемые могут предпочитать речь разных дикторов. |
Сообщ.
#247
,
|
|
|
Цитата nsh @ Спасибо, кое-что проясняется. И проект на Delphi оживает. Еще пару вопросов. В акустической модели априори необходимо определить фонему и набор векторов из которых она состоит. Но вот вопрос. Как это наговаривается. Врядли дикторы произносят фонемы, скорее они произносят слова. А как из произнесенного слова выделяют фонемы? На эту тему масса статей. Как это в сфинксе делается? Да и сама фонема - вещь крайне неоднозначная. Я так понимаю, чтобы сделать такую работу для русского языка это не мало потрудится надо. Есть ли способы автоматизации процесса? И относительно фонемы. Очевидно, что фонема это не слог. Я для русского языка говорю. В слове маЛИна и в слове уЛИца два априори известных слога, условно определяющих фонему ЛИ. Но их спектральное содержание совершенно разное из-за соседей. Можно считать их разными фонемами или одной, но с вариантами. Тогда вопрос сколько таких условных фонем содержит русская акустическая модель? |
![]() |
Сообщ.
#248
,
|
|
Цитата В акустической модели априори необходимо определить фонему и набор векторов из которых она состоит. Фонема не состоит из векторов. Правильно говорить - соответствует векторам. Цитата А как из произнесенного слова выделяют фонемы? На эту тему масса статей. Как это в сфинксе делается? Алгоритм Баума-Велха позволяет обучать модели без начального разделения на фонемы, только зная последовательность фонем. http://logic.pdmi.ras.ru/~sergey/teaching/mlbayes/06-hmm.pdf Цитата Да и сама фонема - вещь крайне неоднозначная. Я так понимаю, чтобы сделать такую работу для русского языка это не мало потрудится надо. Есть ли способы автоматизации процесса? Набор фонем русского языка широко описан в литературе. https://ru.wikipedia.org/wiki/Русская_фонетика Цитата В слове маЛИна и в слове уЛИца два априори известных слога, условно определяющих фонему ЛИ. в слоге ли две фонемы - 'л' и 'и' Цитата Но их спектральное содержание совершенно разное из-за соседей. Для моделирования контекста используются контекстно-зависимые сеноны Цитата Тогда вопрос сколько таких условных фонем содержит русская акустическая модель? 4000 |
Сообщ.
#249
,
|
|
|
Цитата nsh @ Уважаемый, nsh! Я благодарен вам за ответы. Теперь я более утвердился в том, что можно построить совершенно иную систему распознавания, основанную не на фонемах, а на слове целиком. Точнее на тех акустических параметрах, которые более приближены к человеческому восприятию. Ребенок, когда учится говорить, ничего не знает о фонемах или о частях слова. Он воспринимает энергетические всплески. По моим многочисленным наблюдениям такие всплески описываются ансамблем значений спектральной плотности окна, размер которого по времени определяется квазистационарным процессом и составляет, как принято в многочисленных публикациях от 10 до 20 миллисекунд. Сочетание пиков спектральной плотности и спектральное содержание отдельных кадров, или векторов, как принято говорить, может быть весьма информативным. Более подробно я непременно напишу, когда поэкспериментирую с реализацией Sphinx на Delphi. |
Сообщ.
#250
,
|
|
|
Подскажите, пожалуйста, как решить такую проблему: в словаре есть слово "привет", распознается хорошо, но если произнести часть слова, например "ивет", "вет", "ет", то все-равно распознается слово "привет"
![]() |
![]() |
Сообщ.
#251
,
|
|
Режим поиска ключевых слов использовать (-keyphrase "привет") и порог срабатывания отрегулировать (-kws_threshold 1e-10). Для ключевых фраз лучше использовать слово из 4-5 слогов, "привет" слишком короткое.
|
Сообщ.
#252
,
|
|
|
Николай, спасибо! Видимо это самый приемлемый способ.
Если не затруднит, помогите с кириллицей разобраться. Такая вот ошибка: ![]() ![]() BindingError: String has UTF-16 code units that do not fit in 8 bits |
![]() |
Сообщ.
#253
,
|
|
Вам нужно рассказать более подробно, когда эта ошибка возникает. Как говорится "телепаты в отпуске".
|
Сообщ.
#254
,
|
|
|
Я использую pocketsphinx в веб-приложении.
При добавлении русских слов в javascript`е, консоль выдает такую ошибку: ![]() ![]() var wordList = [["привет", "p rr i vv je t"], ['пока', 'p a k aa']]; postRecognizerJob({command: 'initialize', data: [["-dict", "ru/ru.dic"], ["-hmm", "ru_ptm"], ['-jsgf', 'ru/grammar.jsgf'], ['-keyphrase', 'привет']]}, function() { if (recorder) recorder.consumers = [recognizer]; feedWords(wordList);}); ![]() Прикреплённый файл ![]() |
Сообщ.
#255
,
|
|
|
Вот пример сборки Sphinx для Delphi7 с исходниками.
|