2013-09-29 4 views
8

Mi piacerebbe svegliare un telefono Android dicendo ad esempio "Ciao George", ma non ho trovato nessuna risposta utile. Prima di tutto, l'app Android deve essere ascoltata come servizio in background per questa funzione o no? Sarei grato se qualcuno sa come implementare questo problema o avere qualche idea.Sveglia telefono Android con alcune parole come Hi Galaxy o Ok Google

Best Regards Grazie

+2

Il 'svegliarsi con comando vocale' è una caratteristica del Moto X che utilizza una CPU speciale per ascoltare il comando vocale quando il dispositivo è in standby, per evitare il consumo eccessivo della batteria. Per fare in modo che funzioni bene, è necessario creare il proprio dispositivo e la ROM personalizzata. –

risposta

7

Ciao io sono lo sviluppatore di Open Mic + http://OpenMic.RSenApps.com, che fa qualcosa di molto simile a ciò che si desidera. La verità è che è molto più complicato di quanto sembri e sto solo iniziando a implementare sistemi che siano effettivamente efficienti. Quindi immagino che la cosa principale sia quanto lontano vuoi andare? Puoi implementare Google Speech Recognition, ma alla fine è terribilmente buggato e in realtà non funziona a lungo termine o puoi implementare il tuo riconoscimento vocale, che è quello che sto facendo ...

3

CMUSphinx ha recentemente implementato l'ascolto continuo sulla piattaforma Android. Puoi trovare la demo nella pagina wiki

È possibile configurare una o più parole chiave da ascoltare, la parola chiave predefinita è "oh potente computer". È anche possibile configurare la soglia di rilevamento. Le lingue attualmente supportate sono l'inglese americano e poche altre (francese, spagnolo, russo, ecc.). Puoi allenare il tuo modello per la tua lingua.

ascolto è semplice, si crea un sistema di riconoscimento e basta aggiungere ricerca macchia parola chiave:

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); 

e definire un ascoltatore:

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