android - रिकॉर्ड ध्वनि क्लिप के साथ एंड्रॉइड पर आवाज पहचान?




speech-recognition voice (2)

मैंने एंड्रॉइड पर आवाज पहचान सुविधा का उपयोग किया है और मुझे यह पसंद है। यह मेरे ग्राहकों की सबसे प्रशंसनीय विशेषताओं में से एक है। हालांकि, प्रारूप कुछ हद तक प्रतिबंधित है। आपको पहचानकर्ता के इरादे को कॉल करना होगा, क्या यह Google को प्रतिलेखन के लिए रिकॉर्डिंग भेजता है, और पाठ को वापस प्रतीक्षा करें।

मेरे कुछ विचारों को मेरे ऐप के भीतर ऑडियो रिकॉर्ड करने और फिर क्लिप को ट्रांसक्रिप्शन के लिए Google को भेजने की आवश्यकता होगी।

क्या कोई तरीका है कि मैं पाठ के साथ भाषण के साथ संसाधित करने के लिए एक ऑडियो क्लिप भेज सकता हूं?


जहां तक ​​मुझे पता है कि ट्रांसक्रिप्शन के लिए Google को सीधे ऑडियो क्लिप भेजने का कोई तरीका नहीं है। हालांकि, SpeechRecognizer (एपीआई स्तर 8) ने SpeechRecognizer क्लास की शुरुआत की, जो भाषण मान्यता सेवा तक सीधे पहुंच प्रदान करता है। तो, उदाहरण के लिए, आप एक ऑडियो क्लिप के प्लेबैक शुरू कर सकते हैं और अपनी गतिविधि पृष्ठभूमि में सुनने वाले भाषण पहचानकर्ता को शुरू कर सकती है, जो उपयोगकर्ता द्वारा परिभाषित श्रोता कॉलबैक विधि को पूरा करने के बाद परिणाम लौटाएगी।

निम्न नमूना कोड को गतिविधि के भीतर परिभाषित किया जाना चाहिए क्योंकि SpeechRecognizer के तरीकों को मुख्य अनुप्रयोग थ्रेड में चलाना आवश्यक है। इसके अलावा आपको अपने AndroidManifest.xml पर RECORD_AUDIO अनुमति जोड़ने की आवश्यकता होगी।



    boolean available = SpeechRecognizer.isRecognitionAvailable(this);
    if (available) {
        SpeechRecognizer sr = SpeechRecognizer.createSpeechRecognizer(this);
        sr.setRecognitionListener(new RecognitionListener() {
            @Override
            public void onResults(Bundle results) {
                // process results here
            }
            // define your other overloaded listener methods here
        });
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        // the following appears to be a requirement, but can be a "dummy" value
        intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.dummy");
        // define any other intent extras you want

        // start playback of audio clip here

        // this will start the speech recognizer service in the background
        // without starting a separate activity
        sr.startListening(intent);
    }

आप पहचान सेवा को विस्तारित करके अपनी भाषण मान्यता सेवा भी परिभाषित कर सकते हैं, लेकिन यह इस उत्तर के दायरे से बाहर है :)


मुझे एक समाधान मिला जो भाषण पहचानने और ऑडियो रिकॉर्डिंग के लिए अच्छी तरह से काम कर रहा है। समाधान के काम को दिखाने के लिए बनाए गए एक साधारण एंड्रॉइड प्रोजेक्ट का link यहां दिया गया है। इसके अलावा, मैंने ऐप को चित्रित करने के लिए प्रोजेक्ट के अंदर कुछ प्रिंट स्क्रीन डालीं।

मैं संक्षेप में इस्तेमाल किए गए दृष्टिकोण को समझाने की कोशिश करूंगा। मैंने उस परियोजना में दो विशेषताओं को जोड़ा: Google स्पीच एपीआई और फ्लैक रिकॉर्डिंग।

Google स्पीच एपीआई HTTP कनेक्शन के माध्यम से बुलाया जाता है। माइक पल्ट्ज एपीआई के बारे में अधिक जानकारी देता है:

"(...) नया [Google] एपीआई एक पूर्ण-डुप्लेक्स स्ट्रीमिंग एपीआई है। इसका क्या अर्थ है, यह वास्तव में दो HTTP कनेक्शन का उपयोग करता है- सामग्री को" लाइव "खंडित धारा के रूप में अपलोड करने के लिए एक POST अनुरोध, और एक दूसरे परिणामों को एक्सेस करने का अनुरोध प्राप्त करें, जो लंबे ऑडियो नमूने के लिए या ऑडियो स्ट्रीमिंग के लिए अधिक समझ में आता है। "

हालांकि, इस एपीआई को ठीक से काम करने के लिए एक एफएलएसी ध्वनि फ़ाइल प्राप्त करने की आवश्यकता है। इससे हमें दूसरे भाग में जाना पड़ता है: फ्लैक रिकॉर्डिंग

मैंने ऑडियोबू नामक ओपन सोर्स ऐप से कोड और पुस्तकालयों के कुछ टुकड़ों को निकालने और अनुकूलित करने के माध्यम से उस परियोजना में फ्लैक रिकॉर्डिंग लागू की। ऑडियोबू फ्लैक प्रारूप को रिकॉर्ड और प्ले करने के लिए देशी कोड का उपयोग करता है।

इस प्रकार, एक फ्लैक ध्वनि रिकॉर्ड करना संभव है, इसे Google स्पीच एपीआई को भेजें, टेक्स्ट प्राप्त करें, और अभी दर्ज की गई ध्वनि चलाएं।

मेरे द्वारा बनाई गई परियोजना में इसे काम करने के लिए बुनियादी सिद्धांत हैं और विशिष्ट स्थितियों के लिए बेहतर किया जा सकता है। इसे एक अलग परिदृश्य में काम करने के लिए, Google स्पीच एपीआई कुंजी प्राप्त करना आवश्यक है, जिसे Google क्रोमियम-देव समूह का हिस्सा बनकर प्राप्त किया जाता है। मैंने उस प्रोजेक्ट में सिर्फ एक काम छोड़ने के लिए एक कुंजी छोड़ी, लेकिन मैं इसे अंततः हटा दूंगा। अगर किसी को इसके बारे में अधिक जानकारी चाहिए, तो मुझे बताएं क्योंकि मैं इस पोस्ट में 2 से अधिक लिंक नहीं डाल पा रहा हूं।





voice-recognition