2012-03-24 16 views
13

मैं एचटीएमएल 5 speech विशेषता सेट के साथ <input> टैग में उपयोगकर्ता से क्या कहने की अपेक्षा करता हूं उसे परिभाषित करने का एक तरीका ढूंढ रहा हूं।
मुझे पता है कि आप grammar विशेषता, इस तरह के माध्यम से उपयोग करने के लिए एक विशिष्ट व्याकरण निर्दिष्ट कर सकते हैं:
<input type="text" speech grammar="grammar.grxml" />एचटीएमएल 5 भाषण मान्यता --- क्या उपयोगकर्ता को गतिशील रूप से कहने की अपेक्षा करने का एक तरीका है? (कस्टम ग्रामर का उपयोग करना)

(http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html देखें)

लेकिन मैं एक तरह से इस गतिशील बनाने के लिए के लिए उम्मीद कर रही थी, इसलिए कि मैं निर्दिष्ट कर सकता हूं कि मैं जावास्क्रिप्ट के माध्यम से उपयोगकर्ता से क्या कहूं।

उदाहरण के लिए, यदि आपके पास किसी भाषण से चुनने के लिए आइटम की गतिशील रूप से जेनरेट की गई सूची थी, तो आप यह निर्दिष्ट करेंगे कि वे क्या कहेंगे जो संभवतः उन वस्तुओं में से एक होगा?

पीएस मैं Google Chrome के साथ इसका परीक्षण कर रहा हूं, इस प्रकार x-webkit-speech विशेषता speech और x-webkit-grammargrammar के बजाय x-webkit-grammar का उपयोग कर रहा हूं।

+1

मैं सर्वर को सूची भेजूंगा, सर्वर आइटम युक्त व्याकरण फ़ाइल के लिए एक लिंक वापस करेगा, और मैं सर्वर से प्राप्त लिंक के साथ ग्रामैन विशेषता के मान को प्रतिस्थापित कर दूंगा। यह काम करना चाहिए, लेकिन मुझे क्लाइंट पक्ष पर पूरी तरह से करने का तरीका नहीं पता है। – Tadeck

+0

मुझे यह भी नहीं पता था कि एचटीएमएल 5 में ऐसी सुविधा थी, बहुत अच्छी लग रही है। प्रश्न –

+0

@ जिबी अब्राहम हाँ के लिए +1, और अब इसके लिए एक जावास्क्रिप्ट एपीआई है! अगली चीज़ मैं देखने जा रहा हूँ। http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API – Stephen

उत्तर

3

मुझे एक नई एचटीएमएल 5 सुविधा का उपयोग करके क्लाइंट-साइड करने का एक तरीका मिला: blobs

window.URL = window.URL || window.webkitURL; 

var myGrammar = new Blob(["My custom grammar"], { 
    type: 'text/xml Or whatever is the proper MIME type for grammars'}); 

var grammarUrl = window.URL.createObjectURL(myGrammar); 

myInput = document.getElementById("myInput"); 

myInput.grammar = grammarUrl; 

यह व्याकरण स्ट्रिंग के बाहर एक यूआरएल बनाता है, और फिर हमारे input तत्व के लिए कि यूआरएल सेट।

इस तरह से सर्वर अनुरोध करने की कोई आवश्यकता नहीं है, इस प्रकार सर्वर पर तेज़ी से और कम लोड कर रहा है।

ब्लॉब्स पर अधिक जानकारी के लिए, this और this देखें।

3

व्याकरण फ़ाइल को PHP, JSP, या आपकी पसंदीदा वेब विकास भाषा जैसे कुछ का उपयोग करके गतिशील रूप से जेनरेट किया जा सकता है। व्याकरण फ़ाइल HTTP का उपयोग कर प्राप्त किया गया है, इसलिए आप कुछ इस तरह हो सकता है अगर आप PHP का उपयोग कर रहे हैं:

<input type="text" speech grammar="grammar.php?some_var=foo" /> 

पीएचपी गतिशील व्याकरण एक क्वेरी स्ट्रिंग में या माध्यम से पारित जानकारी के आधार पर संग्रहीत सत्र जानकारी बनाने और इसे वापस होगा भाषण इंजन के लिए।