

भाग 1भाग २भाग ३चौथे भाग में, जैसा कि वादा किया गया है, हम एक आवाज मंच के रूप में
तार की सीमाओं और नुकसान पर विचार करेंगे और
VoiceNavigator के साथ इसकी बातचीत की
विशेषताएं ।
वॉइस प्लेटफ़ॉर्म एक हार्डवेयर-सॉफ़्टवेयर कॉम्प्लेक्स है जिसमें स्पीच सिंथेसिस और रिकग्निशन फ़ंक्शंस हैं, जिससे आप कॉन्टैक्ट सेंटर को ऑप्टिमाइज़ करने, कस्टमर सर्विस को बेहतर बनाने और वॉयस सेल्फ-सर्विस सिस्टम बनाने के उद्देश्य से सॉल्यूशंस बना सकते हैं।
तारांकन एक शुद्ध आवाज मंच नहीं है, जैसा कि संश्लेषण और मान्यता सर्वर के साथ काम करना इसका मुख्य कार्य नहीं है और इसे
यूएनएमआरसीपी के माध्यम से कार्यान्वित किया जाता है। इसलिए, कमियों और सीमाओं का हिस्सा UniMRCP में कार्य के कार्यान्वयन से जुड़ा हुआ है।
जीएचएस के निर्माण के लिए कॉल सेंटरों में उपयोग किए जाने वाले बड़े और प्रसिद्ध वॉयस प्लेटफार्मों में से, यह ध्यान देने योग्य है कि एवाया वॉयस पोर्टल, जेनेसिस वॉयस प्लेटफॉर्म, सीमेंस ओपनस्केप सीसीवीपी, सिस्को यूनिफाइड सीसीएक्स, वोक्सियो, वॉक्सपायलट।
RuNet में बहुत अधिक जानकारी नहीं है, साथ ही साथ इन उत्पादों के विशेषज्ञों में उपयुक्त स्तर की क्षमता भी है। बड़े कॉल सेंटर में उपयोग किया जाता है, लागत उपयुक्त है, और यह केवल बड़ी कंपनियों के लिए उपलब्ध है।
यदि किसी भी प्लेटफ़ॉर्म में रुचि है, तो मैं उनके बारे में अलग से लिखने के लिए तैयार हूं।
Asterisk + UniMRCP में मौजूद दो मुख्य कमियां वॉयसएक्सएमएल समर्थन की कमी और भाषण संश्लेषण के लिए टूटे हुए बजरा में हैं।
VoiceXML समर्थन की कमी
वॉयस एप्लिकेशन बनाने का उद्योग मानक
VoiceXML का उपयोग है, जो UniMRCP और Asterisk द्वारा समर्थित नहीं है।
VoiceXML (वॉयस एक्स्टेंसिबल मार्कअप लैंग्वेज) एक भाषा है जिसे ऑडियो डायलॉग को स्क्रिप्ट करने के लिए डिज़ाइन किया गया है, जो भाषण को संश्लेषित कर सकता है, आवाज को डिजिटल कर सकता है, DTMF, SGRS व्याकरण को पहचान सकता है।
VXML HTML की तरह है। VoiceXML पृष्ठ में वह पाठ हो सकता है जो होना चाहिए
एक संश्लेषित आवाज, पूर्व-रिकॉर्ड की गई ध्वनि फ़ाइलों के साथ-साथ रूपों द्वारा आवाज दी जाए,
भाषण की जानकारी को देखने और पहचानने की अनुमति। बोलने पर निर्भर करता है
एक कमांड या DTMF इनपुट के उपयोगकर्ता द्वारा, अन्य VoiceXML पृष्ठों के लिए एक संक्रमण हो सकता है।VXML वह है जो सभी वॉयस प्लेटफार्मों पर उपयोग किया जाता है और अनुप्रयोगों के निर्माण की सुविधा प्रदान करता है।
यहां एक उदाहरण एप्लिकेशन है जो शून्य से दस तक की संख्या पूछता है और नामांकित संख्या को दोहराता है। तारांकन और तुलना में समान करने का प्रयास करें)
<? xml संस्करण = "1.0" एन्कोडिंग = "UTF-8"?>
<vxml संस्करण = "2.0" xmlns = "http://www.w3.org/2001/vxml" xml: lang = "ru-RU">
<form id = "अंक">
<संपत्ति का नाम = "बार्गेन" मान = "झूठा" />
<फ़ील्ड का नाम = "अंक फ़ील्ड">
<प्रॉम्प्ट बार्गेन = "गलत"> कृपया शून्य से दस तक की संख्या का नाम दें। </ शीघ्र>
<noinput> आपने कोई नंबर नहीं दिया है। कृपया शून्य से दस तक की संख्या को नाम दें। </ noinput>
<nomatch> क्षमा करें, हम उक्त संख्या को पहचान नहीं सकते, कृपया दोहराएं। </ nomatch>
<व्याकरण प्रकार = "अनुप्रयोग / srgs + xml" संस्करण = "1.0" मोड = "आवाज" रूट = "बूलियन" xml: lang = "ru-RU">
<रूल आईडी = "बूलियन" स्कोप = "पब्लिक">
<एक-के>
<आइटम> शून्य </ आइटम>
<आइटम> एक </ आइटम>
<आइटम> दो </ आइटम>
<आइटम> तीन </ आइटम>
<आइटम> चार </ आइटम>
<आइटम> पांच </ आइटम>
<आइटम> छह </ आइटम>
<आइटम> सात </ आइटम>
<आइटम> आठ </ आइटम>
<आइटम> नौ </ आइटम>
<आइटम> दस </ आइटम>
<आइटम> <ruleref विशेष = "GARBAGE" /> </ आइटम>
</ एक-के>
</ नियम>
</ व्याकरण>
<भरा>
<प्रॉम्प्ट> आपने नंबर का नाम <value expr = "digitfield" /> </ prompt> रखा
<गोटो अगला = "# अंक" />
</ भरा>
</ फील्ड>
</ फार्म>
</ Vxml>
तारांकन के लिए
i6net से
VXI * परियोजना है। यह VoiceXML ब्राउज़र है -
OpenXXI पर आधारित Asterisk के लिए VoiceXML दुभाषिया।
उसे काम करने के मेरे प्रयास असफल रहे। मान्यता के लिए, UniMRCP का उपयोग कुछ प्रकार के मूल HTTP-TTS कनेक्टर के संश्लेषण के लिए किया जाता है, जो किसी विशिष्ट इंजन के लिए विकसित किया जाता है।
इसके अलावा, उत्पाद का
भुगतान किया जाता है ।
अगर किसी के पास VXI * या OpenVXI के साथ अनुभव है, तो मुझे आपकी टिप्पणियों के लिए बहुत खुशी होगी।
संश्लेषण के लिए कोई बजरा नहीं है
पिछले लेखों में, मैंने एमआरसीपीआरकॉग फ़ंक्शन के बार-इन और
एफ पैरामीटर के बारे में बात की थी। इस पैरामीटर के रूप में, आप एक साउंड फ़ाइल को ट्रांसफर कर सकते हैं जिसे ग्रीटिंग के रूप में चलाया जाएगा। यदि
b = 1 भी उसी समय सेट किया जाता है, तो भाषण की शुरुआत में फ़ाइल की ध्वनि बाधित हो जाएगी और मान्यता सत्र शुरू हो जाएगा।
आवाज अनुप्रयोगों के निर्माण के लिए बजरे-इन के लिए समर्थन आवश्यक है। उदाहरण के लिए, लंबे संदेश के मामले में या जब ग्राहक एक से अधिक बार कॉल करता है और सिस्टम संदेशों को जानता है, तो आपको उसे संदेश को सुनने के लिए बाध्य करने की आवश्यकता नहीं है। वैसे भी, हम दूसरों को बाधित करना पसंद करते हैं, खासकर एक रोबोट))
MRCPSynth बैज-इन का समर्थन नहीं करता है। यानी एक गतिशील रूप से उत्पन्न संदेश, उदाहरण के लिए, पिछले ग्राहक विकल्प के लिए एक सिस्टम प्रतिक्रिया, बाधित नहीं किया जा सकता है।
DTMF द्वारा संश्लेषण को बाधित किया जा सकता है, लेकिन इस मामले में यह कोई समाधान नहीं है।
जैसा कि मैं इसे देखता हूं, यूएनएमआरसीपी में चयनित कार्यान्वयन के साथ, जब संश्लेषण और मान्यता अलग-अलग सत्रों द्वारा शुरू की जाती है, तो संश्लेषण के लिए बजरा-इन की उपस्थिति पूरी तरह से समस्या का समाधान नहीं करेगी। यहां तक कि अगर आप मान्यता सत्र के बाद की शुरुआत के लिए अपनी आवाज के साथ संश्लेषण को बाधित करते हैं, जो संश्लेषण के बाद आता है, तो इसमें समय लगेगा। और इस समय, सब्सक्राइबर द्वारा बोले गए वाक्यांश के एक सेकंड के पहले अंश नहीं गिरेंगे, जो मान्यता की गुणवत्ता को नीचा दिखा सकता है। वॉइसएक्सएमएल में ऐसी कोई समस्या नहीं है, पूर्व-रिकॉर्ड किए गए वाक्यांशों और संश्लेषण दोनों के लिए बजरा-इन काम करता है। मान्यता सत्र संश्लेषण सत्र के साथ, या उससे भी पहले से शुरू होता है, और आवाज मंच एमआरसीपी सर्वर को ध्वनि डेटा प्राप्त करने और संचारित करने के लिए तैयार है (ऊपर उदाहरण देखें)।
पिछले अनुप्रयोग में, बस
बार्जिन = "असत्य" को
बैजिन = "सही" में बदलें ताकि संश्लेषित भाषण बाधित हो सके।
एक तरह से इस दोष के बारे में जानने के लिए थोड़ा सा और ट्रिजे बरगेट
इस खामी के आसपास पहुंचने का मुख्य तरीका संश्लेषण की मात्रा को कम करना है, और जहां स्थिर वाक्यांशों का उपयोग किया जाता है, विशेष रूप से वाक्यांश के अंत में पूर्व-दर्ज फ़ाइलों का उपयोग करने का प्रयास करें।
क्योंकि लोग अक्सर वाक्यांश को सुनने के बिना बोलना शुरू करते हैं, फिर वाक्यांश का निर्माण किया जाना चाहिए ताकि अंतिम भाग पहले से रिकॉर्ड किया जा सके और बाधित हो सके। भले ही यह एक शब्द होगा।
उदाहरण के लिए, यदि हम किसी व्यक्ति द्वारा बोली जाने वाली वाक्यांश को स्पष्ट करते हैं (उद्धरण चिह्नों में मूल्य पिछले चरण में पहचाना गया वाक्यांश है)।
- आपने कहा "बिक्री विभाग"? (संश्लेषण)
- क्या यह सही है? (रिकॉर्ड किया गया वाक्यांश)- आपने "खाता संचालन" (संश्लेषण) चुना है।
- पुष्टि करें (रिकॉर्ड किया गया वाक्यांश)आवेदन का एक उदाहरण किराया और बिंदु ए से बिंदु बी तक रिपोर्ट करता है। एक पूर्व दर्ज की गई फ़ाइल का उपयोग करें। हम पूछते हैं: प्रस्थान का शहर कहें।
exten => app, n (level1), MRCPRecog ($ {GRAMMARS_PATH} /towns.xml,ct=0.1&b=1&f = $ {SND_PATH} / Level1)
exten => app, n, SET (RECOG_HYP_NUM = 0)
exten => app, n, SET (RECOG_UTR0 = त्रुटि)
exten => app, n, AGI ($ {AGI_PATH} /NLSML.agi, $ {QUOTE ($ {RECOG_RESULT})})
; यदि शहर को मान्यता नहीं है, तो error_start प्राथमिकता पर जाएं, अन्यथा check_start पर जाएं
exten => app, n, GotoIf ($ ["$ {RECOG_UTR0}" = "त्रुटि"]? error_start: check_start)
, एजीआई स्क्रिप्ट चलाएं, जहां हम शहर की जांच करते हैं, कुछ पर विचार करते हैं, आदि।
exten => app, n (check_start), AGI ($ {AGI_PATH} /check_start.agi)
; वाक्यांश का पहला भाग मान्यता के परिणाम के साथ संश्लेषण का उपयोग करता है
exten => app, n, MRCPSynth (<? xml version = \ "1.0 \"?> <बोलने वाला संस्करण = \ "1.0 \" xml: lang = \ "ru-ru \" xmlns = \ "http: // www] .w3.org / 2001/10 / सिंथेसिस \ "> <आवाज का नाम = \" मारिया8000 \ "> <p> आपने $ {Start_Town} चुना है। </ p> </ आवाज> </ बोल>)।
; दूसरे भाग में - एक पूर्व-दर्ज फ़ाइल: गंतव्य क्या है
exten => app, n (level2), MRCPRecog ($ {GRAMMARS_PATH} /towns.xml,ct=0.1&b=1&f = $ {SND_PATH} / Level2)
exten => app, n, SET (RECOG_HYP_NUM = 0)
exten => app, n, SET (RECOG_UTR0 = त्रुटि)
exten => app, n, AGI ($ {AGI_PATH} /NLSML.agi, $ {QUOTE ($ {RECOG_RESULT})})
; यदि शहर की मान्यता नहीं है, तो error_finish प्राथमिकता पर जाएं, अन्यथा check_finish पर जाएं
exten => app, n, GotoIf ($ ["$ {RECOG_UTR0}" = "त्रुटि"]? error_start: check_finish)
, एजीआई स्क्रिप्ट चलाएं, जहां हम शहर की जांच करते हैं, किराया पर विचार करें
exten => app, n (check_finish), AGI ($ {AGI_PATH} / check_finish.agi)
; हम गणना के परिणामों की रिपोर्ट करते हैं
exten => app, n, MRCPSynth (<? xml version = \ "1.0 \"?> <बोलने वाला संस्करण = \ "1.0 \" xml: lang = \ "ru-ru \" xmlns = \ "http: // www] .w3.org / 2001/10 / सिंथेसिस \ "> <आवाज का नाम = \" मारिया8000 \ "> <p> $ {Start_Town} से $ {Finish_Town} तक का किराया $ {Price} है। </ p> </ आवाज> </ बोल>)
256 वर्ण चर लंबाई सीमा
तारांकन में वर्णों की एक चर लंबाई सीमा होती है। यदि चर निर्दिष्ट आकार से बड़ा है, तो अतिरिक्त हिस्सा बस त्याग दिया जाता है।
अब तक मुझे दो मामलों में इस सीमा का सामना करना पड़ा है।
1) VoiceNavigator संश्लेषण के लिए 256 से अधिक वर्णों की एक स्ट्रिंग को स्थानांतरित करना आवश्यक है।वॉयस मेनू में, सभी वाक्यांश संक्षिप्त और संक्षिप्त होने चाहिए, लेकिन कभी-कभी यह आवश्यक होता है, उदाहरण के लिए, आवाज की मदद से जानकारी जो इस सीमा से अधिक हो सकती है। इस मामले में, पाठ को 256 से अधिक वर्णों के भागों में विभाजित करना और भागों में ध्वनि करना आवश्यक है।
आप शायद इस पैरामीटर के लिए एक बड़े मूल्य के साथ तारांकन चिह्न पा सकते हैं और पुनः प्राप्त कर सकते हैं।
अब तक मैं केवल सूत्रों में यह पता लगाने में सक्षम रहा हूं कि कॉल-फाइलों में पारित चर के लिए आकार को कैसे बदला जाए, लेकिन पूरे तारांकन में नहीं। अगर शिल्पकार हैं, तो, आपका अनुभव सुनकर मुझे खुशी होगी।
2) 2 से अधिक के लिए एन-बेस्ट को संसाधित करना आवश्यक है।एन-बेस्ट मान्यता प्राप्त परिणामों की संख्या है। डिफ़ॉल्ट रूप से, एन-बेस्ट = 1। आप इसे बढ़ा सकते हैं और फिर VocieNavigator उच्चतम विश्वास स्तर (मान्यता आत्मविश्वास) के साथ कई मान्यता परिणाम लौटाएगा।
उदाहरण के लिए, आप दो सबसे विश्वसनीय पहचान परिणाम ले सकते हैं और यदि उनके बीच कॉन्फिडेंस लेवल में अंतर बहुत कम है, तो सब्सक्राइबर से स्पष्ट रूप से पूछें कि उसने क्या कहा:
- क्षमा करें, क्या आपने बिक्री विभाग या अंतरिक्ष अनुसंधान विभाग कहा है?यदि N-Best> 2 और MRCP सर्वर दो से अधिक प्रतिक्रियाएँ देता है, तो NLSML प्रतिसाद 256 वर्णों से अधिक है, इसका अंत छोटा है, परिणामस्वरूप, पार्सर NLSML को पार्स नहीं कर सकता है, क्योंकि यह मान्य नहीं है।
यह मामला बहुत दुर्लभ है, आमतौर पर एन-बेस्ट = 2 पर्याप्त है, लेकिन यह इस समस्या को याद रखने योग्य है।
DTMF मान्यता काम नहीं करती है
आज, VoiceNavigator UniMRCP से DTMF संकेतों को समझने में सक्षम नहीं है, और तदनुसार, DTMF व्याकरण के साथ काम करते हैं। डेवलपर्स निकट भविष्य में समस्या को हल करने का वादा करते हैं।
DTMF को सीधे Asterisk द्वारा मान्यता प्राप्त है (यह इसकी मानक विशेषता है), लेकिन उपयोगकर्ता को वाक्यांश कहने या एक्सटेंशन नंबर दर्ज करने के लिए संकेत देना संभव नहीं है, अर्थात्। DTMF और मेनू की एक ही शाखा में आवाज को पहचानना अब असंभव है।
यह एक गंभीर सीमा है और आवाज मेनू बनाते समय इस पर विचार किया जाना चाहिए।
VoiceNavigator अन्य प्लेटफार्मों के साथ संयोजन के रूप में, यह समस्या अनुपस्थित है।
यहाँ मुख्य समस्याएं और सीमाएँ हैं, जिन्हें आपको Asterisk + UniMRCP + VoiceNavigator के साथ काम करते समय निपटना था।
आपके सवालों का जवाब देने के लिए तैयार।
पुनश्च: MDGs में एक परीक्षण VoiceNavigator है जो इंटरनेट पर दिखता है। यदि लेखों में वर्णित प्रौद्योगिकियां रुचि की हैं, तो एक व्यक्तिगत पत्र में लिखें, मैं संपर्क और निर्देश देगा कि कहां और क्या लिखना है ताकि आप परीक्षण के लिए पहुंच प्राप्त कर सकें।