iOS / C: алгоритм обнаружения фонем

Я ищу алгоритм, чтобы определить, соответствует ли аудиовход в реальном времени одной из 144 заданных (и удобно различных) пар фонем.

Желательно самый низкий уровень, который выполняет эту работу.

Я занимаюсь разработкой радикального / экспериментального программного обеспечения для обучения музыке для iPhone / iPad.

Моя музыкальная система состоит из 12 согласных и 12 гласных фонем, продемонстрированных здесь. Это дает 144 возможных пары фонем. Ученик должен спеть правильную пару фонем «лаа дуу пчела» и т. Д. В ответ на визуальный стимул.

Я провел много исследований по этому поводу, похоже, что лучше всего использовать одну из оболочек iOS Sphinx (Приложение для iPhone› Добавить распознавание голоса? - лучший источник информации, который я нашел). Однако я не понимаю, как бы я адаптировал такой пакет, может ли кто-нибудь, имеющий опыт использования одной из этих технологий, дать базовое изложение шагов, которые потребуются?

Потребуется ли обучение пользователя? Я бы не подумал, что это такая элементарная задача по сравнению с полными языковыми моделями из тысяч слов и гораздо большей и более тонкой фонемной базой. Однако было бы приемлемо (не идеально), чтобы пользователь обучил 12 пар фонем: {согласный1 + гласный1, согласный2 + гласный2, ..., согласный12 + гласный12}. Полные 144 были бы слишком обременительными.

Есть подход попроще? Мне кажется, что использование полнофункционального распознавателя слитной речи - это использование кувалды, чтобы сломать орех. Было бы намного элегантнее использовать минимум технологий, которые решали бы проблему.

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

PS Мне нужно решение, которое работает практически в режиме реального времени. поэтому, даже когда они поют ноту, сначала он мигает, чтобы показать, что он уловил спетую пару фонем, а затем он светится, чтобы показать, поют ли они с правильной высотой ноты


person P i    schedule 17.06.2011    source источник
comment
Почему голосование против и голосование за закрытие? Это правильный вопрос по кодированию, и я предоставил контекст использования в реальном мире. У кого-нибудь был плохой день в офисе ??   -  person P i    schedule 17.06.2011
comment
Я не голосовал против, но ваш вопрос широкий и, хотя и конкретен по теме, он расплывчатый по своей природе. Ваш вопрос не столько связан с кодом, сколько концептуален. Само по себе это неплохо, но можно не задавать большие расплывчатые вопросы.   -  person Moshe    schedule 17.06.2011
comment
@Moshe, Нет. В моем вопросе нет ничего расплывчатого. Я ищу код для распознавания фонем в реальном времени. Дополнительно указываю ограничение на базу фонем.   -  person P i    schedule 19.06.2011


Ответы (4)


Если вы ищете распознаватель с открытым исходным кодом на уровне телефона, я бы порекомендовал HTK. По этому инструменту доступна очень хорошая документация в виде книги HTK. Он также содержит целую главу, посвященную созданию распознавателя речи в реальном времени на уровне телефона. Из приведенной выше постановки проблемы мне кажется, что вы могли бы переработать этот пример в свое собственное решение. Возможные подводные камни:

  1. Поскольку вы хотите сделать распознаватель на уровне телефона, данных, необходимых для обучения моделей телефонов, будет очень много. Также ваша тренировочная база должна быть сбалансированной с точки зрения распределения телефонов.

  2. Для построения независимой от говорящего системы потребуются данные от более чем одного говорящего. И многое из этого тоже.

  3. Поскольку это открытый исходный код, вам также следует проверить информацию о лицензировании для получения дополнительных сведений о доставке кода. Хорошей альтернативой было бы использование записывающего устройства на телефоне, а затем отправка записанной формы сигнала по каналу данных на сервер для распознавания, что-то вроде того, что делает Google.

person Sriram    schedule 30.06.2011
comment
я рад, что помог тебе. - person Sriram; 05.07.2011

У меня есть небольшой опыт работы с этим типом обработки сигналов, и я бы сказал, что это, вероятно, не тот тип конечных вопросов, на которые можно дать однозначный ответ.

Стоит отметить одну вещь: хотя вы можете ограничить интересующие вас фонемы, пространство возможностей остается тем же (т. Е. Бесконечным). Обучение пользователей может немного помочь алгоритмам, но полезное обучение занимает довольно много времени, и, похоже, вы не хотите слишком многого из этого.

Использование Sphinx, вероятно, станет отличным началом для решения этой проблемы. Я сам не очень далеко продвинулся в библиотеке, но предполагаю, что вы сами будете работать с ее исходным кодом, чтобы получить именно то, что хотите. (Ура открытым исходным кодом!)

... расколоть орех кувалдой.

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

Всего наилучшего в решении ваших проблем.

person tugs    schedule 22.06.2011

Не уверен, что это поможет: попробуйте OpenEars 'LanguageModelGenerator. OpenEars использует Sphinx и другие библиотеки.

person Jacob Barnard    schedule 30.06.2011

http://www.hfink.eu/matchbox

Эта страница ссылается как на демонстрацию видео YouTube, так и на исходный код github.

Я предполагаю, что для того, чтобы придать ему форму, которую я ищу, по-прежнему потребуется много работы, но он также определенно выполняет большую часть работы.

person P i    schedule 23.06.2011