English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Сегодня нашел пример в интернете, который реализует распознавание голоса, на мой взгляд, это очень интересно, поэтому я решил поделиться кодом с вами:
В Android主要通过 RecognizerIntent реализуется распознавание голоса, на самом деле код довольно прост, но если找不到 настройку, будет выброшено исключение ActivityNotFoundException, поэтому нам нужно перехватить эту ошибку. Кроме того, распознавание голоса в эмуляторе не возможно проверить, так как распознавание голоса требует доступа к облачным данным Google, поэтому если сеть телефона не включена, то распознавание голоса не будет работать! Обязательно включите сеть телефона, если телефон не имеет функции распознавания голоса, также не возможно активировать распознавание!
Вот код в RecognizerIntentActivity:
public class RecognizerIntentActivity extends Activity { private Button btnReconizer; private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Автоматически сгенерированный метод super.onCreate(savedInstanceState); setContentView(R.layout.reconizer); btnReconizer = (Button) this.findViewById(R.id.btnRecognizer); btnReconizer.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Автоматически сгенерированный метод try { // Передача режима распознавания голоса через Intent и запуск голоса Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); // Режим языка и свободная форма распознавания голоса intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); // Подсказка о начале голоса intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Начать голос"); // Начало распознавания голоса startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE); } catch (Exception e) { // TODO: обработка исключения e.printStackTrace(); Toast.makeText(getApplicationContext(), "Не найдено устройство для голоса", 1).show(); } } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Автоматически сгенерированный метод // Возврат данных, полученных от Google if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // Получение символов голоса ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); String resultString=""; for(int i=0;i<results.size();i++){ resultString+=results.get(i); } Toast.makeText(this, resultString, 1).show(); } super.onActivityResult(requestCode, resultCode, data); } }
Основной принцип заключается в том, чтобы отправить голос на облачный сервис Google, затем обработать его в облаке, соответствующие данные отправляются на клиент.
В конце не забудьте добавить сетевые права доступа в manifest:
<uses-permission android:name="android.permission.INTERNET" />
Эффект после выполнения:
Нажмите кнопку "Начать запись голоса", затем начните говорить (обязательно убедитесь, что сеть телефона включена):
Ожидается облачные данные, так как у меня это 2G карта, я ждал очень долго, и данные все еще не загружаются. Когда я вернусь в офис, я попробую использовать Wi-Fi компании. Если я получу облачные данные, я выведу их на экран через Toast.
Вот так и выглядит материал по технологии распознавания голоса Android, продолжим пополнять соответствующие материалы, спасибо всем за поддержку нашего сайта!
Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору, контент предоставлен пользователями Интернета в порядке добровольного вклада и загрузки, сайт не обладает правами собственности, не производит редактирование人工 обработки и не несет ответственности за соответствующие юридические последствия. Если вы обнаружите содержимое,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для подачи жалоб и предоставления соответствующих доказательств. При обнаружении фактов, сайт незамедлительно удаляет涉嫌侵权的内容。