est-il possible d'utiliser cette fonctionnalité d'activation vocale sympathique de "Google maintenant" dans votre propre application? P>
Donc, ce que je veux, c'est que l'utilisateur n'a pas à déclencher l'activation en appuyant sur un bouton ou en tant que STH. comme ça. p>
Je préférerais avoir une reconnaissance automatique de la parole activée par un mot-clé. Par exemple: lorsque "Google maintenant" est ouvert, il vous suffit de dire: "Google". Après cette commande, le système est écouté pour l'entrée réelle. P>
est-ce possible en utilisant l'API Android? Ou existe-t-il une bibliothèque open source qui fournit ce comportement? P>
Je sais que cela est possible avec des "oreilles ouvertes" mais malheureusement ouvertes oreilles n'est pas disponible pour Android. P>
3 Réponses :
Vous devez exécuter la reconnaissance vocale en tant que service au lieu d'une activité. p>
Consultez ce git pour un exemple de code sur la façon de faire ceci: https://github.com/gast-lib/gast-lib P >
Je suggérerais d'utiliser CMU Sphinx ou je viens de redémarrer votre reconnaissance sur chaque appel de fonction "Onresults" et "Onerror". P>
Utilisez la bibliothèque CMURSPHINX où il fonctionnera en mode hors connexion, aucun besoin de les boutons pour le déclencher, vous pouvez la nommer et en utilisant le nom, vous pouvez déclencher le module de reconnaissance dans la liaison ci-dessous, vous pouvez trouver le code source complet
1) travaillera en mode hors connexion 2) vous pouvez le nommer 3) Il commencera à écouter lorsque vous appelez son nom P>
private static final String KEYPHRASE = "ok computer"; private static final int PERMISSIONS_REQUEST_RECORD_AUDIO = 1; private SpeechRecognizer recognizer; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); captions = new HashMap<String, Integer>(); captions.put(KWS_SEARCH, R.string.kws_caption); captions.put(MENU_SEARCH, R.string.menu_caption); setContentView(R.layout.activity_maini); } private void runRecognizerSetup() { // Recognizer initialization is a time-consuming and it involves IO, // so we execute it in async task new AsyncTask<Void, Void, Exception>() { @Override protected Exception doInBackground(Void... params) { try { Assets assets = new Assets(MainActivity.this); File assetDir = assets.syncAssets(); setupRecognizer(assetDir); } catch (IOException e) { return e; } return null; } @Override protected void onPostExecute(Exception result) { if (result != null) { ((TextView) findViewById(R.id.caption_text)) .setText("Failed to init recognizer " + result); } else { switchSearch(KWS_SEARCH); } } }.execute(); } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == PERMISSIONS_REQUEST_RECORD_AUDIO) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { runRecognizerSetup(); } else { finish(); } } } public void onResult(Hypothesis hypothesis) { ((TextView) findViewById(R.id.result_text)).setText(""); if (hypothesis != null) { String text = hypothesis.getHypstr(); makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show(); }}
Stackoverflow.com/ Questions / 10182893 / ...
Stackoverflow.com/Questtions/14940657/...