Я пытаюсь интегрировать распознавание речи в свое приложение для камеры, точнее, я хочу, чтобы моя камера открывалась, и вы нажимали кнопку «Слушать», и она прослушивала слово «щелчок», а затем делала снимок. У меня уже есть кнопка в приложении, она просто добавляет к ней голосовую часть. Как заставить его проверять конкретные слова?
Как я могу интегрировать распознавание речи с моим приложением для камеры?
Ответы (3)
См. http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.html Здесь показано, как добавить распознавание голоса в ваше приложение. http://developer.android.com/reference/android/speech/package-summary.html Этот пакет также полезен для справки.
Это показывает полное использование TTS и распознавания речи.
https://github.com/gmilette/Say-the-Magic-Word- а>
Также вам необходимо следующее:
Простой способ сопоставления - использовать этот цикл:
protected void receiveWhatWasHeard(List<String> heard,
)
{
WordDictionary command = new WordDictionary("Add");
for (String said : heard)
{
if (command.isIn(said.split("\\s")))
{
Log.d(TAG, "heard add");
}
}
}
и этот класс:
public class WordDictionary
{
private Set<String> words;
public WordDictionary(String... wordsIn)
{
this(Arrays.asList(wordsIn));
}
public WordDictionary(List<String> wordsIn)
{
words = new LinkedHashSet<String>(wordsIn);
}
public Set<String> getWords()
{
return words;
}
public boolean isIn(String word)
{
return words.contains(word);
}
public boolean isIn(String [] wordsIn)
{
boolean wordIn = false;
for (String word : wordsIn)
{
if (isIn(word))
{
wordIn = true;
break;
}
}
return wordIn;
}
}
И ваша деятельность нуждается в этом:
@Override
protected void
onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE)
{
if (resultCode == RESULT_OK)
{
List<String> heard =
data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
for (int i = 0; i < heard.size(); i++)
{
Log.d(TAG, i + ": " + heard.get(i));
}
receiveWhatWasHeard(heard);
} else
{
//fail
}
}
super.onActivityResult(requestCode, resultCode, data);
}
Чтобы на самом деле сделать фотографию, как только вы получите сигнал о том, что пользователь сказал «Snap», вам необходимо реализовать замену приложения «Камера». Вы можете посмотреть образец приложения для предварительного просмотра камеры (в Демонстрациях API/графике), чтобы увидеть, как отображать изображение для предварительного просмотра. А в обзоре класса Camera есть подробная информация о том, как на самом деле захватить изображение.