2016-04-20 14 views
13

Stiamo utilizzando l'API webkitSpeechRecognition in Chrome. Poiché si tratta di un'applicazione prototipo, siamo lieti di supportare solo Chrome, pertanto rileviamo il supporto per l'API eseguendo un controllo window.hasOwnProperty('webkitSpeechRecognition') (come suggested by Google). Questo fallisce felicemente in Firefox, ma il nuovo Opera (essendo basato sul webkit) riporta che ha la proprietà. E, in effetti, tutto il codice funziona come previsto, eccetto ... nessuno degli eventi viene mai attivato, nessuna voce viene mai registrata.Supporto per l'API webkitSpeechRecognition in Opera

Quindi, la mia domanda è: posso farlo funzionare in qualche modo? Richiede alcune autorizzazioni o impostazioni speciali?

In alternativa, esiste un modo (a parte un buon vecchio sniffer del browser) per rilevare il supporto corretto e funzionante per il webkitSpeechRecognition?

+0

Hai trovato un'alternativa al browser-sniffing? Sto affrontando lo stesso problema –

+0

@OscarHermosilla no, sfortunatamente. Non era fondamentale per noi, quindi non stavo guardando molto attivamente. Ma sono curioso, lasciami solo mettere una taglia. –

risposta

4

In questo momento solo google chrome ha l'API per il riconoscimento vocale per flusso (hanno l'API sppeech di google).

Se si utilizzerà https://www.google.com/intl/en/chrome/demos/speech.html su Opera, verrà indicato che è necessario Chrome25 + per eseguire questa operazione.

Secondo il numero http://caniuse.com/#feat=speech-recognition, il webkit di Opera supporta questa funzionalità ma al momento non funziona. Opera non ha alcun servizio API che lo traduca al volo. Al momento ci sono solo segnaposto nel loro browser, forse in futuro lo faranno, no, non funziona.

* A cura *

Esempio da google come determinte se lavorare o meno.

// checking by google 
 
if (!('webkitSpeechRecognition' in window)) { 
 
    console.log('GOOGLE: not working on this browser'); 
 
} else { 
 
    console.log('GOOGLE: working'); 
 
} 
 

 
//your way 
 
if (window.hasOwnProperty('webkitSpeechRecognition')) { 
 
    console.log('YOUR: working'); 
 
} else { 
 
    console.log('YOUR: not working on this browser'); 
 
}

+1

Sto usando la versione 41.0.2353.69 di Opera, e la pagina di dimostrazione vocale non funziona, senza dirmi nulla. E ridacchiavo come caniuse.com lo riporta come "supporto parziale", come Chrome. In ogni caso, c'è un modo per rilevare che è solo una funzione segnaposto? (E perché mai non lanciano un'eccezione o qualcosa invece di morire in silenzio?) –

+0

webkitSpeechRecognition - prova a trovare il software di riconoscimento vocale predefinito per funzionare. Per impostazione predefinita, Chrome esegue lo streaming da chrome a google speech API per riconoscere la voce (ecco perché hai così tante lingue che potrebbero essere riconosciute). Sui cellulari esiste un software di riconoscimento vocale usuale, Opera su quel dispositivo mobile dovrebbe funzionare, sul desktop non funziona. Spero che possa aiutarti. –

+0

Ho aggiunto un esempio dalla pagina demo di google, molto simile a window.hasOwnProperty ma forse sta facendo la differenza, rileva webkit sul mio Chrome, ma non nel mio Opera 42. –