Зачем роботу уши? (опрос: нужен ли OpenTod)


    Второй из законов робототехники, сформулированных небезызвестным американским писателем-фантастом Айзеком Азимовым, гласит, что робот должен повиноваться приказам, которые дает человек. Какими способами можно отдавать приказы роботу? Если верить большинству фантастических фильмов, то наиболее комфортным способом общения с роботом является естественная человеческая речь. Именно поэтому мы предоставили роботу Tod, как настоящему слуге человека, долгожданную возможность понимания голосовых команд управления и синтеза речи на русском языке. Теперь достаточно, например, отдать приказ «Робот, езжай на кухню», чтобы робот выполнил необходимую задачу. Под катом мы расскажем подробнее об используемом на роботе ПО для распознания и синтеза речи, а в видеороликах покажем примеры использования голосовых команд.
    Вектор развития нашего проекта зависит от мнения хабрасообщества. Заинтересованы ли вы в использовании робота Tod как open source платформы для разработчиков? Пожалуйста, проголосуйте в нашем опросе.


    Распознание речи в Pocketsphinx


    Большинство обладателей современных смартфонов уже опробовали какую-нибудь систему голосового поиска и оценили некоторые ее преимущества перед традиционным методом сенсорного ввода данных. А некоторые любители автоматизации научили свой ПК понимать команды голосового управления, благо на Хабре и в сети достаточно мануалов по этой теме.
    Если ваш робот использует Linux, то научить его понимать речь будет не намного сложнее, чем сделать тоже самое на домашнем ПК. Можно использовать для распознания речи любой из движков, распространяемых с открытым исходным кодом. В отличии от облачных сервисов распознания речи, это позволяет роботу оставаться на связи и в отсутствии интернета.
    Наш робот использует open source голосовой движок CMU Sphinx, разработанный американским университетом Карнеги-Меллон и активно поддерживаемый Массачусетским технологическим институтом и компанией Sun Microsystems. Одно из преимуществ этого движка — возможность адаптации звуковой модели для конкретного человека. И что для нас немаловажно, движок легко интегрируется в ROS — робототехнический фреймворк для нашего Tod.
    CMU Sphinx состоит из 3 основных компонентов:
    • акустическая модель, преобразующая звук в фонемы
    • словарь, преобразующий фонемы в слова
    • языковая модель — строит предложение из полученных слов

    Акустическая модель представляет собой набор звуковых записей, разбитых на речевые отрезки. Для небольшого словаря можно создать акустическую базу самому, но лучше все-таки воспользоваться акустической базой проекта VoxForge.org, которая содержит более десяти часов надиктованных на русском записей.
    Следующий этап адаптации акустической модели необязателен, но он сделает распознание более качественным конкретно для вашего голоса. Надиктованные вами фразы добавляются в основную акустическую модель, что позволяет учитывать особенности вашего произношения при распознавании.
    Словарь в CMU Sphinx — это просто текстовый файл с фразами и соответствующими им фонемами. Наш словарь состоит из разных команд управления роботом:
    Словарь
    без bb je s
    без(2) bb i z
    без(3) bb i s
    без(4) bb je z
    без(5) bb je s
    вперед f pp i rr jo t
    время v rr je mm i
    где g dd je
    два d v aa
    два-три d v aa t rr ii
    день dd je nn
    завтра z aa f t r ay
    зал z aa l
    здравствуй z d r aa s t v u j
    знаешь z n aa i sh
    зовут z a v uu t
    как k aa k
    какая k aa k ay i
    какая(2) k a k aa i
    какой k a k oo j
    конца k a n c aa
    кто k t oo
    кухню k uu h nn uj
    любишь ll ju bb i sh
    меня mm i nn ja
    милый mm ii l y j
    мне m nn je
    можешь m oo zh y sh
    мой m oo j
    найти n a j tt ii
    недели nn i dd je ll i
    оглядки a g ll ja t kk i
    один a dd ii n
    папе p aa pp i
    пиво pp ii v ay
    поживаешь p ay zh y v aa i sh
    поиграем p ay i g r aa i m
    пока p a k aa
    погода p a g oo d ay
    предмет p rr i d mm je t
    привези p rr i vv i zz ii
    привет p rr i vv je t
    расскажи r ay s k a zh yy
    сегодня ss i v oo d nn i
    сейчас ss i j ch ja s
    сейчас(2) ss i ch ja s
    сейчас(3) sch ja s
    сколько s k oo ll k ay
    тебя tt i bb ja
    тебя(2) tt ja
    тебя(3) tt i
    точка t oo ch k ay
    три t rr ii
    три-четыре t rr ii ch i t yy rr i
    ты t yy
    умеешь u mm je i sh
    четыре ch i t yy rr i
    что-нибудь sh t oo nn i b uu tt
    что-нибудь(2) ch t oo nn i b uu tt
    что-нибудь(3) ch t oo nn i b u tt

    Словарь преобразуется в понятную для движка CMU Sphinx языковую модель. Вот так, в итоге, выглядит процесс распознавания речи.



    В ROS любой программный узел, подписавшись на тему /recognizer/output, теперь может получать построенные языковой моделью CMU Sphinx предложения в формате текста. Мы написали небольшой узел голосового управления, который получает распознанные фразы и преобразует их в команды патрулирования или синтезирует ответные фразы робота. Чуть ниже вы найдете видео по этой теме.

    Синтез речи в Festival


    Для полноценного общения с роботом не хватает обратного голосового отклика. Нашему роботу Tod помог заговорить доступный в Linux пакет синтеза речи Festival. Festival — это тоже совместная разработка нескольких крупных университетов, которая обеспечивает качественный синтез речи и поддерживает русский язык. На основе связки Sphinx/Festival можно реализовать ведение полноценных диалогов. А вот и видео с демонстрацией использования голосовых команд нашего робота.



    А что еще можно услышать?


    Говоря о задаче, связанных со звуком, нельзя не упомянуть о HARK. HARK — это японское звуковое ПО, которое сильно расширяет возможность обработки звука. Вот некоторые из них:
    • локализация источника звука
    • выделение нескольких полезных источников звука (например, фразы нескольких одновременно разговаривающих людей)
    • фильтрация шумов для извлечения «чистой» речи из звукового потока
    • создание эффекта трехмерного аудио для задачи телеприсутствия




    Использовать HARK только c одним микрофоном особого смысла не имеет, так как большинство задач обработки звука решаются на базе так называемого массива микрофонов. И тут как нельзя кстати подходит Kinect, у которого на передней части закреплен массив из 4 микрофонов.
    Мы, конечно же, не упустили возможность использовать HARK в своем проекте. В процессе патрулирования территории робот должен реагировать на окружающие события, в том числе на обращения к нему человека. Модуль локализации источника звука, предоставляемый HARK, может помочь роботу найти собеседника, даже при его отсутствии в прямой зоне видимости. Такая задача сводится к локализации источника звука и вращения головы так, чтобы она оказалась напротив собеседника. Как это выглядит, смотрите в нашем видео.



    Постоянные читатели нашего блога, наверняка, заметили, что с момента последней публикации робот Tod не только поумнел, но также подрос, обзавелся манипулятором и вторым Kinect. В следующем посте мы расскажем о том, как управлять манипулятором и использовать его для захвата предметов. До новой встречи в нашем блоге.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Заинтересованы ли вы в создании open source сообщества разработчиков робота Tod с открытым исходным кодом и «железом» проекта, форумом, туториалами, веб-бинарами и документацией на русском языке

    • 28,8%Я хотел бы принять активное участие в процессе разработки ПО и железа для робота Tod, написанию документации, поддержке форума и всячески помогать развитию сообщества.34
    • 61,9%Я хотел бы использовать открытое ПО и железо робота Tod в своей практике программирования, радиотехнике, либо в научных исследованиях.73
    • 5,9%Мне было бы интересно развитие проекта в другом направлении (пожалуйста, укажите в комментариях, в каком)7
    • 3,4%Не считаю ваш проект перспективным (пожалуйста, укажите в комментариях, почему)4
    TOD
    Компания
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 21

      +1
      Эхх, на вот всё это да на ARM каком-нибудь, а то ноут на борту таскать некошерно. По поводу речи — спасибо за демонстрацию связки сфинкса и фестиваля, я давно про них наслышан но на свою железку портировать ещё не получилось, приходится гугл и espeak использовать :-( Работает, но куча времени на отправку в гугл уходит.

      По поводу механики — тележка понравилась, если будете публиковать чертежи то попробую повторить, но управление на своём контроллере. Правда, вряд ли Kinnect получится подцепить.
        0
        Ноутбук используем как промежуточный вариант, в скором будущем планируем выбрать что-то более подходящее. А пока это отличный способ для демонстрации простоты в рамках open source проекта.
        Касательно публикации всех материалов, тут уж как голосование покажет…
        0
        Очень оперативно и целенаправленно двигаетесь! Спасибо вам за статьи и за обзор того, что можно слепить из кубиков (т.е. уже сущ-х стабильных модулей).
        Если не секрет, расскажите в двух словах о компании:
        Какой штат сотрудников? На добровольный началах в свободное время? Или полный рабочий день? Тогда как нашли спонсора и т.д.? :)
        Тут думаю у многих мечта заниматься чем то подобным на работе и не ночами бессонными… хотя пока только так и получается :)
          +1
          Если вкратце — нас двое разработчиков. Я занимаюсь этим полный рабочий день, а мой коллега по совместительству. Основной наш мотиватор — энтузиазм.
          В самом начале нашего пути помог счастливый случай, в лице очень хорошего человека. Ему данная тематика оказалась очень интересной и он решил выступить в качестве мецената. Сумма была небольшой и ее хватило лишь на постройку наше прототипа + незначительные эксперименты с комплектующими.
          Что касается поиска средств на такого рода вещи, из моего небольшого опыта могу сказать лишь одно — вы должны гореть своим проектом, это люди видят, т.к. в первую очередь они дают деньги не проекту, а человеку в котором они хотят быть уверенны, а проект это лишь идея.
          «Максим, я вижу в твоих глаза огонь и верю что ты в состоянии это сделать.» — после этих слов, я получил нашу стартовую сумму.
          0
          Аж прослезился. Эх, есть ещё толковые люди! Вы, ребята, просто молодцы.
            +3
            Если честно — вообще не понимаю, какого единорога эта статья (на данный момент) набрала всего 1,5к просмотров и всего 6 плюсов. В то время как статья про очередной NAS набрала почти сотню плюсов и больше 30 тысяч просмотров.

            Хабр, да что с тобой такое?! Неужели тебе NAS интереснее грёбаного ГОВОРЯЩЕГО робота?!
            +1
            > Теперь достаточно, например, отдать приказ «Робот, езжай на кухню», чтобы робот выполнил необходимую задачу.

            «Робот Фортран, чисть картошку!»
              0
              1, 1, 1 2 3…
              шутка конечно.
              Не пойму одного зачем он нужен? Все равно этого робота и до половины не доведут, проект затухнет… «стандартные» решения: Kinect, сервоприводы, и в кишках arduino (это конечно образно). Лучше бы больше Российских проектов было, которые занимаются изучением механики роботов, и делали такие вещи как:

                0
                Правильно ли я понимаю — проект затухнет по причине своей простоты и стандартности, лучше занять тем в чем разбираешься меньше(или вообще не разбираешься) и что требует более высоких компетенций, именно это сделает проект успешным и позволит довести его до конца?!
                Все это звучит примерно так — «Ребята, зачем вы изучаете школьную математику — давайте уж лучше сразу с матана начните!»
                Спасибо!
                  0
                  Вы скорее всего меня не так поняли…
                  Лучше если «институты»-робототехники объединялись и строили действительно что-то перспективное на много лет вперед. В частности уделяли больше задач механике роботов.
                  Зачетно было бы например, если бы это был не Kinect, а скажем какая то аналогичная Российская разработка, да еще и на Российских контроллерах.
                    +2
                    Эта инициатива должна исходить не от институтов, а от значительно более высоких ступеней нашего государства.
                      +1
                      Этим должны заниматься явно не два человека, и явно не на голом энтузиазме. Из консервных банок звездолёт не построишь.

                      Здесь-же на мой взгляд отличное применение доступных технологий и элементов. В целом конструкция не такая уж и дорогая, но результат впечатляет (по крайней мере меня). А если ещё учитывать что это сделали всего два человека, причём занимаясь этим как хобби — и вовсе ошеломляет. Настоящее мастерство не в том, чтобы придумать что-то, чего доселе свет не видывал (это уже юношеский максимализм скорее), а в том, чтобы максимально эффективно использовать (комбинировать) то, что уже доступно.

                      И да — здесь главное сам механизм работы, а не то, в какой стране кремний нарезали.
                        0
                        EighthMayer, каждое ваше слово идет в копилку нашего энтузиазма. Вы как никто другой зрите в корень. Хочу поблагодарить Вас за поддержку наших начинаний.
                          +1
                          По моему скромному мнению у вас лучший DIY блог на хабре, касательно хоббийной робототехники. Потому пожалуйста пишите еще!
                          А отсутствие бла бла холиваров это признак четкого изложения материала ;)
                          Хотя да может показаться обидным… Я вот на днях склепал драфт версию балансирующего робота и было хотел присесть за статейку, а потом задумался стоит ли тратить время… www.youtube.com/watch?v=U8bBna9iWCU
                            0
                            Конечно пишите. =)
                          0
                          отличное применение доступных технологий и элементов.

                          я тоже так считаю, ребята молодцы. Я лишь пытался донести, что в то время пока мы повторяем стандартные решения западных и европейских проектов, посути наша элементная база не получает не какой поддержки со стороны DIY-проектов.
                      0
                        0
                        Потрясающие манипуляторы. С такими можно сделать уже очень серьезного робота.
                      +1
                      А можете написать статью про HARK? На примере работы с несколькими микрофонами на обычном компе, ну скажем подключить 3-4 web-камеры к компу, разнести их на расстояние и продемонстрировать распознавание голоса с помощью того же Sphinx.
                      А то тема довольно интересная, но в интернете про это по-русски ничего нет :(
                      Я первого напрыга я что-то не осилил HARK, как с ним работать непонятно.
                        0
                        Коль уж есть такая необходимость, то сделаем небольшой обзор по HARK. Вот только будет это позже, т.к. сейчас необходимо завершить намеченное. Мы и так отстаем от поставленных сроков.
                        0

                        А этот sfinks от карнеги-мелон может работать с другими языками? Татарским например?

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое