2012-12-22 10 views
10

एंड्रॉइड 4.1 में आप keyboard पर माइक्रोफ़ोन विकल्प का उपयोग करके टेक्स्ट रूपांतरण में रीयल-टाइम भाषण प्राप्त कर सकते हैं।आप एंड्रॉइड के वास्तविक समय भाषण को पाठ में कैसे उपयोग करते हैं?

मैं android.speech के लिए दस्तावेज़ों को रीयल-टाइम भाषण को किसी एप्लिकेशन के लिए कार्यान्वित करने का तरीका जानने का प्रयास कर रहा हूं। हालांकि, यह एकमात्र विकल्प है जो इसे सुविधाजनक बनाएगा "EXTRA_PARTIAL_RESULTS" विकल्प है (जिसे सर्वर हर बार उपयोग करने का प्रयास करता है)।

कोड:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
     RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "VoiceIME"); 
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true); 
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 3000L); 

mSpeaker.startListening(intent); 

कभी आंशिक परिणाम देता है।

मुझे पता है कि कुंजीपटल संस्करण लगातार यह करता है क्योंकि यह संभव है। किसी को पता है कैसे?

उत्तर

4

startListening पर कॉल करने से पहले आपको onPartialResults-कॉलबैक पंजीकृत करने की आवश्यकता है। दो महत्वपूर्ण बातें ध्यान रखें:

  • बंडल जिसके साथ onPartialResults एंड्रॉयड एपीआई द्वारा निर्दिष्ट नहीं है कहा जाता है की संरचना;
  • प्रत्येक भाषण पहचानकर्ता इस कॉलबैक का समर्थन नहीं करता है।

तो आपका कोड Google Voice Search के लिए विशिष्ट होगा।

mSpeaker.setRecognitionListener(new RecognitionListener() { 
    ... 
    public void onPartialResults(Bundle partialResults) { 
    // WARNING: The following is specific to Google Voice Search 
    String[] results = 
     partialResults.getStringArray("com.google.android.voicesearch.UNSUPPORTED_PARTIAL_RESULTS"); 
    updateTheUi(results); 
    } 
    ... 
} 

एक खुला स्रोत अनुप्रयोग में कार्रवाई में इस कॉलबैक देखने के लिए, प्रलाप देखें:

0

आप वास्तविक चाहते हैं जब माइक्रो स्पीकर बोल रहा है, तब दिखाए जाने के लिए आंशिक परिणाम आंशिक परिणाम, आप पहचानकर्ता इंटेन्टेंट का उपयोग करके दृष्टिकोण छोड़ना चाहते हैं और पहचान सेवा को छोड़कर सेवा छोड़ना चाहते हैं 'माइक्रो' आइकन के पूर्व चयन के साथ संयुक्त एक साधारण एंड्रॉइड टेक्स्ट बॉक्स जैसा कि आप एंड्रॉइड 'नोट्स' नमूना ऐप में कर सकते हैं ...

देखें ./samples/android-16/NotePad/tests/src/com/उदाहरण/एंड्रॉइड/नोटपैड

यह कॉम्बो आपको वास्तविक समय में आंशिक पाठ-से-भाषण परिणामों की सुविधा प्रदान करता है क्योंकि वे सर्वर-साइड 'वॉयसशर्च' से वापस आते हैं जो कि 'पहचानकर्ता' से संबंधित है 'आंशिक' कॉलबैक।

कई टिप्पणियां बताती हैं कि पहचानकर्ता इंटेंट 'ऑन पार्टिकल रीसेट्स' पर कॉलबैक नहीं चलाता है। किसी कारण से, एंड्रॉइड 4.2 'सतत' भाषण का समर्थन नहीं करता है पहचान मोड जो जावास्क्रिप्ट का उपयोग करके ठीक काम करता है। 4.2 पर 'रिकग्निशन लिस्टनर' इंटरफ़ेस के मेरे परीक्षण वॉल्यूम घटनाओं पर 'ऑनरम्स चेंज' पर सैकड़ों कॉलबैक दिखाते हैं, लेकिन 'partialResult' ईवेंट पर शून्य गतिविधि दिखाते हैं। कहीं, यह कॉलबैक खो गया है ??

js समाधान के लिए, क्रोम बीटा रिलीज 25 को स्थापित करने और here

जाना एंड्रॉयड नोट्स एप्लिकेशन का उपयोग करके। नमूना और कुंजीपटल से माइक आइकन का चयन करना, आप वही काम कर सकते हैं जो ऊपर जेएस वेबएप लिंक है।

+0

तुम्हारा क्या मतलब है 'पूर्व चयन' माइक आइकन? क्या यह प्रोग्रामेटिक तरीके से करने का कोई तरीका है? – Patrick

+0

आप आईएमई इंटरफेस में वास्तविक कुंजी खोजने की कोशिश कर सकते हैं और माइक्रोफ़ोन के साथ कुंजी ओवरलेन पर 'स्पर्श' को आग लगा सकते हैं। मैंने इस दृष्टिकोण का उपयोग नहीं किया क्योंकि कीबोर्ड को प्रदर्शित करना और उपयोगकर्ता को माइक्रोफ़ोन कुंजी को छूने के लिए प्रतीक्षा करना इतना आसान था। यह भी कर सकता है: getSpeechRecognizer()। StartListening (SpeechRecognizer.createSpeechRecognizer (यह)); –

+0

कुछ गंभीर हैकिंग के बिना संभव नहीं दिखता है ... आईएमई इंटरफ़ेस केवल सिस्टम के लिए उपलब्ध है, इसलिए मुझे ऐप से आईएमई का उदाहरण प्राप्त करना संभव नहीं लगता है। मैं भाषणरेक का उपयोग कर रहा हूं, कीबोर्ड के साथ विस्तारित आवाज-टू-टेक्स्ट करना संभव नहीं है। – Patrick

0

जब से हम यकीन के लिए आंशिक परिणाम कॉलबैक से आ बंडल के प्रमुख नाम नहीं पता कर सकते हैं, इस इसकी सामग्री पता लगाने के लिए उपयोग करें:

public void onPartialResults(Bundle partialResults) {  
    String string = "Bundle{"; 
    for (String key : partialResults.keySet()) { 
     string += " " + key + " => " + partialResults.get(key) + ";"; 
    } 
    Log.e("joshtag","onPartialResults"+string); 
    //see the keynames in Logcat and extract partial reesults here 
} 
संबंधित मुद्दे