2013-04-13 14 views
14

Prima di tutto Sto cercando di creare una soluzione temporanea che non mi aspetto di funzionare per sempre. Solo un esperimento, se vuoi!Ricerca vocale di Google sul caricamento della pagina

Ho il seguente in esecuzione! Quello che sto cercando di fare è avviare la ricerca vocale al caricamento della pagina. Qualche idea per un modo per farlo funzionare! Nota: è necessario il browser chrome per vedere l'ingresso del microfono.

http://jsfiddle.net/dirtyd77/99amf/

<html> 
<head> 
<style> 

#mike { 
font-size: 25px; 
width: 25px; 
height: 25px; 
cursor:pointer; 
border: none; 
position: absolute; 
margin-left: 5px; 
outline: none; 
background: transparent; 
} 
#txt { 
height: 150px; 
width: 150px; 
} 
</style> 

<script> 
var mike = document.getElementById('mike'); 
mike.onfocus = mike.blur; 
mike.onwebkitspeechchange = function(e) { 
console.log(e); // SpeechInputEvent 
document.getElementById('txt').value = mike.value; 
}; 
</script> 
</head> 

risposta

2

È possibile utilizzare webkitSpeechRecognition che non richiede un clic per attivarlo. Quindi devi solo indirizzare qualsiasi testo catturato nell'input.

webkitSpeechRecognition richiederà all'utente di autorizzare il sito a utilizzare il microfono, ma finché esiste tale autorizzazione, può iniziare ad ascoltare l'input dell'utente non appena la pagina viene caricata. Assicurati che il tuo sito utilizzi HTTPS in modo che il browser richieda all'utente l'autorizzazione solo una volta e lo ricordi.

Si potrebbe anche voler controllare annyang, che è una libreria JavaScript che rende super-facile la gestione del riconoscimento vocale.

+0

Potresti approfondire il commento HTTPS? O forse un link con maggiori informazioni su questo punto. Grazie. – Sharun

+0

Quando si attiva per la prima volta webkitSpeechRecognition su una pagina, il browser chiederà di concedere l'autorizzazione a questo sito per utilizzare il microfono. Le pagine ospitate su HTTPS non hanno bisogno di chiedere ripetutamente il permesso, mentre le pagine HTTP ospitate lo fanno. Puoi vedere la differenza confrontando http://www.talater.com/annyang/ e https://www.talater.com/annyang/ –

+0

Grazie questa è una parte molto utile di informazioni non ovvie. E un bel lavoro su Annyang, mi è piaciuta la semplice implementazione di facebook.js. – Sharun

-2

La prima cosa che viene in mente è quello di utilizzare jQuery. Ecco un po 'di come:

$(document).ready(function(){ 
    startMikeInput(); 
} 

Questo avvierà il vostro ingresso microfonico quando la pagina viene fatto carico. Dovrai anche fare riferimento a jQuery nel tuo tag script. Potrebbe essere utile anche usare un file js esterno.

+0

Ho provato questo senza fortuna. :( –

+0

Se lo stai eseguendo localmente dovrai scaricare jQuery e fare riferimento correttamente.Ho già avuto dei problemi con questo.Il – user2276585

+0

startmikeInput() è il problema che non fa nulla –

2

Hai provato questo approccio:

x-webkit-speech: onwebkitspeechchange not resting the value

Se si guarda l'esempio che stanno facendo qualcosa di completamente via

onwebkitspeechchange="webkitSpeechChange(this);" 

mi piacerebbe immaginare è necessario aggiungere che, per il tuo codice.

+0

il problema è simulare il mouse clicca sul pulsante mic! Niente sembra funzionare –

+0

Forse, mi manca qualcosa qui, ma nel tuo violino stai chiamando una funzione che non hai mai dichiarato? – RandomUs1r

13

Sfortunatamente, questo non è possibile. La ragione più importante è che sarebbe un invasion of privacy/security hazard. Un utente deve sceglie di essere registrato (in questo caso, da mouseclick). Se l'evento può essere emulato e l'utente non è consapevole della loro registrazione, potrebbero esserci gravi ripercussioni legali. Spero che questo ti aiuti!


UPDATE:

Questo da un document su Speech Input:

Per ridurre al minimo la possibilità di utenti inconsapevolmente lasciare che le pagine web discorso record senza la loro conoscenza, le implementazioni devono abort una sessione di immissione vocale attiva se la pagina Web ha perso lo stato attivo di input in un'altra finestra o in un'altra scheda all'interno dello stesso agente utente.

Qui ci sono preoccupazioni, da quello stesso document:

1) gli ingressi di password del può essere problematico dal punto di vista della sicurezza, ma è compito dell'utente decidere se vogliono parlare la loro password.

2) L'input vocale potrebbe essere utilizzato per intercettare gli utenti.Le pagine Web dannose potrebbero usare trucchi come nascondere l'elemento di input o altrimenti far credere all'utente di aver interrotto la registrazione vocale continuando a farlo. Potrebbero anche potenzialmente personalizzare l'elemento di input per apparire come qualcos'altro e indurre l'utente a fare clic su di essi. Un esempio di stile dell'elemento di input del file può essere visto a http://www.quirksmode.org/dom/inputfile.html. Le raccomandazioni di cui sopra hanno lo scopo di ridurre questo rischio di tali attacchi.

Inoltre, secondo this article from html5rocks.com:

il primo riconoscimento volta vocale viene utilizzato, Chrome ha la necessità di chiedere all'utente il permesso di utilizzare il microfono, nel qual caso OnStart solo fuochi quando e se l'utente consente il permesso.

Con questo in mente, sarebbe molto difficile, se non quasi impossibile, per implementare onload eventi senza il consenso dell'utente, dal momento che Google ha adottato misure di protezione contro malicious webpages. Google ha anche impedito agli utenti di simulating click events.

+0

Il problema non è possibile o legalità? Questo è per il mio unico utilizzare comunque, quindi non sono preoccupato per le ripercussioni legali per I Am aware :). Grazie per le informazioni però. –

+0

http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#security afferma che gli agenti utente devono solo avviare sessioni di input vocale con il consenso esplicito e informato dell'utente . Il consenso dell'utente può includere, ad esempio: consenso precedentemente concesso per consentire sempre l'input vocale per questa pagina web. –

+0

@tman Aggiungerò ulteriori informazioni al mio post originale, ma risponderò a questo :) – Dom

4

Dopo aver provato un mucchio di roba e di ricerca, ho scoperto che:

Non è possibile a livello di codice attivare l'input vocale. Questo è per prevenire gli abusi. https://code.google.com/p/html5rocks/issues/detail?id=594

Questo è da parte di Google.

Provato come un inferno per far funzionare il jFiddle. Ha usato un sacco di funzioni jquery, ha provato il target a simulare un clic, alcune cose di terze parti - sembra che l'abbiano ottenuto abbastanza bene.

+0

Questa pagina dice "Consenso precedentemente concesso per consentire sempre l'input vocale per questa pagina web." Se questo dove il caso allora si trova il problema? –

+0

Penso di aver pubblicato il link sbagliato all'inizio. Inserito il link sui forum di google anziché il link effettivo ai moduli di google. Tutto risolto ora. Ho cercato di rompere questo per te ma non andare. All'inizio ho pensato che fosse JFiddle a darmi dei problemi, quindi quando non ho potuto risolverlo ho scoperto che gli sviluppatori di Google lo stavano bloccando nel codice di Chrome. – newUserNameHere

+0

molto interessante .... hmm –

Problemi correlati