2010-06-30 21 views
16

Sto guardando fare il riconoscimento vocale in Android. Il programma deve avere un riconoscimento vocale continuo. La libreria deve essere solo di circa 10 parole. Ho preso in considerazione l'utilizzo di Google API, ma non penso che funzionerà. (Non posso avere nulla che copra lo schermo). Ho cercato altri modi, ma non sembra che funzioni. È possibile utilizzare la libreria di riconoscimento vocale di Java o esiste un altro modo per farlo?Riconoscimento vocale continuo Android

In sintesi
1. Necessità di ingresso parlato continuo
2. 10 parole al massimo
3. può allenare, se necessario
4. Panoramica del programma - schermo di visualizzazione, attendere input vocale o toccare ingresso, aggiornamento screen repeat
5. non può coprire ciò che viene visualizzato sullo schermo

Qualsiasi aiuto sarebbe apprezzato.
Grazie in anticipo

+0

4a. Cosa succede quando il comando vocale non viene riconosciuto? –

+0

Se il comando non viene riconosciuto, il programma dovrebbe continuare ad attendere un discorso comprensibile o un input tattile – Joe

+3

Hey Joe, ho un'esigenza simile. Sei riuscito a ottenere quello che vuoi? – wullxz

risposta

1

Ecco la spiegazione Oracle di Java Speech API Frequently Asked Questions.

+0

Grazie, ho visto che . Il mio problema è che può essere impacchettato per Android? Immagino che il modo migliore sarà andare e provare a implementare il discorso ciao. – Joe

+6

Questo lavoro è stato eseguito su Android? – longhairedsi

+0

Il collegamento è interrotto. – Zammbi

6

Penso che dovresti acquisire l'audio direttamente dal microfono del telefono e trasmetterlo al tuo servizio di riconoscimento. Le API di riconoscimento Google sono costruite come un intento che avvia la propria finestra di dialogo Riconoscimento e ti restituisce i risultati. Se si desidera il riconoscimento continuo senza un'interfaccia utente, sarà necessario creare tale funzionalità autonomamente.

+4

Se si desidera eliminare l'interfaccia utente di riconoscimento vocale predefinita, è necessario implementare RecognitionListner, chiamare direttamente il servizio SpeechRecognition. Puoi trovare l'esempio qui http://code.google.com/p/my-work-and-play-android/source/browse/trunk/android/speech/SpeechRecognizer/SpeechRecognizer/src/com/SpeechRecognizer/SpeechRecognizerActivity. java – JeeZ

5

CMUSphinx ha recentemente implementato l'ascolto continuo su piattaforma Android. È possibile trovare la demo su wiki page

È 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 
} 

Invece di un'unica frase-chiave è possibile specificare un percorso di file comandi su un filesystem:

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

Quale file di comandi commands.lst contenenti comandi uno per riga:

oh might computer 
    ok google 
    hello dude 

di mettere questo file sul filesystem si può mettere in attività ed eseguire syncAssets sull'inizio dell'applicazione.

+0

Ho scaricato e eseguito correttamente la demo di Android per la sfinge tascabile, ma come posso utilizzarla nella mia applicazione esistente? –

1

Uso CMUSphinx library:

  1. che funzionerà in modalità offline
  2. È possibile assegnare un nome fino
  3. Inizierà ascolti quando si chiama il suo nome
0

ho avuto gli stessi requisiti un paio di mesi fa e ho deciso di scrivere il mio library.

Credo che dovrebbe soddisfare anche le vostre esigenze;)

Problemi correlati