మాస్టర్స్ ప్రోగ్రామ్లోని విద్యార్థులు పాల్గొన్న స్ప్రింగ్ హ్యాకథాన్ దేవ్డేస్ ప్రాజెక్ట్ల గురించి మేము మాట్లాడటం కొనసాగిస్తున్నాము
మార్గం ద్వారా, మేము చేరడానికి పాఠకులను ఆహ్వానించాలనుకుంటున్నాము
టెలిగ్రామ్ డెస్క్టాప్ వాయిస్ మెసేజ్ పార్సర్
ఆలోచన యొక్క రచయిత
ఖోరోషెవ్ ఆర్టియోమ్
కమాండ్ నిర్మాణం
ఖోరోషెవ్ ఆర్టెమ్ - ప్రాజెక్ట్ మేనేజర్/డెవలపర్/QA
ఎలిసెవ్ అంటోన్ - వ్యాపార విశ్లేషకుడు/మార్కెటింగ్ నిపుణుడు
మరియా కుక్లినా - UI డిజైనర్/డెవలపర్
బఖ్వలోవ్ పావెల్ - UI డిజైనర్/డెవలపర్/QA
మా దృక్కోణం నుండి, టెలిగ్రామ్ ఒక ఆధునిక మరియు అనుకూలమైన మెసెంజర్, మరియు దాని PC వెర్షన్ ప్రజాదరణ మరియు ఓపెన్ సోర్స్, ఇది దానిని సవరించడం సాధ్యం చేస్తుంది. క్లయింట్ చాలా గొప్ప కార్యాచరణను అందిస్తుంది. ప్రామాణిక వచన సందేశాలతో పాటు, ఇది వాయిస్ కాల్లు, వీడియో సందేశాలు మరియు వాయిస్ సందేశాలను కలిగి ఉంటుంది. మరియు ఇది కొన్నిసార్లు వారి గ్రహీతకు అసౌకర్యాన్ని కలిగించే రెండోది. కంప్యూటర్ లేదా ల్యాప్టాప్లో ఉన్నప్పుడు వాయిస్ సందేశాన్ని వినడం తరచుగా సాధ్యం కాదు. పరిసర శబ్దం, హెడ్ఫోన్లు లేకపోవడం లేదా సందేశంలోని విషయాలను ఎవరూ వినకూడదని మీరు కోరుకోవచ్చు. మీరు స్మార్ట్ఫోన్లో టెలిగ్రామ్ని ఉపయోగిస్తే ఇటువంటి సమస్యలు దాదాపు ఎప్పుడూ తలెత్తవు, ఎందుకంటే మీరు ల్యాప్టాప్ లేదా పిసిలా కాకుండా దానిని మీ చెవికి తీసుకురావచ్చు. మేము ఈ సమస్యను పరిష్కరించడానికి ప్రయత్నించాము.
DevDays వద్ద మా ప్రాజెక్ట్ యొక్క లక్ష్యం టెలిగ్రామ్ డెస్క్టాప్ క్లయింట్కు స్వీకరించబడిన వాయిస్ సందేశాలను టెక్స్ట్గా అనువదించే సామర్థ్యాన్ని జోడించడం (ఇకపై టెలిగ్రామ్ డెస్క్టాప్గా సూచించబడుతుంది).
ప్రస్తుతం ఉన్న అన్ని అనలాగ్లు బాట్లు, వీటికి మీరు ఆడియో సందేశాన్ని పంపవచ్చు మరియు ప్రతిస్పందనగా వచనాన్ని స్వీకరించవచ్చు. మేము దీనితో చాలా సంతోషంగా లేము: సందేశాన్ని బోట్కు ఫార్వార్డ్ చేయడం చాలా సౌకర్యవంతంగా లేదు; మేము స్థానిక కార్యాచరణను కలిగి ఉండాలనుకుంటున్నాము. అదనంగా, ఏదైనా బోట్ అనేది స్పీచ్ రికగ్నిషన్ API మరియు వినియోగదారు మధ్య మధ్యవర్తిగా పనిచేసే మూడవ పక్షం మరియు ఇది కనీసం సురక్షితం కాదు.
ముందుగా గుర్తించినట్లుగా, టెలిగ్రామ్-డెస్క్టాప్కు రెండు ముఖ్యమైన ప్రయోజనాలు ఉన్నాయి: సౌలభ్యం మరియు ఆపరేషన్ వేగం. మరియు ఇది యాదృచ్చికం కాదు, ఎందుకంటే ఇది పూర్తిగా C++లో వ్రాయబడింది. మరియు మేము నేరుగా క్లయింట్కు కొత్త కార్యాచరణను జోడించాలని నిర్ణయించుకున్నందున, మేము దానిని C++లో అభివృద్ధి చేయాల్సి వచ్చింది.
మా బృందంలో 4 మంది ఉన్నారు. ప్రారంభంలో, ఇద్దరు వ్యక్తులు ప్రసంగ గుర్తింపు కోసం తగిన లైబ్రరీ కోసం వెతుకుతున్నారు, ఒకరు టెలిగ్రామ్-డెస్క్టాప్ యొక్క సోర్స్ కోడ్ను అధ్యయనం చేస్తున్నారు, మరొకరు బిల్డ్ ప్రాజెక్ట్ను అమలు చేస్తున్నారు
ఉద్దేశించిన కార్యాచరణను అమలు చేయడం కష్టం కాదని అనిపించింది, కానీ, ఎప్పటిలాగే, ఇబ్బందులు తలెత్తాయి.
సమస్యకు పరిష్కారం రెండు స్వతంత్ర సబ్టాస్క్లను కలిగి ఉంది: తగిన ప్రసంగ గుర్తింపు సాధనాన్ని ఎంచుకోవడం మరియు కొత్త కార్యాచరణ కోసం UIని అమలు చేయడం.
వాయిస్ రికగ్నిషన్ కోసం లైబ్రరీని ఎంచుకున్నప్పుడు, మేము వెంటనే అన్ని ఆఫ్లైన్ APIలను వదిలివేయవలసి ఉంటుంది, ఎందుకంటే భాషా నమూనాలు చాలా స్థలాన్ని తీసుకుంటాయి. కానీ మనం ఒక్క భాష గురించి మాత్రమే మాట్లాడుతున్నాం. మేము ఆన్లైన్ APIని ఉపయోగించాల్సి ఉంటుందని స్పష్టమైంది. గూగుల్, యాండెక్స్ మరియు మైక్రోసాఫ్ట్ వంటి దిగ్గజాల స్పీచ్ రికగ్నిషన్ సేవలు అస్సలు ఉచితం కాదని తరువాత తేలింది మరియు మేము ట్రయల్ పీరియడ్తో సంతృప్తి చెందవలసి ఉంటుంది. ఫలితంగా, Google స్పీచ్-టు-టెక్స్ట్ ఎంపిక చేయబడింది ఎందుకంటే ఇది సేవను ఉపయోగించడం కోసం టోకెన్ను పొందడానికి మిమ్మల్ని అనుమతిస్తుంది, ఇది మొత్తం సంవత్సరం పాటు కొనసాగుతుంది.
మేము ఎదుర్కొన్న రెండవ సమస్య C++ యొక్క కొన్ని లోపాలకు సంబంధించినది - కేంద్రీకృత రిపోజిటరీ లేనప్పుడు వివిధ లైబ్రరీల జూ. టెలిగ్రామ్ డెస్క్టాప్ అనేక ఇతర వెర్షన్-నిర్దిష్ట లైబ్రరీలపై ఆధారపడి ఉంటుంది. అధికారిక రిపోజిటరీ ఉంది
టెలిగ్రామ్ డెస్క్టాప్ సమీకరించడానికి చాలా సమయం పడుతుంది: ఇంటెల్ కోర్ i5-7200U ఉన్న ల్యాప్టాప్లో, అన్ని డిపెండెన్సీలతో కూడిన పూర్తి అసెంబ్లీ (ఫ్లాగ్ -j 4) సుమారు మూడు గంటలు పడుతుంది. వీటిలో, క్లయింట్ను లింక్ చేయడం ద్వారా దాదాపు 30 నిమిషాలు తీసుకోబడతాయి (డీబగ్ కాన్ఫిగరేషన్లో, లింక్ చేయడానికి దాదాపు 10 నిమిషాలు పడుతుందని తర్వాత తేలింది), కానీ మార్పులు చేసిన తర్వాత ప్రతిసారీ లింకింగ్ దశను పునరావృతం చేయాలి.
సమస్యలు ఉన్నప్పటికీ, మేము ఊహించిన ఆలోచనను అమలు చేయగలిగాము, అలాగే నవీకరణ
మా అభిప్రాయం ప్రకారం, ఇది చాలా మంది వినియోగదారులకు అనుకూలమైన కార్యాచరణ యొక్క భావన యొక్క మంచి రుజువుగా మారింది. టెలిగ్రామ్ డెస్క్టాప్ యొక్క భవిష్యత్తు విడుదలలలో దీనిని చూడాలని మేము ఆశిస్తున్నాము.
IntelliJ IDEAలో మెరుగైన సహజ భాషా మద్దతు
ఆలోచన యొక్క రచయిత
టాంకోవ్ వ్లాడిస్లావ్
కమాండ్ నిర్మాణం
టాంకోవ్ వ్లాడిస్లావ్ (టీమ్ లీడ్, లాంగ్వేజ్ టూల్ మరియు ఇంటెల్లిజే ఐడియాతో కలిసి పని చేస్తున్నారు)
నికితా సోకోలోవ్ (LanguageToolతో పని చేయడం మరియు UIని సృష్టించడం)
ఖ్వోరోవ్ అలెగ్జాండర్ (LanguageToolతో పని చేయడం మరియు పనితీరును ఆప్టిమైజ్ చేయడం)
సడోవ్నికోవ్ అలెగ్జాండర్ (మార్కప్ భాషలు మరియు కోడ్ను అన్వయించడానికి మద్దతు)
వ్యాకరణ, స్పెల్లింగ్ మరియు స్టైలిస్టిక్ ఖచ్చితత్వం (ఇంగ్లీష్లో దీనిని ప్రూఫ్ రీడింగ్ అంటారు) కోసం వివిధ టెక్స్ట్లను (వ్యాఖ్యలు మరియు డాక్యుమెంటేషన్, కోడ్లోని లిటరల్ లైన్లు, మార్క్డౌన్ లేదా XML మార్కప్లో ఫార్మాట్ చేయబడిన టెక్స్ట్) తనిఖీ చేసే IntelliJ IDEA కోసం మేము ప్లగిన్ను అభివృద్ధి చేసాము.
IDE లోపల ఒక రకమైన గ్రామర్లీని చేయడానికి, ప్రామాణిక స్పెల్చెక్ IntelliJ IDEAని గ్రామర్లీ స్థాయికి విస్తరించడం ప్రాజెక్ట్ యొక్క ఆలోచన.
ఏమి జరిగిందో మీరు చూడవచ్చు
బాగా, క్రింద మేము ప్లగ్ఇన్ యొక్క సామర్థ్యాల గురించి, అలాగే దాని సృష్టి సమయంలో తలెత్తిన ఇబ్బందుల గురించి మరింత వివరంగా మాట్లాడుతాము.
ప్రేరణ
సహజ భాషలలో వచనాన్ని వ్రాయడానికి అనేక ఉత్పత్తులు రూపొందించబడ్డాయి, అయితే డాక్యుమెంటేషన్ మరియు కోడ్ వ్యాఖ్యలు చాలా తరచుగా అభివృద్ధి పరిసరాలలో వ్రాయబడతాయి. అదే సమయంలో, IDEలు కోడ్లో లోపాలను కనుగొనడంలో అద్భుతమైన పనిని చేస్తాయి, కానీ సహజ భాషలలోని టెక్స్ట్లకు సరిగ్గా సరిపోవు. అభివృద్ధి వాతావరణం వాటిని ఎత్తి చూపకుండా వ్యాకరణం, విరామచిహ్నాలు లేదా శైలిలో తప్పులు చేయడం చాలా సులభం చేస్తుంది. వినియోగదారు ఇంటర్ఫేస్ను వ్రాయడంలో పొరపాటు చేయడం చాలా క్లిష్టమైనది, ఎందుకంటే ఇది కోడ్ యొక్క అవగాహనను మాత్రమే కాకుండా, అభివృద్ధి చెందిన అప్లికేషన్ యొక్క వినియోగదారులను కూడా ప్రభావితం చేస్తుంది.
IntelliJ IDEA, అలాగే IntelliJ ప్లాట్ఫారమ్ ఆధారంగా IDEలు అత్యంత ప్రజాదరణ పొందిన మరియు అభివృద్ధి చెందిన అభివృద్ధి వాతావరణాలలో ఒకటి. IntelliJ ప్లాట్ఫారమ్ ఇప్పటికే అంతర్నిర్మిత స్పెల్ చెకర్ని కలిగి ఉంది, అయితే ఇది సరళమైన వ్యాకరణ దోషాలను కూడా తొలగించదు. మేము జనాదరణ పొందిన సహజ భాషా విశ్లేషణ వ్యవస్థలలో ఒకదానిని IntelliJ IDEAలో ఏకీకృతం చేయాలని నిర్ణయించుకున్నాము.
అమలు
మేము మా స్వంత వచన ధృవీకరణ వ్యవస్థను సృష్టించే పనిని సెట్ చేసుకోలేదు, కాబట్టి మేము ఇప్పటికే ఉన్న పరిష్కారాన్ని ఉపయోగించాము. అత్యంత అనుకూలమైన ఎంపిక తేలింది
ప్లగ్ఇన్ కోడ్ ఉంది
కష్టాలు
మేము ప్రతిసారీ తనిఖీ కోసం మొత్తం టెక్స్ట్ను LanguageToolకి ఫీడ్ చేస్తే, IDEA ఇంటర్ఫేస్ ఏదైనా ఎక్కువ లేదా తక్కువ తీవ్రమైన టెక్స్ట్పై స్తంభింపజేస్తుందని మేము చాలా త్వరగా గ్రహించాము, ఎందుకంటే తనిఖీ UI ప్రవాహాన్ని అడ్డుకుంటుంది. సమస్య `ProgressManager.checkCancelled` చెక్ ద్వారా పరిష్కరించబడింది - IDEA తనిఖీని నిలిపివేయడానికి ఇది సమయం అని విశ్వసిస్తే ఈ ఫంక్షన్ మినహాయింపును అందిస్తుంది.
ఇది పూర్తిగా ఫ్రీజ్లను తొలగించింది, కానీ ఉపయోగించడం అసాధ్యం: టెక్స్ట్ ప్రాసెస్ చేయడానికి చాలా సమయం పడుతుంది. అంతేకాకుండా, మా విషయంలో, చాలా తరచుగా టెక్స్ట్ యొక్క చాలా చిన్న భాగం మారుతుంది మరియు మేము ఫలితాలను ఎలాగైనా కాష్ చేయాలనుకుంటున్నాము. మేము సరిగ్గా అదే చేసాము. ప్రతిసారీ ప్రతిదీ తనిఖీ చేయకుండా ఉండటానికి, మేము నిర్ణయాత్మకంగా వచనాన్ని ముక్కలుగా విభజించి, మారిన వాటిని మాత్రమే తనిఖీ చేస్తాము. టెక్స్ట్లు పెద్దవిగా ఉంటాయి మరియు మేము కాష్ని లోడ్ చేయకూడదనుకుంటున్నందున, మేము టెక్స్ట్లను కాకుండా వాటి హ్యాష్లను నిల్వ చేసాము. ఇది పెద్ద ఫైల్లలో కూడా ప్లగ్ఇన్ సజావుగా పనిచేయడానికి అనుమతించింది.
LanguageTool 25 కంటే ఎక్కువ భాషలకు మద్దతిస్తుంది, అయితే ఏ ఒక్క వినియోగదారుకైనా అవన్నీ అవసరమయ్యే అవకాశం లేదు. నేను అభ్యర్థనపై నిర్దిష్ట భాష కోసం లైబ్రరీలను డౌన్లోడ్ చేసుకునే అవకాశాన్ని ఇవ్వాలనుకుంటున్నాను (మీరు దానిని UIలో టిక్ చేస్తే). మేము దీన్ని కూడా అమలు చేసాము, కానీ ఇది చాలా క్లిష్టంగా మరియు నమ్మదగనిదిగా మారింది. ప్రత్యేకించి, మేము ప్రత్యేక క్లాస్లోడర్ని ఉపయోగించి కొత్త భాషల సెట్తో LanguageToolని లోడ్ చేయాలి, ఆపై దానిని జాగ్రత్తగా ప్రారంభించాలి. అదే సమయంలో, అన్ని లైబ్రరీలు వినియోగదారు .m2 రిపోజిటరీలో ఉన్నాయి మరియు ప్రతి ప్రారంభంలో మేము వాటి సమగ్రతను తనిఖీ చేయాలి. చివరికి, ప్లగ్ఇన్ పరిమాణంలో వినియోగదారులకు సమస్యలు ఉంటే, మేము చాలా జనాదరణ పొందిన భాషల కోసం ప్రత్యేక ప్లగ్ఇన్ను అందించాలని మేము నిర్ణయించుకున్నాము.
హ్యాకథాన్ తర్వాత
హ్యాకథాన్ ముగిసింది, కానీ ప్లగ్ఇన్పై పని ఇరుకైన బృందంతో కొనసాగింది. నేను స్ట్రింగ్లు, కామెంట్లు మరియు వేరియబుల్ మరియు క్లాస్ పేర్ల వంటి భాషా నిర్మాణాలకు కూడా మద్దతు ఇవ్వాలనుకుంటున్నాను. ప్రస్తుతం ఇది జావా, కోట్లిన్ మరియు పైథాన్లకు మాత్రమే మద్దతు ఇస్తుంది, అయితే ఈ జాబితా పెరుగుతుందని మేము ఆశిస్తున్నాము. మేము చాలా చిన్న బగ్లను పరిష్కరించాము మరియు Idea యొక్క అంతర్నిర్మిత స్పెల్ చెకర్తో మరింత అనుకూలతను కలిగి ఉన్నాము. అదనంగా, XML మద్దతు మరియు స్పెల్ చెకింగ్ కనిపించాయి. ఇవన్నీ మేము ఇటీవల ప్రచురించిన రెండవ సంస్కరణలో చూడవచ్చు.
తరువాత ఏమిటి?
ఇటువంటి ప్లగ్ఇన్ డెవలపర్లకు మాత్రమే కాకుండా, సాంకేతిక రచయితలకు కూడా ఉపయోగపడుతుంది (తరచుగా పని చేస్తుంది, ఉదాహరణకు, IDEలో XMLతో). సాధ్యమయ్యే లోపాల గురించి ఎడిటర్ చిట్కాల రూపంలో సహాయకుడు లేకుండా ప్రతిరోజూ వారు సహజ భాషతో పని చేయాలి. మా ప్లగ్ఇన్ అటువంటి సూచనలను అందిస్తుంది మరియు అధిక స్థాయి ఖచ్చితత్వంతో చేస్తుంది.
మేము కొత్త భాషలను జోడించడం ద్వారా మరియు టెక్స్ట్ తనిఖీని నిర్వహించడానికి సాధారణ విధానాన్ని అన్వేషించడం ద్వారా ప్లగ్ఇన్ను అభివృద్ధి చేయాలని ప్లాన్ చేస్తున్నాము. మా తక్షణ ప్రణాళికలలో స్టైలిస్టిక్ ప్రొఫైల్ల అమలు (టెక్స్ట్ కోసం స్టైల్ గైడ్ను నిర్వచించే నియమాల సెట్లు, ఉదాహరణకు, “ఉదాహరణకు వ్రాయవద్దు, కానీ పూర్తి రూపాన్ని వ్రాయండి”), నిఘంటువును విస్తరించడం మరియు వినియోగదారు ఇంటర్ఫేస్ను మెరుగుపరచడం (ముఖ్యంగా, మేము వినియోగదారుకు ఒక పదాన్ని విస్మరించడమే కాకుండా, ప్రసంగంలోని భాగాన్ని సూచిస్తూ నిఘంటువులోకి జోడించే అవకాశాన్ని అందించాలనుకుంటున్నాము).
మూలం: www.habr.com