.NET டெஸ்க்டாப் பயன்பாடுகளைப் பயன்படுத்தி பேச்சு அறிதல். ஆண்ட்ராய்டு 6.0 இல் உண்மையான உதாரணம் ஆஃப்லைன் பேச்சு அங்கீகாரத்தைப் பயன்படுத்தி சர்வர்கள் இல்லாமல் அதிவேக பேச்சு அங்கீகாரம்

) வீட்டு உபயோகக் கட்டுப்பாட்டின் உண்மையான ஹலோ வேர்ல்ட் உதாரணத்தைப் பயன்படுத்துதல்.
வீட்டு உபயோகப் பொருட்கள் எதற்கு? ஆம், ஏனென்றால் அத்தகைய உதாரணத்திற்கு நன்றி நீங்கள் அதைப் பாராட்டலாம் வேகம் மற்றும் துல்லியம்பயன்படுத்தி அடைய முடியும் முற்றிலும் உள்ளூர்போன்ற சர்வர்கள் இல்லாமல் பேச்சு அங்கீகாரம் Google ASRஅல்லது யாண்டெக்ஸ் ஸ்பீச்கிட்.
நிரலின் அனைத்து மூலக் குறியீடுகளையும் Android க்கான அசெம்பிளியையும் கட்டுரையுடன் இணைக்கிறேன்.

ஏன் திடீரென்று?

சமீபத்தில் இதைப் பார்த்ததால், ஆசிரியரிடம் தனது திட்டத்திற்கு சேவையக அடிப்படையிலான பேச்சு அங்கீகாரத்தை ஏன் பயன்படுத்த விரும்புகிறீர்கள் என்று கேட்டேன் (என் கருத்துப்படி, இது தேவையற்றது மற்றும் சில சிக்கல்களுக்கு வழிவகுத்தது). அந்த முடிவுக்கு, எதையும் அங்கீகரிக்க வேண்டிய அவசியமில்லாத திட்டங்களுக்கான மாற்று முறைகளைப் பயன்படுத்துவதை இன்னும் விரிவாக விவரிக்க முடியுமா, மேலும் அகராதி வரையறுக்கப்பட்ட சொற்களின் தொகுப்பைக் கொண்டுள்ளது. நடைமுறை பயன்பாட்டின் உதாரணத்துடன் கூட...

Yandex மற்றும் Google ஐத் தவிர வேறு எதுவும் நமக்கு ஏன் தேவை?

அந்த "நடைமுறை பயன்பாட்டிற்காக" நான் தலைப்பைத் தேர்ந்தெடுத்தேன் ஸ்மார்ட் ஹோமுக்கான குரல் கட்டுப்பாடு.
ஏன் சரியாக இந்த உதாரணம்? ஏனெனில் இது கிளவுட் தீர்வுகளைப் பயன்படுத்தி அங்கீகாரத்தை விட முற்றிலும் உள்ளூர் பேச்சு அங்கீகாரத்தின் பல நன்மைகளைக் காட்டுகிறது. அதாவது:
  • வேகம்- நாங்கள் சேவையகங்களைச் சார்ந்திருக்கவில்லை, எனவே அவற்றின் கிடைக்கும் தன்மை, அலைவரிசை போன்றவற்றைச் சார்ந்து இருக்க மாட்டோம். காரணிகள்
  • துல்லியம்- எங்கள் பயன்பாட்டிற்கு விருப்பமான அகராதியுடன் மட்டுமே எங்கள் இயந்திரம் இயங்குகிறது, இதன் மூலம் அங்கீகாரத்தின் தரத்தை அதிகரிக்கிறது
  • விலை- சேவையகத்திற்கான ஒவ்வொரு கோரிக்கைக்கும் நாங்கள் பணம் செலுத்த வேண்டியதில்லை
  • குரல் செயல்படுத்தல்- முதல் புள்ளிகளுக்கு கூடுதல் போனஸாக - எங்கள் போக்குவரத்தை வீணாக்காமல் மற்றும் சேவையகங்களை ஏற்றாமல் தொடர்ந்து "ஒளிபரப்பைக் கேட்க" முடியும்

குறிப்பு

இந்த நன்மைகளை நன்மைகளாகக் கருதலாம் என்பதை இப்போதே முன்பதிவு செய்கிறேன் ஒரு குறிப்பிட்ட வகை திட்டங்களுக்கு மட்டுமே, நாம் எங்கு இருக்கிறோம் எங்களுக்கு முன்கூட்டியே தெரியும், என்ன அகராதி மற்றும் எந்த இலக்கணத்துடன் பயனர் செயல்படுவார். அதாவது, தன்னிச்சையான உரையை நாம் அங்கீகரிக்கத் தேவையில்லை (எடுத்துக்காட்டாக, ஒரு எஸ்எம்எஸ் செய்தி அல்லது தேடல் வினவல்). இல்லையெனில், கிளவுட் அங்கீகாரம் இன்றியமையாதது.

எனவே ஆண்ட்ராய்டு இணையம் இல்லாமல் பேச்சை அடையாளம் காண முடியும்!
ஆம், ஆம்... ஜெல்லிபீனில் மட்டும். அரை மீட்டரிலிருந்து மட்டுமே, இனி இல்லை. இந்த அங்கீகாரம் அதே கட்டளையாகும், மிகச் சிறிய மாதிரியைப் பயன்படுத்துகிறது. எனவே எங்களால் அதை நிர்வகிக்கவோ அல்லது கட்டமைக்கவோ முடியாது. அடுத்த முறை அவள் எங்களிடம் என்ன திரும்புவாள் என்பது தெரியவில்லை. SMS க்கு தான் சரியானது என்றாலும்!

நாம் என்ன செய்ய வேண்டும்?

வீட்டு உபயோகப் பொருட்களுக்கான குரல் ரிமோட் கண்ட்ரோலை நாங்கள் செயல்படுத்துவோம், இது துல்லியமாகவும் விரைவாகவும் சில மீட்டர்கள் மற்றும் மலிவான, மோசமான, மிகவும் மலிவான ஆண்ட்ராய்டு ஸ்மார்ட்போன்கள், டேப்லெட்டுகள் மற்றும் கடிகாரங்களில் கூட வேலை செய்யும்.
தர்க்கம் எளிமையானது ஆனால் மிகவும் நடைமுறைக்குரியதாக இருக்கும். மைக்ரோஃபோனைச் செயல்படுத்தி ஒன்று அல்லது அதற்கு மேற்பட்ட சாதனப் பெயர்களைச் சொல்கிறோம். பயன்பாடு அவற்றை அடையாளம் கண்டு, தற்போதைய நிலையைப் பொறுத்து அவற்றை ஆன் மற்றும் ஆஃப் செய்கிறது. அல்லது அவர் அவர்களிடமிருந்து ஒரு அதிர்ஷ்டத்தைப் பெற்று அதை இனிமையான பெண் குரலில் உச்சரிப்பார். உதாரணமாக, அறையில் தற்போதைய வெப்பநிலை.

நடைமுறை பயன்பாடுகள் ஏராளமாக உள்ளன

காலையில், கண்களைத் திறக்காமல், நைட்ஸ்டாண்டில் உள்ள ஸ்மார்ட்போன் திரையில் உங்கள் உள்ளங்கையை அறைந்து, “காலை வணக்கம்!” என்று கட்டளையிட்டீர்கள். - ஸ்கிரிப்ட் தொடங்குகிறது, காபி மேக்கர் ஆன் செய்து முனகுகிறார், இனிமையான இசை ஒலிக்கிறது, திரைச்சீலைகள் திறக்கப்படுகின்றன.
ஒவ்வொரு அறையிலும் சுவரில் மலிவான (2 ஆயிரம், இனி இல்லை) ஸ்மார்ட்போனை மாட்டி வைப்போம். நாங்கள் வேலை முடிந்ததும் வீட்டிற்குச் சென்று வெற்றிடத்திற்கு கட்டளையிடுகிறோம் “ஸ்மார்ட் ஹோம்! விளக்குகள், டிவி! - அடுத்து என்ன நடக்கும் என்று சொல்ல வேண்டிய அவசியம் இல்லை என்று நினைக்கிறேன்.

டிரான்ஸ்கிரிப்ஷன்கள்



இலக்கணம் என்ன என்பதை விவரிக்கிறது பயனர் என்ன சொல்ல முடியும். Pocketsphinx தெரிந்து கொள்ள, எப்படிஅவர் அதை உச்சரிப்பார், இலக்கணத்திலிருந்து ஒவ்வொரு வார்த்தையும் தொடர்புடைய மொழி மாதிரியில் எப்படி ஒலிக்கிறது என்பதை எழுதுவது அவசியம். அது படியெடுத்தல்ஒவ்வொரு வார்த்தையும். அது அழைக்கபடுகிறது அகராதி.

டிரான்ஸ்கிரிப்ஷன்கள் ஒரு சிறப்பு தொடரியல் மூலம் விவரிக்கப்பட்டுள்ளன. உதாரணத்திற்கு:
ஸ்மார்ட் uu m n ay j house d oo m

கொள்கையளவில், சிக்கலான எதுவும் இல்லை. டிரான்ஸ்கிரிப்ஷனில் இரட்டை உயிரெழுத்து அழுத்தத்தைக் குறிக்கிறது. இரட்டை மெய் என்பது ஒரு மென்மையான மெய்யெழுத்து, அதைத் தொடர்ந்து ஒரு உயிரெழுத்து. ரஷ்ய மொழியின் அனைத்து ஒலிகளுக்கும் சாத்தியமான அனைத்து சேர்க்கைகளும்.

எங்கள் பயன்பாட்டில் உள்ள அனைத்து டிரான்ஸ்கிரிப்ஷன்களையும் முன்கூட்டியே விவரிக்க முடியாது என்பது தெளிவாகிறது, ஏனென்றால் பயனர்கள் தங்கள் சாதனங்களுக்குக் கொடுக்கும் பெயர்கள் எங்களுக்கு முன்கூட்டியே தெரியாது. எனவே, ரஷ்ய ஒலிப்புமுறையின் சில விதிகளின்படி "பறக்கும்போது" இதுபோன்ற டிரான்ஸ்கிரிப்ஷன்களை உருவாக்குவோம். இதைச் செய்ய, பின்வரும் PhonMapper வகுப்பை நீங்கள் செயல்படுத்தலாம், இது ஒரு சரத்தை உள்ளீடாகப் பெற்று அதற்கான சரியான டிரான்ஸ்கிரிப்ஷனை உருவாக்கலாம்.

குரல் செயல்படுத்தல்

முன்னரே தீர்மானிக்கப்பட்ட சொற்றொடருக்கு (அல்லது சொற்றொடர்கள்) எதிர்வினையாற்றுவதற்காக, எல்லா நேரங்களிலும் "ஒளிபரப்பைக் கேட்க" பேச்சு அங்கீகார இயந்திரத்தின் திறன் இதுவாகும். அதே நேரத்தில், மற்ற எல்லா ஒலிகளும் பேச்சும் நிராகரிக்கப்படும். இது இலக்கணத்தை விவரிப்பது மற்றும் மைக்ரோஃபோனை இயக்குவது போன்றது அல்ல. இந்த பணியின் கோட்பாட்டையும் அது எவ்வாறு செயல்படுகிறது என்பதற்கான இயக்கவியலையும் நான் இங்கு முன்வைக்க மாட்டேன். சமீபத்தில் Pocketsphinx இல் பணிபுரியும் புரோகிராமர்கள் அத்தகைய செயல்பாட்டைச் செயல்படுத்தினர், இப்போது அது API இல் பெட்டிக்கு வெளியே கிடைக்கிறது.

ஒரு விஷயம் கண்டிப்பாக குறிப்பிடத் தக்கது. செயல்படுத்தும் சொற்றொடருக்கு, நீங்கள் டிரான்ஸ்கிரிப்ஷனைக் குறிப்பிடுவது மட்டுமல்லாமல், பொருத்தமான ஒன்றைத் தேர்ந்தெடுக்கவும் வேண்டும். உணர்திறன் வரம்பு மதிப்பு. மிகச் சிறிய மதிப்பு பல தவறான நேர்மறைகளுக்கு வழிவகுக்கும் (இது நீங்கள் செயல்படுத்தும் சொற்றொடரைச் சொல்லவில்லை, ஆனால் கணினி அதை அங்கீகரிக்கிறது). மற்றும் மிக அதிகமாக - நோய் எதிர்ப்பு சக்திக்கு. எனவே, இந்த அமைப்பு குறிப்பாக முக்கியத்துவம் வாய்ந்தது. மதிப்புகளின் தோராயமான வரம்பு - 1e-1 முதல் 1e-40 வரை செயல்படுத்தும் சொற்றொடரைப் பொறுத்து.

ப்ராக்ஸிமிட்டி சென்சார் செயல்படுத்தல்

இந்த பணி எங்கள் திட்டத்திற்கு குறிப்பிட்டது மற்றும் அங்கீகாரத்துடன் நேரடியாக தொடர்புடையது அல்ல. குறியீட்டை முக்கிய செயல்பாட்டில் நேரடியாகக் காணலாம்.
அவள் செயல்படுத்துகிறாள் SensorEventListenerஅணுகும் தருணத்தில் (சென்சார் மதிப்பு அதிகபட்சத்தை விட குறைவாக உள்ளது) இது டைமரை இயக்குகிறது, ஒரு குறிப்பிட்ட தாமதத்திற்குப் பிறகு சென்சார் இன்னும் தடுக்கப்பட்டுள்ளதா என்பதைச் சரிபார்க்கிறது. தவறான நேர்மறைகளை அகற்ற இது செய்யப்படுகிறது.
சென்சார் மீண்டும் தடுக்கப்படாவிட்டால், அங்கீகாரத்தை நிறுத்துகிறோம், முடிவைப் பெறுகிறோம் (கீழே உள்ள விளக்கத்தைப் பார்க்கவும்).

அங்கீகாரத்தைத் தொடங்குவோம்

பாக்கெட்ஸ்ஃபிங்க்ஸ் அங்கீகாரம் செயல்முறையை உள்ளமைக்கவும் இயக்கவும் வசதியான API ஐ வழங்குகிறது. இவை வகுப்புகள் SpechRecognizerமற்றும் பேச்சு அங்கீகாரம் அமைவு.
அங்கீகாரத்தின் உள்ளமைவு மற்றும் துவக்கம் இப்படித்தான் இருக்கும்:

PhonMapper phonMapper = புதிய PhonMapper(getAssets().open("dict/ru/hotwords")); இலக்கண இலக்கணம் = புதிய இலக்கணம்(பெயர்கள், ஃபோன்மேப்பர்); grammar.addWords(ஹாட்வேர்ட்); DataFiles dataFiles = புதிய DataFiles(getPackageName(), "ru"); கோப்பு hmmDir = புதிய கோப்பு (dataFiles.getHmm()); கோப்பு டிக்ட் = புதிய கோப்பு(dataFiles.getDict()); கோப்பு jsgf = புதிய கோப்பு (dataFiles.getJsgf()); நகல் சொத்துக்கள்(hmmDir); saveFile(jsgf, grammar.getJsgf()); saveFile(dict, grammar.getDict()); mRecognizer = SpeechRecognizerSetup.defaultSetup() .setAcousticModel(hmmDir) .setDictionary(dict) .setBoolean("-remove_noise", false) .setKeywordThreshold(1e-7f) .getRecognizer(); mRecognizer.addKeyphraseSearch(KWS_SEARCH, hotword); mRecognizer.addGrammarSearch(COMMAND_SEARCH, jsgf);

இங்கே நாம் முதலில் தேவையான அனைத்து கோப்புகளையும் வட்டில் நகலெடுக்கிறோம் (Pocketpshinx க்கு ஒலியியல் மாதிரி, இலக்கணம் மற்றும் டிக்ஷனரி டிரான்ஸ்கிரிப்ஷன்கள் வட்டில் இருக்க வேண்டும்). பின்னர் அங்கீகார இயந்திரம் கட்டமைக்கப்படுகிறது. மாதிரி மற்றும் அகராதி கோப்புகளுக்கான பாதைகள் மற்றும் சில அளவுருக்கள் (செயல்படுத்தும் சொற்றொடருக்கான உணர்திறன் வாசல்) குறிக்கப்படுகின்றன. அடுத்து, இலக்கணத்துடன் கோப்பிற்கான பாதை மற்றும் செயல்படுத்தும் சொற்றொடர் கட்டமைக்கப்பட்டுள்ளது.

இந்த குறியீட்டிலிருந்து நீங்கள் பார்க்க முடியும் என, ஒரு இயந்திரம் இலக்கணம் மற்றும் செயல்படுத்தும் சொற்றொடர் அங்கீகாரம் ஆகிய இரண்டிற்கும் கட்டமைக்கப்பட்டுள்ளது. இது ஏன் செய்யப்படுகிறது? எனவே நாம் தற்போது அடையாளம் காண வேண்டியவற்றிற்கு இடையில் விரைவாக மாறலாம். செயல்படுத்தும் சொற்றொடர் அங்கீகார செயல்முறையைத் தொடங்குவது இது போல் தெரிகிறது:

MRecognizer.startListening(KWS_SEARCH);
கொடுக்கப்பட்ட இலக்கணத்தின்படி பேச்சு இப்படித்தான் அங்கீகரிக்கப்படுகிறது:

MRecognizer.startListening(COMMAND_SEARCH, 3000);
இரண்டாவது வாதம் (விரும்பினால்) என்பது மில்லி விநாடிகளின் எண்ணிக்கையாகும், அதன் பிறகு யாரும் எதுவும் கூறவில்லை என்றால் அங்கீகாரம் தானாகவே முடிவடையும்.
நீங்கள் பார்க்க முடியும் என, இரண்டு சிக்கல்களையும் தீர்க்க ஒரே ஒரு இயந்திரத்தை மட்டுமே பயன்படுத்த முடியும்.

அங்கீகார முடிவை எவ்வாறு பெறுவது

அங்கீகார முடிவைப் பெற, இடைமுகத்தைச் செயல்படுத்தும் நிகழ்வு கேட்பவரையும் நீங்கள் குறிப்பிட வேண்டும் அங்கீகாரம் கேட்பவர்.
நிகழ்வுகளில் ஒன்று நிகழும்போது இது பாக்கெட்ஸ்ஃபிங்க்ஸால் அழைக்கப்படும் பல முறைகளைக் கொண்டுள்ளது:
  • on BeginningOfspeech- இயந்திரம் சில ஒலிகளைக் கேட்டது, ஒருவேளை அது பேச்சாக இருக்கலாம் (அல்லது இல்லை)
  • onEndOfSpeech- ஒலி முடிகிறது
  • பகுதி முடிவு- இடைநிலை அங்கீகார முடிவுகள் உள்ளன. செயல்படுத்தும் சொற்றொடருக்கு, இது வேலை செய்தது என்று அர்த்தம். வாதம் கருதுகோள்
  • முடிவு- அங்கீகாரத்தின் இறுதி முடிவு. முறை அழைக்கப்பட்ட பிறகு இந்த முறை அழைக்கப்படும் நிறுத்துமணிக்கு பேச்சு அங்கீகாரம். வாதம் கருதுகோள்அங்கீகாரத் தரவைக் கொண்டுள்ளது (சரம் மற்றும் மதிப்பெண்)

onPartialResult மற்றும் onResult முறைகளை ஏதாவது ஒரு வழியில் செயல்படுத்துவதன் மூலம், நீங்கள் அங்கீகார தர்க்கத்தை மாற்றி இறுதி முடிவைப் பெறலாம். எங்கள் பயன்பாட்டின் விஷயத்தில் இது எவ்வாறு செய்யப்படுகிறது என்பது இங்கே:

@Override public void onEndOfSpeech() ( Log.d(TAG, "onEndOfSpeech"); என்றால் (mRecognizer.getSearchName().equals(COMMAND_SEARCH)) ( mRecognizer.stop(); ) ) @Parthyial பொது வெற்றிடத்தை மீறு (கருதுகோள் == பூஜ்ய) திரும்பினால்; சரம் உரை = கருதுகோள்.getHypstr(); என்றால் (KWS_SEARCH.equals(mRecognizer.getSearchName())) (startRecognition(); ) else ( Log.d(TAG, text); ) ) @Override public void onResult(கருதுகோள் கருதுகோள்) ( mMicView.setBackgroundResource(R.drawable.background_big_mic); mHandler.removeCallbacks(mStopRecognitionCallback); சரம் உரை = கருதுகோள் != null ? , "onResult " + text); என்றால் (COMMAND_SEARCH.equals(mRecognizer.getSearchName())) ( என்றால் (உரை != பூஜ்யம்) ( Toast.makeText(இது, உரை, Toast.LENGTH_SHORT).show(); செயல்முறை(உரை );) mRecognizer.startListening(KWS_SEARCH); )

onEndOfSpeech நிகழ்வைப் பெறும்போது, ​​அதே நேரத்தில் செயல்படுத்தப்பட வேண்டிய கட்டளையை நாம் உணர்ந்தால், அங்கீகாரத்தை நிறுத்த வேண்டும், அதன் பிறகு onResult உடனடியாக அழைக்கப்படும்.
onResult இல் நீங்கள் இப்போது அங்கீகரிக்கப்பட்டதைச் சரிபார்க்க வேண்டும். இது ஒரு கட்டளையாக இருந்தால், நீங்கள் அதை செயல்படுத்துவதற்குத் தொடங்க வேண்டும் மற்றும் செயல்படுத்தும் சொற்றொடரை அடையாளம் காண இயந்திரத்தை மாற்ற வேண்டும்.
onPartialResult இல், செயல்படுத்தும் சொற்றொடரை அங்கீகரிப்பதில் மட்டுமே நாங்கள் ஆர்வமாக உள்ளோம். நாம் அதைக் கண்டறிந்தால், உடனடியாக கட்டளை அங்கீகார செயல்முறையைத் தொடங்குவோம். அது எப்படி இருக்கிறது என்பது இங்கே:

தனிப்பட்ட ஒத்திசைக்கப்பட்ட வெற்றிடமான தொடக்க அங்கீகாரம்() ( (mRecognizer == null ator. TONE_CDMA_PIP, 200); post(400, new Runnable() ( @Override public void run() ( mMicView.setBackgroundResource(R.drawable.background_big_mic_green); mRecognizer.startListening(COMMAND_0SEARCH, "G3.d0SEARCH, "g.d0SEARCH); கட்டளைகள்"); post(4000, mStopRecognitionCallback); ) );)
இங்கே நாம் முதலில் ஒரு சிறிய சிக்னலை இயக்கி, பயனரின் பேச்சைக் கேட்டோம், அவருடைய கட்டளைக்குத் தயாராக இருக்கிறோம் என்பதைத் தெரிவிக்கிறோம். இந்த நேரத்தில், மைக்ரோஃபோனை அணைக்க வேண்டும். எனவே, ஒரு குறுகிய கால அவகாசத்திற்குப் பிறகு நாம் அங்கீகாரத்தைத் தொடங்குகிறோம் (சிக்னல் காலத்தை விட சற்று நீளமானது, அதன் எதிரொலியைக் கேட்கக்கூடாது). பயனர் அதிக நேரம் பேசினால் அங்கீகாரத்தை வலுக்கட்டாயமாக நிறுத்தும் ஒரு தொடரையும் இது தொடங்குகிறது. இந்த வழக்கில், இது 3 வினாடிகள் ஆகும்.

அங்கீகரிக்கப்பட்ட சரத்தை கட்டளைகளாக மாற்றுவது எப்படி

சரி, இங்குள்ள அனைத்தும் ஒரு குறிப்பிட்ட பயன்பாட்டிற்கு குறிப்பிட்டவை. நிர்வாண எடுத்துக்காட்டில், நாங்கள் வரியிலிருந்து சாதனப் பெயர்களை வெளியே இழுத்து, விரும்பிய சாதனத்தைத் தேடி, ஸ்மார்ட் ஹோம் கன்ட்ரோலருக்கு HTTP கோரிக்கையைப் பயன்படுத்தி அதன் நிலையை மாற்றுவோம் அல்லது அதன் தற்போதைய நிலையைப் புகாரளிக்கிறோம். ஒரு தெர்மோஸ்டாட்). இந்த தர்க்கத்தை கன்ட்ரோலர் வகுப்பில் காணலாம்.

பேச்சை எவ்வாறு ஒருங்கிணைப்பது

பேச்சு தொகுப்பு என்பது அங்கீகாரத்தின் தலைகீழ் செயல்பாடாகும். இதோ அதற்கு நேர்மாறானது - பயனர் அதைக் கேட்கும் வகையில் உரையின் வரியை பேச்சாக மாற்ற வேண்டும்.
தெர்மோஸ்டாட்டைப் பொறுத்தவரை, எங்கள் Android சாதனத்தை தற்போதைய வெப்பநிலையைப் பேச வைக்க வேண்டும். API ஐப் பயன்படுத்துதல் TextToSpeechஇதைச் செய்வது மிகவும் எளிதானது (ரஷ்ய மொழிக்கான அற்புதமான பெண் TTS க்கு Google க்கு நன்றி):

தனிப்பட்ட வெற்றிட பேச்சு (சரம் உரை) ( ஒத்திசைக்கப்பட்ட (mSpeechQueue) ( ​​mRecognizer.stop(); mSpeechQueue.add(text); HashMap params = புதிய HashMap (2); params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UUID.randomUUID().toString()); params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC)); params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "true"); mTextToSpeech.speak(உரை, TextToSpeech.QUEUE_ADD, params); ))

நான் சாதாரணமாக ஏதாவது சொல்வேன், ஆனால் தொகுப்பு செயல்முறைக்கு முன், அங்கீகாரத்தை முடக்குவது அவசியம். சில சாதனங்களில் (உதாரணமாக, அனைத்து சாம்சங் சாதனங்களும்) மைக்ரோஃபோனைக் கேட்பது மற்றும் ஒரே நேரத்தில் எதையாவது ஒருங்கிணைப்பது பொதுவாக சாத்தியமற்றது.
பேச்சுத் தொகுப்பின் முடிவு (அதாவது, சின்தசைசர் மூலம் உரையைப் பேசும் செயல்முறையின் முடிவு) கேட்பவரில் கண்காணிக்க முடியும்:

தனிப்பட்ட இறுதி TextToSpeech.OnUtteranceCompletedListener mUtteranceCompletedListener = புதிய TextToSpeech.OnUtteranceCompletedListener() ( @Override public void onUtteranceCompleted(Sring utteranceId (Speesynchronchized.) என்றால் (mSpeechQueue.isEmpty()) ( mRecognizer.startListening( KWS_SEARCH) ;))) );

அதில், தொகுப்பு வரிசையில் வேறு ஏதேனும் உள்ளதா என்பதைச் சரிபார்த்து, வேறு எதுவும் இல்லை என்றால், செயல்படுத்தும் சொற்றொடர் அங்கீகாரத்தை இயக்குவோம்.

மற்றும் அது அனைத்து?

ஆம்! நீங்கள் பார்க்க முடியும் என, சாதனத்தில் நேரடியாக பேச்சை விரைவாகவும் திறமையாகவும் அங்கீகரிப்பது கடினம் அல்ல, Pocketsphinx போன்ற அற்புதமான திட்டங்கள் இருப்பதால். குரல் கட்டளைகளை அங்கீகரிப்பது தொடர்பான சிக்கல்களைத் தீர்ப்பதில் பயன்படுத்தக்கூடிய மிகவும் வசதியான API ஐ இது வழங்குகிறது.

இந்த எடுத்துக்காட்டில், முற்றிலும் குறிப்பிட்ட பணிக்கு அங்கீகாரத்தை இணைத்துள்ளோம் - ஸ்மார்ட் ஹோம் சாதனங்களின் குரல் கட்டுப்பாடு. உள்ளூர் அங்கீகாரம் காரணமாக, நாங்கள் மிக அதிக வேகத்தை அடைந்து பிழைகளை குறைத்துள்ளோம்.
இதே குறியீட்டை மற்ற குரல் தொடர்பான பணிகளுக்கும் பயன்படுத்தலாம் என்பது தெளிவாகிறது. இது ஸ்மார்ட் ஹோம் ஆக இருக்க வேண்டியதில்லை.

  • குரல் கட்டுப்பாடு
  • குரல் இயந்திரம்
  • குறிச்சொற்களைச் சேர்க்கவும்

    பதிவுசெய்யப்பட்ட பேச்சை படியெடுக்கும் கைமுறை வேலையை எந்த நிரலும் முழுமையாக மாற்ற முடியாது. இருப்பினும், உரையை உரையாக மொழிபெயர்ப்பதை கணிசமாக விரைவுபடுத்தும் மற்றும் எளிதாக்கும் தீர்வுகள் உள்ளன, அதாவது டிரான்ஸ்கிரிப்ஷனை எளிதாக்குகிறது.

    டிரான்ஸ்கிரிப்ஷன் என்பது ஆடியோ அல்லது வீடியோ கோப்பை உரை வடிவத்தில் பதிவு செய்வது. இணையத்தில் பணம் செலுத்திய பணிகள் உள்ளன, உரையை எழுதுவதற்கு நடிகருக்கு ஒரு குறிப்பிட்ட அளவு பணம் வழங்கப்படும்.

    பேச்சுக்கு உரை மொழிபெயர்ப்பு பயனுள்ளதாக இருக்கும்

    • பதிவுசெய்யப்பட்ட ஆடியோ அல்லது வீடியோ விரிவுரைகளை உரையாக மொழிபெயர்க்க மாணவர்கள்,
    • வலைத்தளங்கள் மற்றும் வலைப்பதிவுகளை இயக்கும் பதிவர்கள்,
    • எழுத்தாளர்கள், புத்தகங்கள் மற்றும் நூல்களை எழுதும் பத்திரிகையாளர்கள்,
    • தகவல் வணிகர்கள் தங்கள் வெபினார், பேச்சு போன்றவற்றிற்குப் பிறகு உரை தேவைப்படும்.
    • தட்டச்சு செய்வதில் சிரமம் உள்ளவர்கள் - அவர்கள் ஒரு கடிதத்தை ஆணையிட்டு அதை குடும்பத்தினர் அல்லது நண்பர்களுக்கு அனுப்பலாம்,
    • மற்ற விருப்பங்கள்.

    PCகள், மொபைல் பயன்பாடுகள் மற்றும் ஆன்லைன் சேவைகளில் கிடைக்கும் மிகவும் பயனுள்ள கருவிகளை விவரிப்போம்.

    1 இணையதளம் speechpad.ru

    கூகுள் குரோம் உலாவியைப் பயன்படுத்தி பேச்சை உரையாக மொழிபெயர்க்க உங்களை அனுமதிக்கும் ஆன்லைன் சேவை இது. சேவை மைக்ரோஃபோன் மற்றும் ஆயத்த கோப்புகளுடன் செயல்படுகிறது. நிச்சயமாக, நீங்கள் வெளிப்புற மைக்ரோஃபோனைப் பயன்படுத்தி உங்களை ஆணையிட்டால் தரம் மிக அதிகமாக இருக்கும். இருப்பினும், யூடியூப் வீடியோக்களுடன் கூட இந்த சேவை சிறப்பாக செயல்படுகிறது.

    "பதிவை இயக்கு" என்பதைக் கிளிக் செய்து, "மைக்ரோஃபோனைப் பயன்படுத்துதல்" பற்றிய கேள்விக்கு பதிலளிக்கவும் - இதைச் செய்ய, "அனுமதி" என்பதைக் கிளிக் செய்யவும்.

    சேவையைப் பயன்படுத்துவதற்கான நீண்ட வழிமுறைகளை படம் 1 இல் உள்ள பட்டன் 1 ஐக் கிளிக் செய்வதன் மூலம் சுருக்கலாம். 3. எளிய பதிவை முடிப்பதன் மூலம் விளம்பரத்திலிருந்து விடுபடலாம்.

    அரிசி. 3. ஸ்பீச்பேட் சேவை

    முடிக்கப்பட்ட முடிவு திருத்த எளிதானது. இதைச் செய்ய, நீங்கள் முன்னிலைப்படுத்தப்பட்ட வார்த்தையை கைமுறையாக சரிசெய்ய வேண்டும் அல்லது அதை மீண்டும் கட்டளையிட வேண்டும். வேலையின் முடிவுகள் உங்கள் தனிப்பட்ட கணக்கில் சேமிக்கப்படும், அவை உங்கள் கணினியிலும் பதிவிறக்கம் செய்யப்படலாம்.

    ஸ்பீச்பேடுடன் பணிபுரிவது குறித்த வீடியோ பாடங்களின் பட்டியல்:

    நீங்கள் Youtube இலிருந்து அல்லது உங்கள் கணினியிலிருந்து வீடியோக்களை டிரான்ஸ்கிரிப்ட் செய்யலாம், இருப்பினும், உங்களுக்கு ஒரு கலவை தேவைப்படும், மேலும் விவரங்கள்:

    வீடியோ "ஆடியோ டிரான்ஸ்கிரிப்ஷன்"

    சேவை ஏழு மொழிகளில் செயல்படுகிறது. ஒரு சிறிய கழித்தல் உள்ளது. முடிக்கப்பட்ட ஆடியோ கோப்பை நீங்கள் படியெடுக்க வேண்டும் என்றால், அதன் ஒலி ஸ்பீக்கர்கள் மூலம் கேட்கப்படுகிறது, இது எதிரொலி வடிவத்தில் கூடுதல் குறுக்கீட்டை உருவாக்குகிறது.

    2 சேவை dictation.io

    பேச்சை இலவசமாகவும் எளிதாகவும் உரையாக மொழிபெயர்க்க உங்களை அனுமதிக்கும் அற்புதமான ஆன்லைன் சேவை.

    அரிசி. 4. Service dictation.io

    படத்தில் 1. 4 - பக்கத்தின் முடிவில் ரஷ்ய மொழியைத் தேர்ந்தெடுக்கலாம். Google Chrome உலாவியில், மொழி தேர்ந்தெடுக்கப்பட்டது, ஆனால் சில காரணங்களால் Mozilla இல் அத்தகைய விருப்பம் இல்லை.

    முடிக்கப்பட்ட முடிவை தானாக சேமிக்கும் திறன் செயல்படுத்தப்பட்டுள்ளது குறிப்பிடத்தக்கது. இது தாவல் அல்லது உலாவியை மூடுவதன் விளைவாக தற்செயலான நீக்குதலைத் தடுக்கும். இந்த சேவை முடிக்கப்பட்ட கோப்புகளை அங்கீகரிக்கவில்லை. மைக்ரோஃபோனுடன் வேலை செய்கிறது. கட்டளையிடும் போது நிறுத்தற்குறிகளுக்கு பெயரிட வேண்டும்.

    உரை மிகவும் சரியாக அங்கீகரிக்கப்பட்டுள்ளது, எழுத்துப்பிழைகள் எதுவும் இல்லை. விசைப்பலகையில் நிறுத்தற்குறிகளை நீங்களே செருகலாம். முடிக்கப்பட்ட முடிவை உங்கள் கணினியில் சேமிக்க முடியும்.

    3 ரியல் ஸ்பீக்கர்

    இந்த நிரல் மனித பேச்சை எளிதாக உரையாக மொழிபெயர்க்க உங்களை அனுமதிக்கிறது. இது வெவ்வேறு கணினிகளில் வேலை செய்ய வடிவமைக்கப்பட்டுள்ளது: விண்டோஸ், ஆண்ட்ராய்டு, லினக்ஸ், மேக். அதன் உதவியுடன், நீங்கள் கேட்கும் பேச்சை மைக்ரோஃபோனாக மாற்றலாம் (உதாரணமாக, இது ஒரு மடிக்கணினியில் கட்டமைக்கப்படலாம்), அதே போல் ஆடியோ கோப்புகளாகவும் பதிவு செய்யப்படலாம்.

    13 உலக மொழிகளைப் புரிந்துகொள்ள முடியும். ஆன்லைன் சேவையாகச் செயல்படும் நிரலின் பீட்டா பதிப்பு உள்ளது:

    நீங்கள் மேலே உள்ள இணைப்பைப் பின்தொடர வேண்டும், ரஷ்ய மொழியைத் தேர்ந்தெடுத்து, உங்கள் ஆடியோ அல்லது வீடியோ கோப்பை ஆன்லைன் சேவையில் பதிவேற்றி அதன் படியெடுத்தலுக்கு பணம் செலுத்த வேண்டும். படியெடுத்த பிறகு, அதன் விளைவாக வரும் உரையை நகலெடுக்கலாம். டிரான்ஸ்கிரிப்ஷனுக்கான கோப்பு பெரியதாக இருந்தால், அதைச் செயலாக்க அதிக நேரம் எடுக்கும், மேலும் விவரங்கள்:

    2017 இல் RealSpeaker ஐப் பயன்படுத்தி இலவச டிரான்ஸ்கிரிப்ஷன் விருப்பம் இருந்தது, ஆனால் 2018 இல் அத்தகைய விருப்பம் இல்லை. டிரான்ஸ்கிரிப்ட் செய்யப்பட்ட கோப்பு எல்லா பயனர்களுக்கும் பதிவிறக்கம் செய்யக் கிடைக்கிறது என்பது மிகவும் குழப்பமாக உள்ளது; ஒருவேளை இது மேம்படுத்தப்படலாம்.

    நிரலின் டெவலப்பரின் (VKontakte, Facebook, Youtube, Twitter, மின்னஞ்சல், தொலைபேசி) தொடர்புகளை அவரது வலைத்தளத்தின் பக்கத்தில் காணலாம் (இன்னும் துல்லியமாக, தளத்தின் அடிக்குறிப்பில்):

    4 ஸ்பீச்லாக்கர்

    Android இல் இயங்கும் மொபைல் சாதனங்களுக்கான முந்தைய பயன்பாட்டிற்கு மாற்றாக. ஆப் ஸ்டோரில் இலவசமாகக் கிடைக்கும்:

    உரை தானாகவே திருத்தப்பட்டு நிறுத்தற்குறிகள் சேர்க்கப்படும். குறிப்புகளை நீங்களே கட்டளையிடுவதற்கு அல்லது பட்டியல்களை உருவாக்குவதற்கு மிகவும் வசதியானது. இதன் விளைவாக, உரை மிகவும் ஒழுக்கமான தரத்தில் இருக்கும்.

    5 டிராகன் டிக்டேஷன்

    இது ஆப்பிள் நிறுவனத்திடமிருந்து மொபைல் சாதனங்களுக்கு இலவசமாக விநியோகிக்கப்படும் ஒரு பயன்பாடாகும்.

    நிரல் 15 மொழிகளில் வேலை செய்ய முடியும். முடிவைத் திருத்தவும், பட்டியலில் இருந்து விரும்பிய சொற்களைத் தேர்ந்தெடுக்கவும் இது உங்களை அனுமதிக்கிறது. நீங்கள் அனைத்து ஒலிகளையும் தெளிவாக உச்சரிக்க வேண்டும், தேவையற்ற இடைநிறுத்தங்களை செய்ய வேண்டாம் மற்றும் ஒலியை தவிர்க்கவும். சில நேரங்களில் வார்த்தைகளின் முடிவில் தவறுகள் இருக்கும்.

    டிராகன் டிக்டேஷன் பயன்பாடு உரிமையாளர்களால் பயன்படுத்தப்படுகிறது, எடுத்துக்காட்டாக, அடுக்குமாடி குடியிருப்பில் நகரும்போது ஒரு கடையில் ஷாப்பிங் பட்டியலைக் கட்டளையிட. நான் அங்கு வரும்போது, ​​​​குறிப்பில் உள்ள உரையைப் பார்க்க முடியும், நான் கேட்க வேண்டியதில்லை.

    உங்கள் நடைமுறையில் நீங்கள் எந்த நிரலைப் பயன்படுத்தினாலும், முடிவுகளை இருமுறை சரிபார்த்து சில மாற்றங்களைச் செய்ய தயாராக இருங்கள். பிழையின்றி பிழையற்ற உரையைப் பெறுவதற்கான ஒரே வழி இதுதான்.

    மேலும் பயனுள்ள சேவைகள்:

    சமீபத்திய கணினி கல்வியறிவு கட்டுரைகளை உங்கள் இன்பாக்ஸில் நேரடியாகப் பெறுங்கள்.
    ஏற்கனவே அதிகம் 3,000 சந்தாதாரர்கள்

    .

    தயாரிப்புகள் மற்றும் தொழில்நுட்பங்கள்:

    விஷுவல் ஸ்டுடியோ, C#, .NET பேச்சு நூலகங்கள்

    கட்டுரை விவாதிக்கிறது:

    • கன்சோல் பயன்பாட்டிற்கு பேச்சு அங்கீகார ஆதரவைச் சேர்த்தல்;
    • அங்கீகரிக்கப்பட்ட பேச்சின் செயலாக்கம்;
    • பேச்சு அங்கீகார நூலகங்களை நிறுவுதல்;
    • Microsoft.Speech மற்றும் System.Speech ஆகியவற்றின் ஒப்பீடு;
    • Windows Forms பயன்பாட்டிற்கு பேச்சு அங்கீகார ஆதரவைச் சேர்த்தல்.

    Windows Phone Cortana, பேச்சு-செயல்படுத்தப்பட்ட தனிப்பட்ட உதவியாளர் (அதே போல் வீணாகப் பேச முடியாத ஒரு பழம்-நிறுவனம்) வருகையுடன், பேச்சு-இயக்கப்பட்ட பயன்பாடுகள் மென்பொருள் உருவாக்கத்தில் அதிக முக்கியத்துவம் பெற்றுள்ளன. இந்தக் கட்டுரையில், விண்டோஸ் கன்சோல் அப்ளிகேஷன்கள், விண்டோஸ் ஃபார்ம்ஸ் அப்ளிகேஷன்கள் மற்றும் விண்டோஸ் பிரசன்டேஷன் ஃபவுண்டேஷன் (WPF) ஆகியவற்றில் பேச்சு அறிதல் மற்றும் தொகுப்பை எவ்வாறு தொடங்குவது என்பதை நான் உங்களுக்குக் காண்பிப்பேன்.

    Windows Phone பயன்பாடுகள், ASP.NET வலை பயன்பாடுகள், Windows Store பயன்பாடுகள், Windows RT மற்றும் Xbox Kinect ஆகியவற்றில் பேச்சுத் திறனை நீங்கள் சேர்க்கலாம் என்பதை நினைவில் கொள்ளவும், ஆனால் இந்த கட்டுரையில் விவரிக்கப்பட்டுள்ள நுட்பங்கள் வேறுபடுகின்றன.

    இந்தக் கட்டுரையில் சரியாக என்ன விவாதிக்கப் போகிறது என்பதைப் பற்றிய யோசனையைப் பெறுவதற்கான ஒரு சிறந்த வழி, இரண்டு வெவ்வேறு டெமோ நிரல்களின் ஸ்கிரீன் ஷாட்களைப் பார்ப்பது. அரிசி. 1மற்றும் 2 . கன்சோல் பயன்பாட்டை இயக்கிய பிறகு அரிசி. 1உடனடியாக "நான் விழித்திருக்கிறேன்" என்ற சொற்றொடர் கூறுகிறது. நிச்சயமாக, இந்தக் கட்டுரையைப் படிக்கும்போது டெமோ பயன்பாட்டை நீங்கள் கேட்க முடியாது, எனவே கணினி என்ன சொல்கிறது என்பதை இது காட்டுகிறது. பின்னர் பயனர் "Speech on" கட்டளையை கூறுகிறார். டெமோ பயன்பாடு அங்கீகரிக்கப்பட்ட உரையுடன் பதிலளிக்கிறது மற்றும் இரண்டு எண்களைச் சேர்ப்பதற்கான கோரிக்கைகளை உள்நாட்டில் கேட்டு பதிலளிக்கிறது.

    அரிசி. 1. கன்சோல் பயன்பாட்டில் பேச்சு அங்கீகாரம் மற்றும் தொகுப்பு


    அரிசி. 2. Windows Forms பயன்பாட்டில் பேச்சு அங்கீகாரம்

    ஒன்று மற்றும் இரண்டையும், பின்னர் இரண்டு மற்றும் மூன்றையும் சேர்க்குமாறு பயனர் பயன்பாட்டைக் கேட்டார். பயன்பாடு பேசும் கட்டளைகளை அங்கீகரித்து குரல் மூலம் பதில்களை வழங்கியது. பேச்சு அங்கீகாரத்தைப் பயன்படுத்துவதற்கான மிகவும் பயனுள்ள வழிகளை நான் பின்னர் விவரிக்கிறேன்.

    பயனர் பின்னர் "ஸ்பீச் ஆஃப்" என்று குரல் கட்டளை கூறினார், இது கூட்டல் கட்டளைகளைக் கேட்பதை முடக்குகிறது, ஆனால் பேச்சு அங்கீகாரத்தை முழுமையாக முடக்காது. இந்த வாய்மொழி கட்டளைக்குப் பிறகு, ஒன்று மற்றும் இரண்டைச் சேர்ப்பதற்கான அடுத்த கட்டளை புறக்கணிக்கப்பட்டது. இறுதியாக, பயனர் மீண்டும் கேட்கும் கட்டளையை இயக்கி, "கிளாட்டு பரடா நிக்டோ" என்ற அர்த்தமற்ற கட்டளையை உச்சரித்தார், இது பேச்சு அங்கீகாரத்தை முற்றிலுமாக செயலிழக்கச் செய்து தன்னை நிறுத்துவதற்கான கட்டளையாக பயன்பாடு அங்கீகரிக்கப்பட்டது.

    அன்று அரிசி. 2போலி பேச்சு-செயல்படுத்தப்பட்ட Windows Forms பயன்பாட்டைக் காட்டுகிறது. இந்தப் பயன்பாடு பேசும் கட்டளைகளை அங்கீகரிக்கிறது, ஆனால் குரல் வெளியீட்டில் அவற்றிற்கு பதிலளிக்காது. நீங்கள் முதலில் ஆப்ஸைத் தொடங்கியபோது, ​​ஸ்பீச் ஆன் செக்பாக்ஸ் தேர்வு செய்யப்படவில்லை, இது பேச்சு அங்கீகாரம் செயலில் இல்லை என்பதைக் குறிக்கிறது. பயனர் இந்த தேர்வுப்பெட்டியை சரிபார்த்துவிட்டு "ஹலோ" என்றார். சாளரத்தின் கீழே உள்ள ListBox கட்டுப்பாட்டில் அங்கீகரிக்கப்பட்ட உரையைக் காண்பிப்பதன் மூலம் பயன்பாடு பதிலளித்தது.

    பயனர் பின்னர், "உரை பெட்டி 1 ஐ சிவப்பு நிறமாக அமைக்கவும்" என்றார். பயன்பாடு பேச்சை அங்கீகரித்து பதிலளித்தது: “உரை பெட்டி 1 சிவப்பு நிறத்தை அமைக்கவும்,” இது கிட்டத்தட்ட (ஆனால் முற்றிலும் இல்லை) பயனர் கூறியதுதான். அன்று இருந்தாலும் அரிசி. 2நீங்கள் அதை பார்க்க முடியாது, சாளரத்தின் மேல் உள்ள TextBox கட்டுப்பாட்டில் உள்ள உரை உண்மையில் சிவப்பு நிறத்தில் உள்ளது.

    பின்னர் பயனர் கூறினார்: "தயவுசெய்து உரை பெட்டி 1 ஐ வெள்ளையாக அமைக்கவும்." பயன்பாடு இதை "செட் டெக்ஸ்ட் பாக்ஸ் 1 ஒயிட்" என்று அங்கீகரித்து அதைச் செய்தது. பயனர் “குட்-பை” என்று கூறி முடித்தார், மேலும் பயன்பாடு அந்த உரையைக் காட்டியது, ஆனால் விண்டோஸ் படிவங்களில் எதுவும் செய்யவில்லை, இருப்பினும் அது ஸ்பீச் ஆன் தேர்வுப்பெட்டியை அழித்திருக்கலாம்.

    சின்தசைசர் பொருளைப் பயன்படுத்துவது மிகவும் எளிது.

    பின்வரும் பிரிவுகளில், தேவையான .NET பேச்சு நூலகங்களை நிறுவுவது உட்பட, இரண்டு டெமோ நிரல்களையும் உருவாக்கும் செயல்முறையை நான் உங்களுக்குக் கூறுகிறேன். இந்த கட்டுரை உங்களிடம் குறைந்தபட்சம் இடைநிலை நிரலாக்க திறன்கள் இருப்பதாகக் கருதுகிறது, ஆனால் பேச்சு அங்கீகாரம் மற்றும் தொகுப்பு பற்றி எதுவும் தெரியாது.

    கன்சோல் பயன்பாட்டில் பேச்சு அங்கீகார ஆதரவைச் சேர்த்தல்

    காட்டப்பட்டுள்ள டெமோவை உருவாக்க அரிசி. 1, நான் விஷுவல் ஸ்டுடியோவைத் தொடங்கினேன் மற்றும் ConsoleSpeech என்ற புதிய C# கன்சோல் பயன்பாட்டை உருவாக்கினேன். விஷுவல் ஸ்டுடியோ 2010 மற்றும் 2012 இல் பேச்சுக் கருவிகளை வெற்றிகரமாகப் பயன்படுத்தினேன், ஆனால் ஒப்பீட்டளவில் சமீபத்திய பதிப்புகள் நன்றாக இருக்க வேண்டும். டெம்ப்ளேட் குறியீட்டை எடிட்டரில் ஏற்றிய பிறகு, Solution Explorer சாளரத்தில் உள்ள Program.cs கோப்பை மிகவும் விளக்கமான ConsoleSpeechProgram.cs என மறுபெயரிட்டேன், மேலும் விஷுவல் ஸ்டுடியோ எனக்கான நிரல் வகுப்பை மறுபெயரிட்டது.

    அடுத்து, Microsoft.Speech.dll கோப்பிற்கான இணைப்பைச் சேர்த்துள்ளேன், இது C:\ProgramFiles (x86)\Microsoft SDKs\Speech\v11.0\Assembly இல் உள்ளது. இந்த DLL எனது கணினியில் காணவில்லை, நான் அதை பதிவிறக்க வேண்டியிருந்தது. ஒரு பயன்பாட்டிற்கு பேச்சு அங்கீகாரம் மற்றும் தொகுப்பு சேர்க்க தேவையான கோப்புகளை நிறுவுவது அவ்வளவு சாதாரணமானது அல்ல. நிறுவல் செயல்முறையை அடுத்த பகுதியில் விரிவாக விளக்குகிறேன், ஆனால் இப்போதைக்கு Microsoft.Speech.dll உங்கள் கணினியில் உள்ளது என்று வைத்துக்கொள்வோம்.

    பேச்சு DLLக்கு ஒரு குறிப்பைச் சேர்ப்பதன் மூலம், உயர்மட்ட சிஸ்டம் நேம்ஸ்பேஸைச் சுட்டிக்காட்டியதைத் தவிர, குறியீட்டின் மேற்புறத்தில் உள்ள அனைத்து உபயோக அறிக்கைகளையும் நீக்கிவிட்டேன். பின்னர் Microsoft.Speech.Recognition, Microsoft.Speech.Synthesis மற்றும் System.Globalization பெயர்வெளிகளுக்கான அறிக்கைகளைப் பயன்படுத்தி சேர்த்தேன். முதல் இரண்டு பெயர்வெளிகள் பேச்சு DLLக்கு மேப் செய்யப்பட்டுள்ளன. System.Speech.Recognition மற்றும் System.Speech.Synthesis போன்ற பெயர்வெளிகளும் உள்ளன, அவை குழப்பத்தை ஏற்படுத்தும். அவற்றுக்கிடையேயான வித்தியாசத்தை விரைவில் விளக்குகிறேன். குளோபலைசேஷன் நேம்ஸ்பேஸ் இயல்பாகவே கிடைக்கும் மற்றும் திட்டத்தில் புதிய குறிப்பு சேர்க்க தேவையில்லை.

    டெமோ கன்சோல் பயன்பாட்டிற்கான அனைத்து மூலக் குறியீடும் இங்கு வழங்கப்பட்டுள்ளது அரிசி. 3, மற்றும் இந்த கட்டுரையுடன் கூடிய மூல தொகுப்பிலும் கிடைக்கிறது. முக்கிய யோசனைகளை முடிந்தவரை மறைக்காமல் இருக்க அனைத்து நிலையான பிழை கையாளுதல்களையும் நீக்கிவிட்டேன்.

    அரிசி. 3. டெமோ கன்சோல் பயன்பாட்டு மூலக் குறியீடு

    கணினியைப் பயன்படுத்துதல்; Microsoft.Speech.Recognition ஐப் பயன்படுத்துதல்; Microsoft.Speech.Synthesis ஐப் பயன்படுத்துதல்; System.Globalization ஐப் பயன்படுத்துதல்; namespace ConsoleSpeech ( class ConsoleSpeechProgram ( static SpeechSynthesizer ss = new SpeechSynthesizer(); static SpeechRecognitionEngine sre; static bool done = false; static bool speechOn = true; static void Main(string args.S) முயற்சி டெலிலைன் ("\n(பேசுகிறேன்: நான் விழித்திருக்கிறேன்)"); ss.Speak("நான் விழித்திருக்கிறேன்"); CultureInfo ci = புதிய CultureInfo("en-us"); sre = புதிய SpeechRecognitionEngine(ci); sre.SetInputToDefaultAudioDevice( ; மேல் = new GrammarBuilder(); gb_StartStop.Append(ch_StartStopCommands); இலக்கணம் g_StartStop = புதிய இலக்கணம்(gb_StartStop); தேர்வுகள் ch_Numbers = புதிய தேர்வுகள்(); ch_Numbers.Add("1"s); ch_Numbers.Add("2.); ch_Number சேர்("3"); ch_Numbers.Add("4"); GrammarBuilder gb_WhatIsXplusY = புதிய GrammarBuilder(); gb_WhatIsXplusY.Append("என்ன"); gb_WhatIsXplusY.இணைப்பு(ch_Numbers); gb_WhatIsXplusY.Append("plus"); gb_WhatIsXplusY.இணைப்பு(ch_Numbers); இலக்கணம் g_WhatIsXplusY = புதிய இலக்கணம்(gb_WhatIsXplusY); sre.LoadGrammarAsync(g_StartStop); sre.LoadGrammarAsync(g_WhatIsXplusY); sre.RecognizeAsync(RecognizeMode.Multiple); போது (முடிந்தது == பொய்) (; ) கன்சோல்.WriteLine("\nஹிட்)< enter >ஷெல்லை மூடுவதற்கு\n"); Console.ReadLine(); ) கேட்ச் (விதிவிலக்கு) ( Console.WriteLine(ex.Message); Console.ReadLine(); ) ) // முதன்மை நிலையான வெற்றிடமான sre_SpeechRecognized(பொருள் அனுப்புநர், பேச்சு அங்கீகரிக்கப்பட்ட நிகழ்வுகள் ) ( string txt = e.Result.Text; float confidence = e.Result.Confidence; Console.WriteLine("\nஅங்கீகரிக்கப்பட்டது: " + txt); என்றால் (நம்பிக்கை< 0.60) return; if (txt.IndexOf("speech on") >= 0) ( Console.WriteLine("Speech now on"); speechOn = true; ) என்றால் (txt.IndexOf("speech off") >= 0) ( Console.WriteLine("Speech is now off"); speechOn = பொய்;) என்றால் (பேச்சு == பொய்) திரும்ப; என்றால் (txt.IndexOf("klatu") >= 0 && txt.IndexOf("barada") >= 0) (((SpeechRecognitionEngine)அனுப்புபவர்). RecognizeAsyncCancel(); done = true; Console.WriteLine("(பேசுகிறது: விடைபெறுதல்)"); "); முழு எண் " + தொகை + ")"); ss.SpeakAsync(வார்த்தைகள் + " கூட்டல் " + சொற்கள் + " சமம் " + தொகை); )) // sre_SpeechRecognized ) // நிரல் ) // ns

    அறிக்கைகளைப் பயன்படுத்திய பிறகு, டெமோ குறியீடு இப்படித் தொடங்குகிறது:

    namespace ConsoleSpeech ( class ConsoleSpeechProgram ( static SpeechSynthesizer ss = new SpeechSynthesizer(); static SpeechRecognitionEngine sre; static bool done = false; static bool speechOn = true; static void Main(string args) ( ...

    ஸ்பீச் சிந்தசைசர் ஆப்ஜெக்ட், வகுப்பு மட்டத்தில், பேச்சை ஒருங்கிணைக்க ஒரு பயன்பாட்டை செயல்படுத்துகிறது. SpeechRecognitionEngine ஆப்ஜெக்ட் ஒரு பயன்பாட்டைப் பேசும் சொற்கள் அல்லது சொற்றொடர்களைக் கேட்கவும் அங்கீகரிக்கவும் அனுமதிக்கிறது. பூலியன் மாறி முழு பயன்பாடும் எப்போது முடிவடைகிறது என்பதை தீர்மானிக்கிறது. ஸ்பீச் ஆன் பூலியன் மாறி, நிரலிலிருந்து வெளியேறுவதற்கான கட்டளையைத் தவிர வேறு ஏதேனும் கட்டளைகளை பயன்பாடு கேட்கிறதா என்பதைக் கட்டுப்படுத்துகிறது.

    இங்கே யோசனை என்னவென்றால், கன்சோல் பயன்பாடு விசைப்பலகை உள்ளீட்டை ஏற்காது, எனவே அது எப்போதும் கட்டளைகளைக் கேட்கிறது. இருப்பினும், speechOn தவறானது என்றால், நிரலிலிருந்து வெளியேறுவதற்கான கட்டளை மட்டுமே அங்கீகரிக்கப்பட்டு செயல்படுத்தப்படும்; மற்ற கட்டளைகள் அங்கீகரிக்கப்படுகின்றன ஆனால் புறக்கணிக்கப்படுகின்றன.

    முக்கிய முறை இப்படி தொடங்குகிறது:

    முயற்சிக்கவும் (ss.SetOutputToDefaultAudioDevice(); Console.WriteLine("\n(பேசுகிறேன்: நான் விழித்திருக்கிறேன்)"); ss.Speak("நான் விழித்திருக்கிறேன்");

    ஸ்பீச் சிந்தசைசர் பொருளின் ஒரு நிகழ்வு அறிவிக்கப்பட்டபோது உருவாக்கப்பட்டது. சின்தசைசர் பொருளைப் பயன்படுத்துவது மிகவும் எளிது. SetOutputToDefaultAudioDevice முறையானது உங்கள் கணினியுடன் இணைக்கப்பட்ட ஸ்பீக்கர்களுக்கு வெளியீட்டை அனுப்புகிறது (நீங்கள் ஒரு கோப்பிற்கு வெளியீட்டையும் அனுப்பலாம்). பேச்சு முறை ஒரு சரத்தை எடுத்து பின்னர் பேசுகிறது. அது எவ்வளவு எளிது.

    பேச்சு ஒருங்கிணைப்பை விட பேச்சு அங்கீகாரம் மிகவும் சிக்கலானது. தீர்க்கும் பொருளை உருவாக்குவதன் மூலம் முதன்மை முறை தொடர்கிறது:

    CultureInfo ci = புதிய CultureInfo("en-us"); sre = புதிய SpeechRecognitionEngine(ci); sre.SetInputToDefaultAudioDevice(); sre.SpeechRecognized += sre_SpeechRecognized;

    முதலில், CultureInfo பொருள் அங்கீகரிக்கப்பட வேண்டிய மொழியைக் குறிப்பிடுகிறது, இந்த விஷயத்தில் யுனைடெட் ஸ்டேட்ஸ் ஆங்கிலம். CultureInfo ஆப்ஜெக்ட் குளோபலைசேஷன் நேம்ஸ்பேஸில் உள்ளது, அதை நாங்கள் பயன்படுத்தி அறிக்கையுடன் குறிப்பிட்டோம். பின்னர், SpeechRecognitionEngine கட்டமைப்பாளரை அழைத்த பிறகு, குரல் உள்ளீடு இயல்புநிலை ஆடியோ சாதனத்திற்கு ஒதுக்கப்படும் - பெரும்பாலும் மைக்ரோஃபோன். பெரும்பாலான மடிக்கணினிகள் உள்ளமைக்கப்பட்ட மைக்ரோஃபோனைக் கொண்டுள்ளன, ஆனால் டெஸ்க்டாப்புகளுக்கு வெளிப்புற மைக்ரோஃபோன் தேவைப்படும் (பெரும்பாலும் இந்த நாட்களில் ஹெட்ஃபோன்களுடன் இணைக்கப்பட்டுள்ளது).

    அங்கீகரிப்பு பொருளுக்கான முக்கிய முறை பேச்சு அங்கீகரிக்கப்பட்ட நிகழ்வு கையாளுதல் ஆகும். விஷுவல் ஸ்டுடியோவைப் பயன்படுத்தும் போது, ​​நீங்கள் "sre.SpeechRecognized +=" எனத் தட்டச்சு செய்து ஒரு நொடி காத்திருந்தால், IntelliSense தானாகவே நிகழ்வு கையாளுபவரின் பெயருடன் உங்கள் வெளிப்பாட்டை முடிக்கும் - sre_SpeechRecognized. பரிந்துரையை ஏற்க Tab விசையை அழுத்தி, இந்தப் பெயரை இயல்புநிலையாகப் பயன்படுத்த பரிந்துரைக்கிறேன்.

    தேர்வுகள் ch_Numbers = புதிய தேர்வுகள்(); ch_Numbers.சேர்("1"); ch_Numbers.Add("2"); ch_Numbers.Add("3"); ch_Numbers.சேர்("4"); // தொழில்நுட்பக் கண்ணோட்டத்தில், // இது சேர்(புதிய சரம் ( "4" )); GrammarBuilder gb_WhatIsXplusY = புதிய GrammarBuilder(); gb_WhatIsXplusY.Append("என்ன"); gb_WhatIsXplusY.இணைப்பு(ch_Numbers); gb_WhatIsXplusY.Append("plus"); gb_WhatIsXplusY.இணைப்பு(ch_Numbers); இலக்கணம் g_WhatIsXplusY = புதிய இலக்கணம்(gb_WhatIsXplusY);

    இங்கே மூன்று முக்கிய பொருள்கள் தேர்வுகள் தொகுப்பு, GrammarBuilder டெம்ப்ளேட் மற்றும் இலக்கண கட்டுப்பாடு. நான் அங்கீகாரத்திற்கான இலக்கணத்தை உருவாக்கும்போது, ​​நான் அடையாளம் காண வேண்டிய சில குறிப்பிட்ட உதாரணங்களை பட்டியலிடுவதன் மூலம் தொடங்குகிறேன். "ஒன் பிளஸ் டூ என்றால் என்ன?" மற்றும் "மூன்று கூட்டல் நான்கு என்றால் என்ன?"

    தொடர்புடைய பொதுவான டெம்ப்ளேட்டை நான் வரையறுக்கிறேன், எடுத்துக்காட்டாக "என்ன கூடுதலாக ?. டெம்ப்ளேட் ஒரு GrammarBuilder ஆகும், மேலும் டெம்ப்ளேட்டிற்கு அனுப்பப்படும் குறிப்பிட்ட மதிப்புகள் தேர்வுகளின் தொகுப்பாகும். இலக்கணம் பொருள் டெம்ப்ளேட் மற்றும் தேர்வுகளை இணைக்கிறது.

    டெமோ திட்டத்தில், நான் சேர்த்தல்களை 1 முதல் 4 வரை வரம்பிட்டு, தேர்வுகள் தொகுப்பில் சரங்களாகச் சேர்க்கிறேன். மிகவும் திறமையான அணுகுமுறை:

    சரம் எண்கள் = புதிய சரம் ("1", "2", "3", "4" ); தேர்வுகள் ch_Numbers = புதிய தேர்வுகள்(எண்கள்);

    இரண்டு காரணங்களுக்காக தேர்வுகள் தொகுப்பை உருவாக்குவதற்கான குறைந்த செயல்திறன் கொண்ட அணுகுமுறையை நான் முன்வைக்கிறேன். முதலில், ஒரு நேரத்தில் ஒரு வரியைச் சேர்ப்பதுதான் மற்ற பேச்சு அங்கீகார உதாரணங்களில் நான் பார்த்த ஒரே அணுகுமுறை. இரண்டாவதாக, ஒரு நேரத்தில் ஒரு வரிசையைச் சேர்ப்பது வேலை செய்யாது என்று நீங்கள் நினைக்கலாம்; விஷுவல் ஸ்டுடியோ இன்டெல்லிசென்ஸ், நிகழ்நேரத்தில், சேர் ஓவர்லோடுகளில் ஒன்று வகை பாராக்கள் சரம் சொற்றொடர்களின் அளவுருவை ஏற்றுக்கொள்கிறது. நீங்கள் params முக்கிய சொல்லைக் கவனிக்கவில்லை என்றால், சேர் முறையானது சரங்களின் வரிசைகளை மட்டுமே ஏற்றுக்கொள்கிறது மற்றும் ஒரு சரம் இல்லை என்று நீங்கள் கருதியிருக்கலாம். ஆனால் இது அவ்வாறு இல்லை: அவர் இரண்டையும் ஏற்றுக்கொள்கிறார். ஒரு வரிசையை அனுப்ப பரிந்துரைக்கிறேன்.

    வரிசை எண்களில் இருந்து தேர்வுகளின் தொகுப்பை உருவாக்குவது ஒரு சிறப்பு நிகழ்வு மற்றும் இது போன்ற ஒரு நிரல் அணுகுமுறையை அனுமதிக்கிறது:

    சர எண்கள் = புதிய சரம்; (int i = 0; i< 100; ++i) numbers[i] = i.ToString(); Choices ch_Numbers = new Choices(numbers);

    GrammarBuilder இடங்களை நிரப்புவதற்கு விருப்பங்களை உருவாக்கிய பிறகு, டெமோ நிரல் GrammarBuilder ஐ உருவாக்குகிறது மற்றும் பின்னர் ஒரு கட்டுப்படுத்தும் இலக்கணத்தை உருவாக்குகிறது:

    GrammarBuilder gb_WhatIsXplusY = புதிய GrammarBuilder(); gb_WhatIsXplusY.Append("என்ன"); gb_WhatIsXplusY.இணைப்பு(ch_Numbers); gb_WhatIsXplusY.Append("plus"); gb_WhatIsXplusY.இணைப்பு(ch_Numbers); இலக்கணம் g_WhatIsXplusY = புதிய இலக்கணம்(gb_WhatIsXplusY);

    தொடக்க மற்றும் நிறுத்த கட்டளைகளுக்கான இலக்கணத்தை உருவாக்க டெமோ நிரல் இதேபோன்ற டெம்ப்ளேட்டைப் பயன்படுத்துகிறது:

    தேர்வுகள் ch_StartStopCommands = புதிய தேர்வுகள்(); ch_StartStopCommands.Add("speech on"); ch_StartStopCommands.Add("ஸ்பீச் ஆஃப்"); ch_StartStopCommands.Add("கிளாடு பரடா நிக்டோ"); GrammarBuilder gb_StartStop = புதிய GrammarBuilder(); gb_StartStop.Append(ch_StartStopCommands); இலக்கணம் g_StartStop = புதிய இலக்கணம்(gb_StartStop);

    இலக்கணங்களை மிகவும் நெகிழ்வாக வரையறுக்கலாம். இங்கே "ஸ்பீச் ஆன்", "ஸ்பீச் ஆஃப்" மற்றும் "கிளாடு பரடா நிக்டோ" கட்டளைகள் ஒரு இலக்கணத்தில் வைக்கப்பட்டுள்ளன, ஏனெனில் அவை தர்க்கரீதியாக தொடர்புடையவை. இந்த மூன்று கட்டளைகளையும் மூன்று வெவ்வேறு இலக்கணங்களில் வரையறுக்கலாம் அல்லது "ஸ்பீச் ஆன்" மற்றும் "ஸ்பீச் ஆஃப்" கட்டளைகளை ஒரு இலக்கணத்திலும், "கிளாடு பரடா நிக்டோ" கட்டளையை ஒரு வினாடியிலும் வைக்கலாம்.

    நீங்கள் அனைத்து இலக்கணப் பொருட்களையும் உருவாக்கியதும், அவற்றை பேச்சு அங்கீகாரத்தில் வைத்து, பேச்சு அங்கீகாரம் செயல்படுத்தப்படும்:

    sre.LoadGrammarAsync(g_StartStop); sre.LoadGrammarAsync(g_WhatIsXplusY); sre.RecognizeAsync(RecognizeMode.Multiple);

    RecognizeMode.உங்களிடம் ஒன்றுக்கும் மேற்பட்ட இலக்கணங்கள் இருக்கும்போது பல வாதம் தேவைப்படுகிறது, இது எளிமையான நிரல்களைத் தவிர மற்ற எல்லாவற்றிலும் இருக்கும். முக்கிய முறை பின்வருமாறு முடிக்கப்படுகிறது:

    போது (முடிந்தது == தவறு) (; ) கன்சோல்.WriteLine("\nஹிட்)< enter >ஷெல்லை மூடுவதற்கு\n"); Console.ReadLine(); ) கேட்ச் (விதிவிலக்கு) ( Console.WriteLine(ex.Message); Console.ReadLine(); ) // முதன்மை

    ஒரு வித்தியாசமான தோற்றத்தில் காலியாக இருக்கும் போது லூப் கன்சோல் பயன்பாட்டின் ஷெல்லை இயங்க வைக்க உங்களை அனுமதிக்கிறது. பேச்சு அறிதல் நிகழ்வு ஹேண்ட்லரால் செய்யப்பட்ட வகுப்பு-நிலை பூலியன் மாறி சரி என அமைக்கப்படும் போது லூப் நிறைவடையும்.

    அங்கீகரிக்கப்பட்ட பேச்சு செயலாக்கம்

    பேச்சு அறிதல் நிகழ்வுகளைக் கையாளும் குறியீடு இப்படித் தொடங்குகிறது:

    நிலையான வெற்றிடமான sre_SpeechRecognized(பொருள் அனுப்புநர், SpeechRecognizedEventArgs e) ( string txt = e.Result.Text; float confidence = e.Result.Confidence; Console.WriteLine("\nஅங்கீகரிக்கப்பட்டது: என்றால்);< 0.60) return; ...

    அங்கீகரிக்கப்பட்ட உரையானது, SpeechRecognizedEventArgs பொருளின் Result.Text பண்புகளில் சேமிக்கப்படுகிறது. மாற்றாக, நீங்கள் Result.Words தொகுப்பைப் பயன்படுத்தலாம். Result.Confidence பண்பு 0.0 மற்றும் 1.0 க்கு இடையில் ஒரு மதிப்பைச் சேமிக்கிறது, இது பேசும் உரை அங்கீகாரத்துடன் தொடர்புடைய எந்த இலக்கணத்துடன் எவ்வளவு நன்றாகப் பொருந்துகிறது என்பதற்கான தோராயமான மதிப்பீடாகும். அங்கீகரிக்கப்பட்ட உரையில் குறைந்த நம்பிக்கையுடன் உரையை புறக்கணிக்க டெமோ நிரல் நிகழ்வு கையாளுபவருக்கு அறிவுறுத்துகிறது.

    உங்கள் இலக்கணங்களின் சிக்கலான தன்மை, மைக்ரோஃபோன் தரம் மற்றும் பிற காரணிகளைப் பொறுத்து நம்பிக்கை மதிப்புகள் பெரிதும் மாறுபடும். எடுத்துக்காட்டாக, டெமோ நிரல் 1 முதல் 4 வரையிலான எண்களை மட்டுமே அடையாளம் காண வேண்டும் என்றால், எனது கணினியில் நம்பிக்கை மதிப்புகள் பொதுவாக 0.75 ஆக இருக்கும். ஆனால், இலக்கணம் 1 முதல் 100 வரையிலான எண்களை அடையாளம் காண வேண்டும் என்றால், நம்பிக்கை மதிப்புகள் சுமார் 0.25 ஆக குறையும். சுருக்கமாக, நல்ல பேச்சு அங்கீகார முடிவுகளை அடைய, நீங்கள் பொதுவாக நம்பிக்கை மதிப்புகளை பரிசோதிக்க வேண்டும்.

    if (txt.IndexOf("speech on") >= 0) ( Console.WriteLine("Speech is now on"); speechOn = true; ) if (txt.IndexOf("speech off") >= 0) (கன்சோல் .WriteLine("பேச்சு இப்போது முடக்கப்பட்டுள்ளது"); speechOn = false; ) என்றால் (speechOn == false) திரும்பவும்;

    முதலில் இது முற்றிலும் தெளிவாகத் தெரியவில்லை என்றாலும், நீங்கள் இதைப் பற்றி யோசித்தால் இந்த தர்க்கம் அர்த்தமுள்ளதாக இருக்கும். இரகசிய வெளியேறும் கட்டளை பின்னர் செயலாக்கப்படுகிறது:

    என்றால் (txt.IndexOf("klatu") >= 0 && txt.IndexOf("barada") >= 0) (((SpeechRecognitionEngine)அனுப்புபவர்).RecognizeAsyncCancel(); done = true; Console.WriteLine("(பேசுகிறது: பிரியாவிடை)"); ss.Speak("பிரியாவிடை"); )

    பேச்சு அங்கீகார இயந்திரம் உண்மையில் முட்டாள்தனமான வார்த்தைகளை அடையாளம் காண முடியும் என்பதை நினைவில் கொள்க. ஒரு இலக்கணப் பொருளில் பொருளின் உள்ளமைக்கப்பட்ட அகராதியில் இல்லாத சொற்கள் இருந்தால், இலக்கணமானது அந்த வார்த்தைகளை முடிந்தால் சொற்பொருள் ஹியூரிஸ்டிக்ஸைப் பயன்படுத்தி அடையாளம் காண முயற்சிக்கிறது, மேலும் இது பொதுவாக வெற்றிகரமாக இருக்கும். அதனால்தான் சரியான "கிளாட்டு" என்பதற்குப் பதிலாக "கிளாடு" (பழைய அறிவியல் புனைகதை திரைப்படம்) பயன்படுத்தினேன்.

    இலக்கணத்தால் அங்கீகரிக்கப்பட்ட அனைத்து உரைகளையும் நீங்கள் செயலாக்கத் தேவையில்லை என்பதை நினைவில் கொள்ளவும் (“கிளாடு பரடா நிக்டோ”) - இலக்கண சொற்றொடரை (“கிளாடு” மற்றும் “பரடா”) தனித்துவமாக அடையாளம் காண போதுமான தகவல்கள் உங்களிடம் இருக்க வேண்டும்.

    என்றால் (txt.IndexOf("What") >= 0 && txt.IndexOf("plus") >= 0) ( string words = txt.Split(" "); int num1 = int.Parse(words); int num2 = முழுமை " கூட்டல் " + சொற்கள் + " சமம் " + தொகை );)) // sre_SpeechRecognized ) // நிரல் ) // ns

    முடிவுகள்.உரையில் உள்ள உரை கேஸ் சென்சிட்டிவ் ("என்ன" மற்றும் "என்ன") என்பதை நினைவில் கொள்ளவும். ஒரு சொற்றொடரை அங்கீகரித்த பிறகு, அதை குறிப்பிட்ட சொற்களாக பாகுபடுத்தலாம். இந்த வழக்கில், அங்கீகரிக்கப்பட்ட உரையானது "x பிளஸ் y என்றால் என்ன" வடிவத்தில் உள்ளது, எனவே "என்ன" வார்த்தைகளில் வைக்கப்படுகிறது, மேலும் இரண்டு சேர்க்கப்பட்ட எண்கள் (சரங்களாக) வார்த்தைகளிலும் சொற்களிலும் சேமிக்கப்படும்.

    நூலகங்களை நிறுவுதல்

    டெமோ நிரலின் விளக்கம், தேவையான அனைத்து பேச்சு நூலகங்களும் உங்கள் கணினியில் நிறுவப்பட்டுள்ளன என்று கருதுகிறது. டெமோ புரோகிராம்களை உருவாக்கி இயக்க, நீங்கள் நான்கு தொகுப்புகளை நிறுவ வேண்டும்: SDK (விஷுவல் ஸ்டுடியோவில் டெமோக்களை உருவாக்கும் திறனை வழங்குகிறது), இயக்க நேரம் (டெமோக்களை உருவாக்கிய பிறகு இயக்குகிறது) மற்றும் அங்கீகரிக்கப்பட்ட மற்றும் ஒருங்கிணைக்கப்பட்ட (உச்சரிக்கப்படும்) மொழிகள்.

    SDKஐ நிறுவ, இணையத்தில் “Speech Platform 11 SDK” என்று தேடவும். இது மைக்ரோசாஃப்ட் பதிவிறக்க மையத்தில் உள்ள சரியான பக்கத்திற்கு உங்களை அழைத்துச் செல்லும் ( அரிசி. 4) பதிவிறக்க பொத்தானைக் கிளிக் செய்வதன் மூலம் நீங்கள் காட்டப்பட்டுள்ள விருப்பங்களைக் காண்பீர்கள் அரிசி. 5. SDK 32- மற்றும் 64-பிட் பதிப்புகளில் வருகிறது. உங்கள் கணினியின் பிட் அளவைப் பொருட்படுத்தாமல் 32-பிட் பதிப்பைப் பயன்படுத்த நான் கடுமையாக அறிவுறுத்துகிறேன். 64-பிட் பதிப்பு சில பயன்பாடுகளுடன் வேலை செய்யாது.


    அரிசி. 4. மைக்ரோசாஃப்ட் பதிவிறக்க மையத்தில் முதன்மை SDK நிறுவல் பக்கம்


    அரிசி. 5. பேச்சு SDK ஐ நிறுவவும்

    x86 (32-பிட் அமைப்புகளுக்கு) கீழ் உள்ள ஒரு .msi கோப்பைத் தவிர வேறு எதுவும் உங்களுக்குத் தேவையில்லை. இந்தக் கோப்பைத் தேர்ந்தெடுத்து அடுத்து என்பதைக் கிளிக் செய்வதன் மூலம், நீங்கள் இங்கிருந்து நேரடியாக நிறுவியை இயக்கலாம். நிறுவல் முடிந்ததும் பேச்சு நூலகங்கள் அதிக கருத்துகளை வழங்குவதில்லை, எனவே வெற்றிச் செய்திகள் எதையும் தேட வேண்டாம்.


    அரிசி. 6. இயக்க நேர சூழலை நிறுவுதல்

    SDK போன்ற அதே இயங்குதளப் பதிப்பு (டெமோவில் 11) மற்றும் பிட் டெப்த் (32 அல்லது 64) ஆகியவற்றைத் தேர்ந்தெடுப்பது மிகவும் முக்கியமானது. மீண்டும், நீங்கள் 64-பிட் கணினியில் இயங்கினாலும், 32-பிட் பதிப்பை நான் கடுமையாக பரிந்துரைக்கிறேன்.

    நீங்கள் அங்கீகார மொழியை அமைக்கலாம். பதிவிறக்கப் பக்கம் இங்கு வழங்கப்பட்டுள்ளது அரிசி. 7. டெமோ நிரல் MSSpeech_SR_en-us_TELE.msi (ஆங்கிலம்-U.S.) கோப்பைப் பயன்படுத்துகிறது. SR என்பது பேச்சு அங்கீகாரத்தைக் குறிக்கிறது, மற்றும் TELE என்பது டெலிபோனியைக் குறிக்கிறது; அதாவது, அங்கீகரிக்கப்பட்ட மொழியானது, தொலைபேசி அல்லது டெஸ்க்டாப் மைக்ரோஃபோன் போன்ற குறைந்த தரமான ஆடியோ உள்ளீட்டில் வேலை செய்ய வடிவமைக்கப்பட்டுள்ளது.


    அரிசி. 7. அங்கீகரிக்கப்பட்ட மொழியை அமைத்தல்

    இறுதியாக, நீங்கள் பேச்சு தொகுப்புக்கான மொழியையும் குரலையும் அமைக்கலாம். பதிவிறக்கப் பக்கம் இங்கு வழங்கப்பட்டுள்ளது அரிசி. 8. டெமோ நிரல் MSpeech_TTS_en-us_Helen.msi கோப்பைப் பயன்படுத்துகிறது. TTS (உரை-க்கு-பேச்சு) என்பது பேச்சு தொகுப்புக்கு ஒத்ததாக உள்ளது. கிடைக்கக்கூடிய இரண்டு குரல்கள் ஆங்கிலம், யு.எஸ். மற்ற ஆங்கில குரல்கள் உள்ளன, ஆனால் யு.எஸ். தொகுப்பு மொழி கோப்புகளை உருவாக்குவது மிகவும் கடினமான பணி. இருப்பினும், நீங்கள் பல்வேறு நிறுவனங்களிடமிருந்து பிற குரல்களை வாங்கலாம் மற்றும் நிறுவலாம்.


    அரிசி. 8. குரல் மற்றும் தொகுப்பு மொழியை அமைத்தல்

    சுவாரஸ்யமாக, பேச்சு அறிதல் மொழி மற்றும் குரல்/பேச்சு தொகுப்பு மொழி ஆகியவை முற்றிலும் வேறுபட்ட விஷயங்கள் என்றாலும், இரண்டு தொகுப்புகளும் ஒரே பதிவிறக்கப் பக்கத்தில் உள்ள விருப்பங்கள். பதிவிறக்க மையம் UI ஆனது அங்கீகார மொழி மற்றும் தொகுப்பு மொழி இரண்டையும் சரிபார்க்க உங்களை அனுமதிக்கிறது, ஆனால் அவற்றை ஒரே நேரத்தில் நிறுவ முயற்சிப்பது எனக்கு பேரழிவை ஏற்படுத்தியது, எனவே அவற்றை தனித்தனியாக நிறுவ பரிந்துரைக்கிறேன்.

    Microsoft.Speech உடன் System.Speech உடன் ஒப்பிடுதல்

    விண்டோஸ் பயன்பாடுகளுக்கான பேச்சு அங்கீகாரம் மற்றும் தொகுப்புக்கு நீங்கள் புதியவராக இருந்தால், பல பேச்சு தளங்கள் இருப்பதால் ஆவணப்படுத்தலில் நீங்கள் எளிதாக குழப்பமடையலாம். குறிப்பாக, இந்தக் கட்டுரையில் டெமோ புரோகிராம்கள் பயன்படுத்தும் Microsoft.Speech.dll நூலகத்தைத் தவிர, Windows இயங்குதளத்தின் ஒரு பகுதியாக இருக்கும் System.Speech.dll என்ற நூலகம் உள்ளது. இரண்டு நூலகங்களும் அவற்றின் ஏபிஐகள் கிட்டத்தட்ட ஒரே மாதிரியானவை, ஆனால் முற்றிலும் ஒரே மாதிரியானவை. எனவே, நீங்கள் இணையத்தில் பேச்சு செயலாக்க உதாரணங்களைத் தேடினால், முழுமையான நிரல்களைக் காட்டிலும் குறியீடு துணுக்குகளைப் பார்த்தால், உதாரணம் System.Speech அல்லது Microsoft.Speech என்பது தெளிவாகத் தெரியவில்லை.

    நீங்கள் பேச்சு செயலாக்கத்திற்கு புதியவராக இருந்தால், உங்கள் .NET பயன்பாட்டில் பேச்சு ஆதரவைச் சேர்க்க System.Speech ஐ விட Microsoft.Speech நூலகத்தைப் பயன்படுத்தவும்.

    இரண்டு நூலகங்களும் பொதுவான மையக் குறியீடு தளத்தையும் ஒத்த APIகளையும் பகிர்ந்து கொண்டாலும், அவை நிச்சயமாக வேறுபட்டவை. சில முக்கிய வேறுபாடுகள் சுருக்கப்பட்டுள்ளன மேசை 1.

    மேசை 1. Microsoft.Speech மற்றும் System.Speech ஆகியவற்றுக்கு இடையேயான முக்கிய வேறுபாடுகள்

    System.Speech DLL ஆனது OS இன் ஒரு பகுதியாகும், எனவே இது ஒவ்வொரு Windows கணினியிலும் நிறுவப்பட்டுள்ளது. Microsoft.Speech DLL (மற்றும் அதனுடன் தொடர்புடைய இயக்க நேரம் மற்றும் மொழிகள்) பதிவிறக்கம் செய்யப்பட்டு கணினியில் நிறுவப்பட வேண்டும். System.Speech ஐப் பயன்படுத்தி அறிதல் பொதுவாக ஒரு குறிப்பிட்ட பயனருக்குப் பயிற்சி தேவைப்படுகிறது, பயனர் சில உரைகளைப் படிக்கும்போது, ​​இந்தப் பயனரின் உச்சரிப்புப் பண்புகளைப் புரிந்துகொள்ள கணினி கற்றுக்கொள்கிறது. Microsoft.Spech ஐப் பயன்படுத்தி அங்கீகாரம் எந்தப் பயனருக்கும் உடனடியாகச் செயல்படும். System.Speech கிட்டத்தட்ட எந்த வார்த்தையையும் அடையாளம் காண முடியும் (இது இலவச டிக்டேஷன் என்று அழைக்கப்படுகிறது). நிரலில் வரையறுக்கப்பட்ட இலக்கணப் பொருளில் உள்ள சொற்கள் மற்றும் சொற்றொடர்களை மட்டுமே Microsoft.Speeச் அங்கீகரிக்கும்.

    Windows Forms பயன்பாட்டிற்கு பேச்சு அங்கீகார ஆதரவைச் சேர்த்தல்

    விண்டோஸ் படிவங்கள் அல்லது WPF பயன்பாட்டிற்கு பேச்சு அங்கீகாரம் மற்றும் தொகுப்பு ஆதரவைச் சேர்ப்பதற்கான செயல்முறை கன்சோல் பயன்பாட்டிற்கு ஒத்ததாகும். காட்டப்பட்டுள்ள டெமோ நிரலை உருவாக்க அரிசி. 2, நான் விஷுவல் ஸ்டுடியோவைத் தொடங்கினேன், புதிய C# Windows Forms பயன்பாட்டை உருவாக்கி அதற்கு WinFormSpeech என்று மறுபெயரிட்டேன்.

    டெம்ப்ளேட் குறியீட்டை எடிட்டரில் ஏற்றிய பிறகு, Solution Explorer சாளரத்தில் Microsoft.Speech.dll கோப்பிற்கான இணைப்பைச் சேர்த்துள்ளேன் - நான் கன்சோல் நிரலில் செய்தது போலவே. மூலக் குறியீட்டின் மேலே, நான் தேவையற்ற அறிக்கைகளைப் பயன்படுத்தி நீக்கிவிட்டேன், கணினி, தரவு, வரைதல் மற்றும் படிவங்களின் பெயர்வெளிகள் பற்றிய குறிப்புகளை மட்டுமே விட்டுவிட்டேன். பிறகு Microsoft.Speech.Recognition மற்றும் System.Globalization namespaces ஆகியவற்றுக்கான இரண்டு அறிக்கைகளைப் பயன்படுத்திச் சேர்த்தேன்.

    விண்டோஸ் படிவங்கள் அடிப்படையிலான டெமோ பேச்சு தொகுப்பைப் பயன்படுத்தாது, எனவே நான் Microsoft.Speech.Synthesis நூலகத்துடன் இணைக்கவில்லை. Windows Forms பயன்பாட்டிற்கு பேச்சுத் தொகுப்பைச் சேர்ப்பது கன்சோல் பயன்பாட்டில் உள்ளதைப் போன்றதாகும்.

    வடிவமைப்பு முறையில் விஷுவல் ஸ்டுடியோவில், ஒரு டெக்ஸ்ட்பாக்ஸ், செக்பாக்ஸ் மற்றும் லிஸ்ட்பாக்ஸ் கட்டுப்பாடுகளை படிவத்தில் இழுத்தேன். செக்பாக்ஸை இருமுறை கிளிக் செய்து, விஷுவல் ஸ்டுடியோ தானாகவே ஒரு எலும்புக்கூட்டை சரிபார்த்த நிகழ்வு ஹேண்ட்லர் முறையை உருவாக்கியது.

    டெமோ கன்சோல் நிரல் உடனடியாக பேசும் கட்டளைகளைக் கேட்கத் தொடங்கியது மற்றும் அது நிறுத்தப்படும் வரை அதைத் தொடர்ந்தது என்பதை நினைவில் கொள்க. இந்த அணுகுமுறையை Windows Forms பயன்பாட்டில் பயன்படுத்தலாம், ஆனால் அதற்குப் பதிலாக செக்பாக்ஸ் கட்டுப்பாட்டைப் பயன்படுத்தி (அதாவது ஒரு தேர்வுப்பெட்டி) பேச்சு அங்கீகாரத்தை ஆன் மற்றும் ஆஃப் செய்ய பயனரை அனுமதிக்க முடிவு செய்தேன்.

    டெமோ நிரலின் Form1.cs கோப்பில் உள்ள மூலக் குறியீடு, பகுதி வகுப்பு வரையறுக்கப்பட்ட இடத்தில் காட்டப்பட்டுள்ளது அரிசி. 9. ஒரு பேச்சு அறிதல் இயந்திர பொருள் அறிவிக்கப்பட்டு படிவ உறுப்பினராக உருவாக்கப்படுகிறது. படிவத்தின் கன்ஸ்ட்ரக்டரில், நான் ஸ்பீச் அங்கிகனைஸ்டு நிகழ்வு ஹேண்ட்லரை இணைத்து, பின்னர் இரண்டு இலக்கணப் பொருட்களை உருவாக்கி ஏற்றுகிறேன்:

    பொது படிவம்1() (InitializeComponent(); sre.SetInputToDefaultAudioDevice(); sre.SpeechRecognized += sre_SpeechRecognized; இலக்கணம் g_HelloGoodbye = GetHelloGoodbyeGrammar();Grammar g_oxet. adGrammarAsync(g_HelloGoodby e);sre.LoadGrammarAsync(g_SetTextBox) ; // sre.RecognizeAsync() என்பது செக்பாக்ஸ் நிகழ்வு ஹேண்ட்லரில் // உள்ளது)

    அரிசி. 9. விண்டோஸ் படிவங்களில் பேச்சு அங்கீகார ஆதரவைச் சேர்க்கவும்

    கணினியைப் பயன்படுத்துதல்; System.Data ஐப் பயன்படுத்துதல்; கணினி வரைதல்; System.Windows.Forms ஐப் பயன்படுத்துதல்; Microsoft.Speech.Recognition ஐப் பயன்படுத்துதல்; System.Globalization ஐப் பயன்படுத்துதல்; பெயர்வெளி WinFormSpeech ( பொது பகுதி வகுப்பு படிவம் 1: படிவம் ( நிலையான கலாச்சார தகவல் ci = புதிய கலாச்சார தகவல் ("en-us"); நிலையான பேச்சு அங்கீகார இயந்திரம் sre = புதிய பேச்சு அங்கீகார இயந்திரம் (ci); பொது படிவம் 1() ( InitializeComponent(); sre.DevInputA); .SpeechRecognized += sre_SpeechRecognized; Grammar g_HelloGoodbye = GetHelloGoodbyeGrammar();Grammar g_SetTextBox = GetTextBox1TextGrammar(); sre.LoadGrammarAsync(L_HelloGramytx.); // sre.Recognize Async() என்பது CheckBox நிகழ்வு ஹேண்ட்லரில் // உள்ளது ) நிலையான இலக்கணம் GetHelloGoodbyeGrammar() (தேர்வுகள் ch_HelloGoodbye = புதிய தேர்வுகள்(); ch_HelloGoodbye.Add("hello"); ch_HelloGoodbye.Add("goodbye"); GrammarBuilder gb_result = new GrammarBuilder = grammarBuilder இறுதியில்) g_result gb_result.Append("செட் டெக்ஸ்ட் பாக்ஸ் 1"); gb_result.இணைப்பு(ch_Colors); இலக்கணம் g_result = புதிய இலக்கணம்(gb_result); திரும்ப ஜி_முடிவு; ) தனிப்பட்ட வெற்றிடத்தை சரிபார்க்கவும். void sre_SpeechRecognized(பொருள் அனுப்பியவர், SpeechRecognizedEventArgs e) ( string txt = e.Result.Text; float conf = e.Result.Confidence; என்றால் (conf< 0.65) return; this.Invoke(new MethodInvoker(() =>( listBox1.Items.Add("நீங்கள் சொல்வதை நான் கேட்டேன்: " + txt); ))); // WinForm விவரங்கள் என்றால் (txt.IndexOf("text") >= 0 && txt.IndexOf("box") >= 0 && txt.IndexOf("1")>= 0) ( string words = txt.Split( ""); this.Invoke(புதிய முறைInvoker(() => ( textBox1.Text = words; ))); // WinForm விவரக்குறிப்புகள் ) ) // படிவம் ) // ns

    கன்சோல் புரோகிராம் போல இரண்டு இலக்கண பொருட்களை நேரடியாக உருவாக்கி இருக்க முடியும், ஆனால் அதற்கு பதிலாக, குறியீட்டை கொஞ்சம் தெளிவாக்க, வேலையைச் செய்யும் இரண்டு உதவி முறைகளை (GetHelloGoodbyeGrammar மற்றும் GetTextBox1TextGrammar) வரையறுத்துள்ளேன்.

    நிலையான இலக்கணம் GetTextBox1TextGrammar() ( Choices ch_Colors = புதிய தேர்வுகள்(); ch_Colors.Add(புதிய சரம் ("சிவப்பு", "வெள்ளை", "நீலம்")); GrammarBuilder gb_result = புதிய GrammarBuilder(A textresset(A textresset.); gppendresult. பெட்டி 1"); gb_result. Append(ch_Colors); இலக்கணம் g_result = புதிய இலக்கணம்(gb_result); g_result;

    இந்த உதவி முறை "செட் டெக்ஸ்ட் பாக்ஸ் 1 சிவப்பு" என்ற சொற்றொடரை அங்கீகரிக்கும். இருப்பினும், பயனர் இந்த சொற்றொடரை சரியாக உச்சரிக்க வேண்டிய அவசியமில்லை. எடுத்துக்காட்டாக, "தயவுசெய்து உரைப்பெட்டி 1ல் உள்ள உரையை சிவப்பு நிறமாக அமைக்கவும்" என்று அவர் கூறலாம், மேலும் பேச்சு அறிதல் இயந்திரம் அந்த சொற்றொடரை "செட் டெக்ஸ்ட் பாக்ஸ் 1 ரெட்" என்று அங்கீகரிக்கும் - இலக்கணத்துடன் சரியாகப் பொருந்துவதை விட குறைவான நம்பிக்கை மதிப்பு இருந்தாலும் டெம்ப்ளேட். வேறு வார்த்தைகளில் கூறுவதானால், இலக்கண பொருள்களை உருவாக்கும் போது, ​​ஒரு சொற்றொடரின் அனைத்து மாறுபாடுகளையும் நீங்கள் கணக்கில் எடுத்துக்கொள்ள வேண்டியதில்லை. இது பேச்சு அங்கீகாரத்தைப் பயன்படுத்துவதைத் தீவிரமாக எளிதாக்குகிறது.

    செக்பாக்ஸிற்கான நிகழ்வு ஹேண்ட்லர் பின்வருமாறு வரையறுக்கப்பட்டுள்ளது:

    தனிப்பட்ட வெற்றிடத்தை சரிபார்க்கவும்.

    பேச்சு அறிதல் இயந்திர பொருள், sre (பேச்சு அங்கீகார இயந்திரம்), எப்போதும் விண்டோஸ் படிவங்கள் பயன்பாட்டின் வாழ்நாள் முழுவதும் உள்ளது. பயனர் முறையே செக்பாக்ஸை மாற்றும்போது, ​​RecognizeAsync மற்றும் RecognizeAsyncCancel முறைகளுக்கான அழைப்புகள் மூலம் இந்தப் பொருள் செயல்படுத்தப்பட்டு செயலிழக்கப்படும்.

    பேச்சு அங்கீகரிக்கப்பட்ட நிகழ்வு ஹேண்ட்லர் வரையறை இதனுடன் தொடங்குகிறது:

    void sre_SpeechRecognized(பொருள் அனுப்பியவர், SpeechRecognizedEventArgs e) ( string txt = e.Result.Text; float conf = e.Result.Confidence; என்றால் (conf< 0.65) return; ...

    அதிகமாகவோ அல்லது குறைவாகவோ தொடர்ந்து பயன்படுத்தப்படும் Result.Text மற்றும் Result.Confidence பண்புகள் தவிர, நீங்கள் ஆராய விரும்பும் பல பயனுள்ள ஆனால் மிகவும் சிக்கலான பண்புகளை Result object கொண்டுள்ளது; உதாரணமாக, Homophones மற்றும் ReplacementWordUnits. கூடுதலாக, பேச்சு அறிதல் இயந்திரம் ஸ்பீச் ஹைபோதிசைஸ் போன்ற பல பயனுள்ள நிகழ்வுகளை வழங்குகிறது.

    this.Invoke((Action)(() => listBox1.Items.Add("நீங்கள் சொல்வதை நான் கேட்டேன்: " + txt)));

    கோட்பாட்டில், MethodInvoker பிரதிநிதியைப் பயன்படுத்துவது இந்தச் சூழ்நிலையில் ஒரு செயலை விடச் சற்று அதிக செயல்திறன் கொண்டது, ஏனெனில் MethodInvoker என்பது Windows.Forms பெயர்வெளியின் ஒரு பகுதியாகும், எனவே Windows Forms பயன்பாடுகளுக்குக் குறிப்பிட்டது. அதிரடி பிரதிநிதி மிகவும் பல்துறை திறன் கொண்டவர். பேச்சு அங்கீகார இயந்திரத்தின் மூலம் நீங்கள் விண்டோஸ் படிவங்களை முழுமையாக கையாள முடியும் என்பதை இந்த எடுத்துக்காட்டு காட்டுகிறது - இது நம்பமுடியாத சக்திவாய்ந்த மற்றும் பயனுள்ள அம்சமாகும்.

    முடிவுரை

    நீங்கள் .NET பயன்பாடுகளில் பேச்சுத் தொகுப்பு மற்றும் அங்கீகாரத்தை ஆராய விரும்பினால், இந்தக் கட்டுரையில் வழங்கப்பட்ட தகவல்கள் உடனடியாகத் தொடங்க வேண்டும். ஆரம்ப கற்றல் வளைவு மற்றும் கூறுகளை நிறுவுதல் ஆகியவற்றின் தடைகளை நீங்கள் கடந்தவுடன் தொழில்நுட்பத்தில் தேர்ச்சி பெறுவது ஒரு தென்றலாகும். பேச்சு தொகுப்பு மற்றும் அங்கீகாரத்தில் உண்மையான சவால் அது உண்மையில் பயனுள்ளதாக இருக்கும் போது புரிந்து கொள்ள வேண்டும்.

    கன்சோல் புரோகிராம்கள் மூலம், நீங்கள் சுவாரஸ்யமான முன்னும் பின்னுமாக உரையாடல்களை உருவாக்கலாம், அங்கு பயனர் ஒரு கேள்வியைக் கேட்கிறார் மற்றும் நிரல் பதிலளிக்கிறது, இதன் விளைவாக கோர்டானா போன்ற சூழல் ஏற்படுகிறது. உங்கள் கணினியின் ஸ்பீக்கர்களில் இருந்து பேச்சு வரும்போது, ​​அது மைக்ரோஃபோன் மூலம் எடுக்கப்பட்டு மீண்டும் அங்கீகரிக்கப்படும் என்பதால், நீங்கள் கொஞ்சம் எச்சரிக்கையாக இருக்க வேண்டும். நான் சில அழகான வேடிக்கையான சூழ்நிலைகளில் என்னைக் கண்டேன், அங்கு நான் ஒரு கேள்வியைக் கேட்டேன், பயன்பாடு அதை அடையாளம் கண்டு பதிலளித்தது, ஆனால் பேசும் பதில் அடுத்த அங்கீகார நிகழ்வைத் தூண்டியது, மேலும் வேடிக்கையான, முடிவில்லாத பேச்சு வளையத்துடன் முடித்தேன்.

    கன்சோல் திட்டத்தில் பேச்சின் மற்றொரு சாத்தியமான பயன்பாடானது "நோட்பேடைத் தொடங்கு" மற்றும் "வார்த்தை துவக்கு" போன்ற கட்டளைகளை அங்கீகரிப்பதாகும். வேறு வார்த்தைகளில் கூறுவதானால், அத்தகைய கன்சோல் நிரல் உங்கள் கணினியில் செயல்களைச் செய்ய பயன்படுத்தப்படலாம், இல்லையெனில் விசைப்பலகை மற்றும் மவுஸில் நிறைய கையாளுதல் தேவைப்படும்.

    ஜேம்ஸ் மெக்காஃப்ரி(டாக்டர் ஜேம்ஸ் மெக்காஃப்ரி) வாஷிங்டனில் உள்ள ரெட்மாண்டில் மைக்ரோசாப்ட் ஆராய்ச்சிக்காக வேலை செய்கிறார். இன்டர்நெட் எக்ஸ்புளோரர் மற்றும் பிங் உள்ளிட்ட பல மைக்ரோசாஃப்ட் தயாரிப்புகளை உருவாக்குவதில் அவர் பங்கேற்றார். என்ற முகவரியில் அவரைத் தொடர்பு கொள்ளலாம் [மின்னஞ்சல் பாதுகாக்கப்பட்டது].

    இந்தக் கட்டுரையை மதிப்பாய்வு செய்த மைக்ரோசாஃப்ட் ஆராய்ச்சி நிபுணர்களான ராப் க்ரூன், மார்க் மாரோன் மற்றும் கர்டிஸ் வான் வெஹ் ஆகியோருக்கு நன்றி.