Russian

Flat
Pocketsphinx для embedded ARM
User: ivan
Date: 4/30/2011 3:32 pm
Views: 29516
Rating: 12

Здравствуйте,

 

Возникла задача запустить распознавание голосовых команд на встраиваемой системе: 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?

 

Заранее благодарю.

Re: Pocketsphinx embedded ARM
User: nsh
Date: 4/30/2011 3:44 pm
Views: 236
Rating: 14

Квалифицированный ответ на этот вопрос можно получить на форуме CMUSphinx

https://sourceforge.net/projects/cmusphinx/forums/forum/5471

Re: Pocketsphinx embedded ARM
User: ivan
Date: 5/2/2011 3:20 pm
Views: 471
Rating: 14

Благодарю за быстрый ответ!

Вы правы. Детали о сборке "р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шт., как мне грамотно подойти по шагам к созданию модели?

Re: Pocketsphinx embedded ARM
User: nsh
Date: 5/4/2011 4:43 pm
Views: 273
Rating: 13

> Вы правы. Детали о сборке "рocketsphinx" под мою платформу лучше спросить у разработчика.

Все вопросы, не относящиеся к теме данного форума лучше задавать в более подходящем месте.

>Do not use word-based models with CMUSphinx.

Я не вижу тут противоречия

>Если мне необходимо распознавать слова-команды русского языка, 100шт., как мне грамотно подойти по шагам к созданию модели?

Никак, согласно руководству:

http://cmusphinx.sourceforge.net/wiki/tutorialam

модель создавать не нужно. Лучше озаботиться другими вопросами.

Кстати, 100 команд это не маленький, а средний словарь. Маленький словарь это максимум 30 команд.

Re: Pocketsphinx embedded ARM
User: ivan
Date: 5/5/2011 4:48 am
Views: 447
Rating: 13

Я предварительно извиняюсь за возможную некомпетентность вопросов, но есть желание и необходимость разобраться в вопросе создания новой модели (или подгонки существующей) под свою задачу и сделать оную.

 

>Никак, согласно руководству:

>http://cmusphinx.sourceforge.net/wiki/tutorialam

>модель создавать не нужно. Лучше озаботиться другими вопросами.

Какими лучше вопросами озаботиться?

 

На сейчас мне казалось что надо созвать свою Language Model в JSGF формате и Acoustic Model.

 

>Кстати, 100 команд это не маленький, а средний словарь.

>Маленький словарь это максимум 30 команд.

Если создание модели для 30 проще, чем для 100, то готов начать с 30.

 

Был бы благодарен за детали как грамотно создать свое или адаптировать существующее.

 

Заранее благодарю.

 

Re: Pocketsphinx embedded ARM
User: zamir
Date: 5/6/2011 3:27 am
Views: 190
Rating: 12

> 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

Re: Pocketsphinx embedded ARM
User: ivan
Date: 5/6/2011 4:00 am
Views: 349
Rating: 12

Благодарю, zamir!

Итого, резюмируя Ваши слова:

1. Сокращаю словарь до требуемых мне слов.

2. Собираю свою LM модель.

3. Использую существующие AM.

 

У меня рабочая платформа "айфоноподобная", но только мой ARM послабее ARM-а "айфоновского".

О результатах отпишу.

Re: Pocketsphinx embedded ARM
User: zamir
Date: 5/6/2011 3:36 am
Views: 215
Rating: 14

вот ещё ссылки:


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)

Re: Pocketsphinx embedded ARM
User: ivan
Date: 5/10/2011 11:37 am
Views: 208
Rating: 16

Zamir, Ограничил словарь, сделал подключил свою LM в виде JSGF, все заработало довольно шустро, скорость распознавания в пределах 1 секунды.

Порой "случайно сказанный текст" распознается устойчивой фразой из моей LM. 

Подскажите, есть ли параметры в pocketsphinx, которые выдают "результирующую точность распознавания", чтобы отсечь "случайные иносказания"?

 

 Заранее благодарю.

Re: Pocketsphinx embedded ARM
User: zamir
Date: 5/10/2011 11:55 am
Views: 178
Rating: 11

Таких параметром не знаю. Есть параметры beam которые позволяют расширить области поиска и например в ущерб скорости увеличить качество распознования. Но самый правильный способ улучшить качество распознавания - это улучшить акустическую модель. Что бы улучшить акустическую модель - надо собрать больше материала. Самый простой способ это взять материал с сайтов (подкасты) или из аудио-книг и нарезать материал по 10 сек. Для помощи нарезки материала и помощи сборки модели мой создан проект:

https://github.com/zamiron/ru4sphinx

Если есть заинтересованность могу скинуть материал (с сайта эхо москвы) который надо нарезать (попутно подправив текст там где он отличается от произнесённого)

PreviousNext