VoxForge
Здравствуйте,
Возникла задача запустить распознавание голосовых команд на встраиваемой системе: CPU ARM 400Mhz, DDR2 128MB.
Словарь предпологается небольшой, около 100 русских слов (словосочетаний) для командного управления.
Глядя на аппаратную платформу, необходимо оптимизировать систему для максимального быстродействия.
На сегодня, тестируем pocketsphinx 0.7, pocketsphinx_continuous с моделью из voxforge-ru-0.2 и сокращенным словарем (*.dic) к нескольким словам. Быстродействие не радует...
Подскажите, для увеличения быстродействия
1. Необходимо ли строить собственную акустическую и лингвистическую модель для желаемых 100 слов?
2. Можно ли "облегчить" модель voxforge-ru-0.2 до желаемых 100 слов?
3. При одинаковых параметрах системы как соотносится быстродействие Pocketsphinx и Sphinx4?
Заранее благодарю.
Благодарю за быстрый ответ!
Вы правы. Детали о сборке "рocketsphinx" под мою платформу лучше спросить у разработчика.
У меня вопрос по теории построения акустической модели для своей задачи "маленького словаря".
Именно тут http://cmusphinx.sourceforge.net/wiki/tutorialam пишут о разумности создать свою модель для small vocabulary application.
Но ниже есть какое-то противоречие в словах:
For small vocabulary CMUSphinx is different from other toolkits. It's often recommended to train word-based models for small vocabulary databases like digits. But it only makes sense if your HMMs could have variable length. CMUSphinx does not support word models. Instead, you need to use a word-dependent phone dictionary:
ONE W_ONE AH_ONE N_ONE TWO T_TWO UH_TWO NINE N_NINE AY_NINE N_END_NINE
This is actually equivalent to word-based models and some times even gives better accuracy. Do not use word-based models with CMUSphinx.
Если мне необходимо распознавать слова-команды русского языка, 100шт., как мне грамотно подойти по шагам к созданию модели?
> Вы правы. Детали о сборке "рocketsphinx" под мою платформу лучше спросить у разработчика.
Все вопросы, не относящиеся к теме данного форума лучше задавать в более подходящем месте.
>Do not use word-based models with CMUSphinx.
Я не вижу тут противоречия
>Если мне необходимо распознавать слова-команды русского языка, 100шт., как мне грамотно подойти по шагам к созданию модели?
Никак, согласно руководству:
http://cmusphinx.sourceforge.net/wiki/tutorialam
модель создавать не нужно. Лучше озаботиться другими вопросами.
Кстати, 100 команд это не маленький, а средний словарь. Маленький словарь это максимум 30 команд.
Я предварительно извиняюсь за возможную некомпетентность вопросов, но есть желание и необходимость разобраться в вопросе создания новой модели (или подгонки существующей) под свою задачу и сделать оную.
>Никак, согласно руководству:
>http://cmusphinx.sourceforge.net/wiki/tutorialam
>модель создавать не нужно. Лучше озаботиться другими вопросами.
Какими лучше вопросами озаботиться?
На сейчас мне казалось что надо созвать свою Language Model в JSGF формате и Acoustic Model.
>Кстати, 100 команд это не маленький, а средний словарь.
>Маленький словарь это максимум 30 команд.
Если создание модели для 30 проще, чем для 100, то готов начать с 30.
Был бы благодарен за детали как грамотно создать свое или адаптировать существующее.
Заранее благодарю.
> 2. Можно ли "облегчить" модель voxforge-ru-0.2 до желаемых 100 слов?
да. сократите фонетический словарь dic и соберите свою собственную Language Model
> 2. На сейчас мне казалось что надо созвать свою Language Model в JSGF формате и Acoustic Model.
JSGF вам подойдёт, но при старте он прекомпиоилуется в LM на сколько я понял, поэтому если говорить о скорости лучше наверное собраться свою Language Model
что касается акустической модели:
$CFG_HMM_TYPE = '.cont.'; # Sphinx III - слиная речь - качественно долго
следующие модели на сколько мне сказал Николай (nsh) как раз ориентированы на скорость в ущерб качеству:
$CFG_HMM_TYPE = '.semi.'; # PocketSphinx and Sphinx II
$CFG_HMM_TYPE = '.ptm.'; # PocketSphinx (larger data sets)
я тоже поначалу писан на этот форум о sphinx но наверное правильнее писать на официальных форумах
ещё меня не критикуют за такие писанины здесь: http://forum.sources.ru/index.php?showforum=35
Благодарю, zamir!
Итого, резюмируя Ваши слова:
1. Сокращаю словарь до требуемых мне слов.
2. Собираю свою LM модель.
3. Использую существующие AM.
У меня рабочая платформа "айфоноподобная", но только мой ARM послабее ARM-а "айфоновского".
О результатах отпишу.
вот ещё ссылки:
https://github.com/cjac/cmusphinx/tree/trunk/PocketSphinxAndroidDemo
http://cmusphinx.sourceforge.net/2010/05/vocalkit-shim-for-speech-recognition-on-iphone/
https://github.com/KingOfBrian/VocalKit
http://cmusphinx.sourceforge.net/2010/09/openears-speech-library-for-iphone-using-cmusphinx/
кстати вот тут очень положительный момент, который хочется иметь возможность использовать:
Listen continuously for speech on a background thread, while suspending or resuming speech processing on demand,
all while using less than 10% CPU on average on an iPhone 3G (decoding speech and speaking uses more CPU)
Zamir, Ограничил словарь, сделал подключил свою LM в виде JSGF, все заработало довольно шустро, скорость распознавания в пределах 1 секунды.
Порой "случайно сказанный текст" распознается устойчивой фразой из моей LM.
Подскажите, есть ли параметры в pocketsphinx, которые выдают "результирующую точность распознавания", чтобы отсечь "случайные иносказания"?
Заранее благодарю.
Таких параметром не знаю. Есть параметры beam которые позволяют расширить области поиска и например в ущерб скорости увеличить качество распознования. Но самый правильный способ улучшить качество распознавания - это улучшить акустическую модель. Что бы улучшить акустическую модель - надо собрать больше материала. Самый простой способ это взять материал с сайтов (подкасты) или из аудио-книг и нарезать материал по 10 сек. Для помощи нарезки материала и помощи сборки модели мой создан проект:
https://github.com/zamiron/ru4sphinx
Если есть заинтересованность могу скинуть материал (с сайта эхо москвы) который надо нарезать (попутно подправив текст там где он отличается от произнесённого)