Непрерывное распознавание речи Android - PullRequest
18 голосов
/ 30 июня 2010

Я смотрю на распознавание речи в Android.Программа должна иметь непрерывное распознавание речи.В библиотеке должно быть всего около 10 слов.Я подумал об использовании Googles API, но я не думаю, что это будет работать.(У меня не может быть ничего, покрывающего экран).Я искал другие пути, но, похоже, ничего не получится.Можно ли использовать библиотеку распознавания речи Java или есть какой-то другой способ сделать это?

В итоге
1. Требуется непрерывный ввод речи
2. 10 слов при макс.
3. может тренироваться при необходимости
4. обзор программы - экран дисплея, ожидание голосового ввода или сенсорного ввода, повтор экрана обновления
5. не может охватывать то, что отображается на экране

любойПомощь будет оценена.
Заранее спасибо

Ответы [ 6 ]

6 голосов
/ 04 октября 2010

Я думаю, вам нужно будет захватывать звук прямо с микрофона телефона и передавать его на службу распознавания. API распознавания Google созданы как Intent, который запускает собственный диалог Recognition и возвращает вам результаты. Если вы хотите непрерывного распознавания без пользовательского интерфейса, вам придется создать эту функцию самостоятельно.

5 голосов
/ 08 мая 2014

CMUSphinx недавно внедрил непрерывное прослушивание на платформе Android. Вы можете найти демоверсию на вики-странице

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

Прослушивание просто, вы создаете распознаватель и просто добавляете поиск по ключевым словам:

    recognizer = defaultSetup()
            .setAcousticModel(new File(modelsDir, "hmm/en-us-semi"))
            .setDictionary(new File(modelsDir, "lm/cmu07a.dic"))
            .setKeywordThreshold(1e-5f)
            .getRecognizer();

    recognizer.addListener(this);
    recognizer.addKeywordSearch(KWS_SEARCH_NAME, KEYPHRASE);
    switchSearch(KWS_SEARCH_NAME);

и определите слушателя:

@Override
public void onPartialResult(Hypothesis hypothesis) {
    String text = hypothesis.getHypstr();
    if (text.equals(KEYPHRASE))
      //  do something
}

Вместо одной ключевой фразы вы можете указать путь к файлу команд в файловой системе:

    recognizer.addKeywordSearch(KWS_SEARCH, new File(assetsDir,
            "commands.lst").toString());

Какой файл команд commands.lst, содержащий команды по одной в строке:

  oh might computer
  ok google
  hello dude

Чтобы поместить этот файл в файловую систему, вы можете поместить его в ресурсы и запустить syncAssets при запуске приложения.

2 голосов
/ 30 июня 2010

Вот объяснение Oracle Java Часто задаваемые вопросы API речи .

1 голос
/ 13 октября 2017

У меня были такие же требования пару месяцев назад, и я решил написать свою собственную библиотеку .

Я считаю, что это должно соответствовать вашим требованиям;)

1 голос
/ 13 октября 2017

Использовать Библиотека CMUSphinx :

  1. Он будет работать в автономном режиме
  2. Вы можете назвать это
  3. Он начнет слушать, когда вы назовете его имя
1 голос
/ 26 сентября 2016

Вот еще один способ (если вы планируете использовать Phonegap / Cordova).

https://stackoverflow.com/a/39695412/3603128

1) Он постоянно слушает.

2) Не отображать (занимать) на экране.

...