71

Sembra che Google abbia reso disponibile il riconoscimento vocale offline da Google Now per app di terze parti. Viene utilizzato da the app named Utter.Riconoscimento vocale offline in Android (JellyBean)

Qualcuno ha visto alcune implementazioni su come eseguire semplici comandi vocali con questo rec vocale offline? Utilizzi semplicemente la normale API SpeechRecognizer e funziona automaticamente?

+0

Quindi, se scarichiamo la lingua, non è necessario modificare il nostro codice? –

risposta

66

Google ha tranquillamente abilitare il riconoscimento in linea in quel Aggiornamento della ricerca, ma non v'è (ancora) API o parametri aggiuntivi disponibili all'interno il SpeechRecognizer class. {Vedi Modifica in fondo a questo post} La funzionalità è disponibile senza codifica aggiuntiva, tuttavia il dispositivo dell'utente dovrà essere configurato correttamente per poter iniziare a funzionare e questo è dove si trova il problema e immagino per quale motivo degli sviluppatori ritengono che "manchi qualcosa".

Inoltre, Google ha limitato alcuni dispositivi Jelly Bean dall'utilizzo del riconoscimento offline a causa di vincoli hardware. A quali dispositivi questo si applica non è documentato, infatti, nulla è documentato, quindi la configurazione delle funzionalità per l'utente si è dimostrata una questione di tentativi ed errori (per loro). Funziona per alcuni immediatamente - Per quelli che non lo fa, questa è la 'guida' che fornisco loro.

  1. Assicurarsi che il valore di default di Android Voice Recogniser è impostato su Google non Samsung/Vlingo
  2. Disinstalla file alcun riconoscimento offline è già stato installato dalle Google Voice Search Impostazioni
  3. Vai al tuo Impostazioni applicazione Android e vedi se riesci a disinstallare gli aggiornamenti per le applicazioni di ricerca Google e Ricerca vocale Google .
  4. Se non riesci a fare quanto sopra, vai al Play Store per vedere se hai l'opzione lì.
  5. Reboot (se si ottengono a 2, 3 o 4)
  6. aggiornamento di Google Search e Google Voice Search dal Play Store (se hai ottenuto 3 o 4, o se è disponibile un aggiornamento in ogni caso).
  7. Reboot (se avete raggiunto 6)
  8. Installa Inglese UK file di lingua non in linea
  9. Reboot
  10. Usa utter! con una connessione
  11. Passa alla modalità aereo e fare un tentativo
  12. Una volta che si sta lavorando , il riconoscimento offline di altre lingue, , come l'inglese, anche gli Stati Uniti dovrebbero iniziare a lavorare.

MODIFICA: la modifica temporanea delle impostazioni internazionali del dispositivo in inglese UK sembra anche farla funzionare per alcuni.

Alcuni utenti hanno segnalato che dovevano ancora riavviarsi un numero di volte prima che iniziasse a funzionare, ma alla fine arrivano tutti, spesso inspiegabilmente, a quello che era il trigger, la chiave all'interno dello Google Search APK, quindi non nel dominio pubblico o parte di AOSP.

Da quanto posso stabilire, Google verifica la disponibilità di una connessione prima di decidere se utilizzare il riconoscimento offline o online. Se inizialmente è disponibile una connessione ma questa viene persa prima della risposta, Google fornirà un errore di connessione e non ricadrà offline. Come nota a margine, se è stata effettuata una richiesta per la voce sintetizzata in rete, non viene fornita alcuna indicazione di errore se si verifica un errore - Si ottiene il silenzio.

L'aggiornamento di Ricerca Google non ha abilitato funzioni aggiuntive in Google Now e infatti se si tenta di utilizzarlo senza connessione a Internet, si verificherà un errore. Dico questo mentre mi chiedevo se l'abilità sarebbe stata ritirata così silenziosamente come sembrava e quindi non dovrebbe essere invocata nella produzione.

Se si intende iniziare a utilizzare la classe SpeechRecognizer, essere avvisati, vi è un bel major bug associato, che richiede la propria implementazione da gestire.

Non essere in grado di richiedere specificamente offline = true, rende impossibile il controllo di questa funzione senza modificare la connessione dati. Sciocchezze. Riceverai centinaia di email degli utenti che ti chiederanno perché non hai abilitato qualcosa di così semplice!

EDIT: dal livello di API 23 un nuovo parametro è stato aggiunto EXTRA_PREFER_OFFLINE cui il servizio di riconoscimento di Google non sembrano aderire.

Spero che quanto sopra aiuti.

+0

Questo funziona perfettamente per me ed è stato molto facile da implementare. Ho usato questo esempio qui come punto di partenza. http://www.jameselsey.co.uk/blogs/techblog/android-how-to-implement-voice-recognition-a-nice-easy-tutorial/ – rmooney

+0

@brandall Mi chiedo se posso scegliere la lingua che Faccio il riconoscimento? Il file di lingua offline supporta ora la mia lingua (vietnamita)! Voglio creare un'app che faccia il riconoscimento vocale offline per la mia lingua (vietnamita)! È possibile?? Molto obbligato! – truongnm

+1

@truongmn - Questo aiuto? http://stackoverflow.com/q/10538791/1256219 In caso contrario, fare una nuova domanda e collegarmi ad esso e vedrò se posso aiutare – brandall

8

In breve, non ho l'implementazione, ma la spiegazione.

Google non ha reso disponibile il riconoscimento vocale offline per le app di terze parti. Il riconoscimento offline è accessibile solo tramite la tastiera. Ben Randall (! Lo sviluppatore del totale) spiega la sua soluzione in un articolo a Polizia Android:

io avevo realizzato il mio propria tastiera ed è stato il passaggio tra Google Voice Typing e la tastiera gli utenti di default con una modifica testo invisibile campo e trasparente Attività per ottenere l'input. Spaccatura!

Questo era l'unico modo per farlo, come non in linea Voice Typing poteva essere attivata solo da un IME o di un'applicazione di sistema (che era il mio mod root). L'altro tipo di API di riconoscimento ... non l'ha attivato e ha appena fallito con un errore del server. ... Un sacco di lavoro sprecato per me sulla soluzione! Ma almeno ero pronto per l'attuazione ...

Da Utter! Claims To Be The First Non-IME App To Utilize Offline Voice Recognition In Jelly Bean

+4

Pensavo che fosse quello che ha detto di fare prima dell'ultimo aggiornamento. Seguendo la tua citazione: "Randall ha continuato a spiegare che Utter! Ora utilizza SpeechRecognizer, che è stato aggiornato consentendo agli sviluppatori di utilizzare il riconoscimento offline in una gamma di applicazioni, mentre Recognizerintent, il precedente codice di digitazione offline, richiedeva un token IME valido." – rmooney

+0

@rmooney Avete ulteriori informazioni a riguardo? – xryl669

20

Vorrei migliorare la guida che la risposta https://stackoverflow.com/a/17674655/2987828 invia ai propri utenti, con immagini. È la frase "Per quelli che non lo fa, questa è la 'guida' che fornisco loro." che voglio migliorare.

L'utente deve cliccare sui quattro pulsanti evidenziati in blu in queste immagini:

Go to your Android Application Settings, select Languages and input,edit Settings of Google Voice typing,select Download Offline speech recognition, select your languages in the ALL tab.

Poi l'utente può selezionare qualsiasi lingua desiderata. Al termine del download, dovrebbe disconnettersi dalla rete e quindi fare clic sul pulsante "microfono" della tastiera.

Ha funzionato per me (Android 4.1.2), quindi il riconoscimento della lingua ha funzionato senza alcun riavvio. Ora posso dettare le istruzioni per la shell di Terminal Emulator! Ed è due volte più veloce offline che online, su un padfone 2 di ASUS.

Queste immagini sono concesse in licenza in cc by-sa 3.0 con l'attribuzione richiesta a stackoverflow.com/a/21329845/2987828; puoi quindi aggiungere queste immagini ovunque con questa attribuzione.

(questa la politica standard di tutti immagini e testi a stackoverflow.com)

2

avevo a che fare con questo e ho notato che è necessario installare il pacchetto offline per la lingua. La mia impostazione della lingua era "Español (Estados Unidos)" ma non esiste un pacchetto offline per quella lingua, quindi quando ho disattivato tutta la connettività di rete ricevo un avviso da RecognizerIntent che dice che non può raggiungere Google, quindi cambio la lingua in "Inglese (USA)" (perché ho già il pacchetto offline) e ho lanciato RecognizerIntent che ha appena elaborato.

Keys: impostazione della lingua == Offline Voice Recognizer pacchetto

+0

Posso sapere quale dispositivo hai usato. Supporta piuttosto che dispositivo Google. Come Samsung, Asus ecc. Ci sto lavorando e offline non supporta altri dispositivi. –

1

E 'evidentemente possibile installare manualmente il riconoscimento vocale offline scaricando i file direttamente e la loro installazione nelle località idonee manualmente. Immagino che questo sia solo un modo per aggirare i requisiti hardware di Google. Tuttavia, personalmente non ho dovuto riavviare o nulla, semplicemente cambiando in UK e di nuovo fatto.

16

Un riconoscimento offline semplice e flessibile su Android è implementato da CMUSphinx, un toolkit di riconoscimento vocale open source. Funziona esclusivamente offline, veloce e configurabile. Può ascoltare continuamente parole chiave, ad esempio.

È possibile trovare il codice più recente e tutorial here.

+1

Ho appena provato la demo e funziona abbastanza bene. Veloce e facile da usare. – Micer

+2

Ciao, CMUSphinx funziona anche per l'accento indiano? – Kedarnath

+1

@Kedarnath sembra essere in cima alla loro lista, guarda il sondaggio qui: http://cmusphinx.sourceforge.net/ – Jerther

3

Ho implementato con successo il mio servizio vocale con funzionalità offline utilizzando onPartialResults quando offline e onResults quando online.

+0

Posso saperne di più a riguardo per favore. ho un bug relativo al post qui http://stackoverflow.com/questions/32866239/offline-speech-recognition-in-android-not-recognizing-in-samsung-s5 –

Problemi correlati