IOS/C: Алгоритм обнаружения фонем
Я ищу алгоритм для определения того, соответствует ли вход аудиосигнала в реальном времени одной из 144 заданных (и удобно различимых) пар фонем.
Предпочтительно самый низкий уровень, который выполняет задание.
Я разрабатываю радикальное/экспериментальное программное обеспечение для музыкального обучения для iPhone/iPad.
Моя музыкальная система состоит из 12 согласных фонем и 12 гласных фонем, продемонстрированных здесь. Это составляет 144 пары фонем. Студент должен спеть правильную пару фонем "laa duu bee" и т.д. В ответ на визуальный стимул.
Я провел много исследований по этому вопросу, похоже, что лучше всего использовать одну из оберток iOS Sphinx (iPhone App > Добавить распознавание голоса? - лучший источник информации, который я нашел). Однако я не вижу, как бы я адаптировал такой пакет, может ли кто-либо, имеющий опыт использования одной из этих технологий, дать базовое изложение шагов, которые потребуются?
Будет ли обучение необходимым для пользователя? Я бы не подумал, что это такая элементарная задача, по сравнению с полными языковыми моделями тысяч слов и гораздо большей и более тонкой базой фонем. Тем не менее, было бы приемлемым (не идеальным), чтобы пользователь обучал 12 пар фонем: {consonant1 + vowel1, consonant2 + vowel2,..., consonant12 + vowel12}. Полные 144 были бы слишком обременительными.
Есть ли более простой подход? Я чувствую, что использование полнофункционального непрерывного распознавателя речи использует кувалду, чтобы взломать орех. Было бы гораздо шире использовать минимальную технологию, которая бы решила проблему.
Так что действительно я ищу для любого программного обеспечения с открытым исходным кодом, которое распознает фонемы.
PS Мне нужно решение, которое работает довольно много в режиме реального времени. поэтому, даже когда они поют записку, во-первых, она мигает, чтобы проиллюстрировать, что она подняла восходящую пару фонем, а затем она светится, чтобы проиллюстрировать, поют ли они правильную ноту примечания.
Ответы
Ответ 1
Если вы ищете распознаватель открытого кода на уровне телефона, я бы рекомендовал HTK. Очень хорошая документация доступна с помощью этого инструмента в виде книги HTK. Он также содержит целую главу, посвященную построению распознавателя речи в реальном времени на уровне телефона. Из приведенного выше вышесказанного мне кажется, что вы можете переделать этот пример в свое собственное решение. Возможные подводные камни:
-
Поскольку вы хотите использовать распознаватель уровня телефона, данные, необходимые для обучения телефона, будут очень высокими. Кроме того, ваша база данных обучения должна быть сбалансирована с точки зрения распространения телефонов.
-
Для создания независимой от громкоговорителей системы потребуются данные от более чем одного динамика. И много этого тоже.
-
Поскольку это open-source, вы также должны проверить информацию о лицензировании для получения дополнительной информации о доставке кода. Хорошей альтернативой было бы использовать записывающее устройство на телефоне, а затем записать записанную форму волны по каналу данных на сервер для распознавания, что-то вроде того, что делает Google.
Ответ 2
У меня есть немного опыта работы с этим типом обработки сигналов, и я бы сказал, что это, вероятно, не тип конечного вопроса, на который можно ответить окончательно.
Следует отметить, что, хотя вы можете ограничить интересующие вас фонемы, пространство возможностей остается таким же (т.е. бесконечно-ишевым). Обучение пользователей может помочь алгоритмам немного, но полезное обучение занимает довольно много времени, и, похоже, вы слишком не склонны к этому.
Использование Sphinx, вероятно, является отличным началом этой проблемы. Я не очень далеко зашел в библиотеку, но думаю, вы сами будете работать с исходным кодом, чтобы получить именно то, что хотите. (Hooray для open source!)
... используя кувалду, чтобы расколоть орех.
Я бы не назвал вашу проблему орехом, я бы сказал, что это больше похоже на зверя. Это может быть другой зверь, чем распознавание речи на естественном языке, но он все еще зверь.
Все самое лучшее при решении ваших проблем.
Ответ 3
Не уверен, что это поможет: проверьте OpenEars 'LanguageModelGenerator
. OpenEars использует Sphinx и другие библиотеки.
Ответ 4
http://www.hfink.eu/matchbox
Эта страница ссылается как на видеоролик YouTube, так и на источник github.
Я предполагаю, что все равно будет много работы, чтобы превратить его в форму, которую я за ней, но также определенно выполняет большую часть работы.