FreeSWITCH + mod_unimrcp + VoiceNavigator। FreeSWITCH में रूसी भाषण का संश्लेषण और मान्यता

VoiceNavigatorFreeswitchUniMRCP

Asterisk और VoiceNavigator को एकीकृत करने पर लेखों की एक श्रृंखला में , मैं FreeSWITCH के साथ VoiceNavigator के एकीकरण का वर्णन करूंगा

Habré पर FS के बारे में कई लेख और उल्लेख हैं, लेकिन उनकी तुलना Asterisk की लोकप्रियता से नहीं की जाएगी))

FreeSWITCH, एस्टरिस्क में सन्निहित विचारों की निरंतरता और विकास होने के नाते, वास्तव में एक मॉड्यूलर वास्तुकला है, जहां सभी बुनियादी कार्यक्षमता, जहां तक ​​संभव हो, अलग-अलग मॉड्यूल में किया जाता है। यह समाधान बनाने में अधिक लचीलेपन की अनुमति देता है जो सॉफ्टफोन से सॉफ्टस्विच तक स्केलेबल हैं। FreeSWITCH का उपयोग IVR अनुप्रयोगों के लिए स्विच, PBX, मीडिया गेटवे या मीडिया सर्वर के रूप में किया जा सकता है जो कॉल प्रोसेसिंग एल्गोरिदम को नियंत्रित करने के लिए XML फ़ाइलों का उपयोग करते हैं।

FreeSWITCH के लिए, Asterisk के विपरीत, UniMRCP को अलग से संकलित करने की कोई आवश्यकता नहीं है। UniMRCP समर्थन पहले से ही जोड़ा गया है और asr_tts / mod_unimrcp मॉड्यूल के रूप में "बॉक्स से बाहर" काम करता है।

निम्नलिखित FreeSWITCH को स्थापित करने, इसमें VoiceNavigator को जोड़ने और एक परीक्षण वॉयस एप्लिकेशन बनाने का वर्णन करता है।

FreeSWITCH स्थापित करें

एफएस इंस्टालेशन को हेबे और अन्य स्रोतों में वर्णित किया गया था, इसलिए मैं इस पर संक्षेप में बात करूंगा। सौभाग्य से, सब कुछ सरल और सस्ती है। निम्नलिखित CentOS पर स्थापना का वर्णन करता है।

वितरण को www.freeswitch.org से डाउनलोड करें। लेखन के समय, वितरण का नवीनतम संस्करण 1.0.6 है।

संकलन से पहले, हम FreeSWITCH और उसके मॉड्यूल के संचालन के लिए आवश्यक संकुल स्थापित करते हैं:
yum install autoconf automake libtool gcc-c++ ncurses-devel make expat-devel zlib zlib-devel libjpeg-devel unixODBC-devel openssl-devel gnutls-devel libogg-devel libvorbis-devel curl-devel gdbm gdbm-devel

मॉड्यूल.conf फ़ाइल में एक UniMRCP मॉड्यूल जोड़ने के लिए, लाइन asr_tts / mod_unnrcpp को अनप्लग करें।
आपको पर्ल से डायलप्लान के साथ काम करने में सक्षम होने के लिए भाषाओं / mod_perl को भी अनकंफर्ट करना होगा।

निम्नलिखित मानक संकलन प्रक्रिया है:
  कॉन्फ़िगर
 मेकअप
 जाँच करें
 स्थापित करें
 सीडी लगता है स्थापित करें
 cd-moh-install करें
 cd-sound-ru-install करें
 नमूने बनाओ 

स्थापना के बाद, FreeSWITCH पहले से ही कॉन्फ़िगर है और उपयोग के लिए तैयार है।
डिफ़ॉल्ट भाषा के रूप में रूसी भाषा के उपयोग को सक्षम करने के लिए /usr/local/freeswitch/conf/vars.xml में जोड़ें
  <X-PRE-PROCESS cmd = "सेट" डेटा = "default_language = en" /> 

चलाने के लिए, कमांड / usr / लोकल / फ्रीस्विच / बिन / फ्रीस्विच का उपयोग करें
प्रदर्शन का परीक्षण करने के लिए, पैरामीटर उपयोगकर्ता के साथ सॉफ्टफ़ोन को कॉन्फ़िगर करें - 1000, पासवर्ड - 1234 और सर्वर पर पंजीकरण करने के बाद, 5000 पर कॉल करें। यदि FreeSWITCH सही ढंग से स्थापित है, तो आप एक परीक्षण IVR सुनेंगे।

VoiceNavigator को FreeSWITCH से कनेक्ट करें

1) लोडिंग मॉड्यूल mod_unimrcp जोड़ें।
ऐसा करने के लिए, फ़ाइल /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml जोड़ें
  <लोड मॉड्यूल = "mod_unimrcp" /> 

2) / usr / स्थानीय / freeswitch / conf / mrcp_profiles फ़ोल्डर में, हमारे MRCP सर्वर के प्रोफाइल के साथ एक vn.xml फ़ाइल बनाएँ।
  <शामिल करें>
   <! - VoiceNavigator ->
   <प्रोफाइल का नाम = "vn" संस्करण = "1">
     <param name = "server-ip" value = "192.168.2.106" /> <! - VoiceNavigator के साथ कंप्यूटर का आईपी-पता ->
     <param name = "server-port" value = "8000" /> <! - MRCP सर्वर से कनेक्ट करने के लिए पोर्ट ->
     <परम नाम = "संसाधन-स्थान" मूल्य = "" />
     <param name = "speechsynth" value = "tts" />
     <param name = "speechrecog" value = "asr" />
     <param name = "rtp-ip" value = "192.168.3.161" /> <! - FreeSWITCH के साथ कंप्यूटर का IP पता ->
     <param name = "rtp-port-min" value = "32768" />
     <param name = "rtp-port-max" value = "33268" />
     <परम नाम = "कोडेक्स" मूल्य = "पीसीएमयू पीसीएमए एल 16 / 96/8000" />
    </ प्रोफ़ाइल>
 </ शामिल करें> 

3) डिफ़ॉल्ट रूप से उपयोग की गई नई बनाई गई प्रोफ़ाइल बनाएं।
ऐसा करने के लिए, /usr/local/freeswitch/conf/autoload_configs/unimrcp.conf.xml फ़ाइल में, हम डिफ़ॉल्ट प्रोफाइल को इंगित करने वाली पंक्तियों को ठीक करेंगे।
  <! - TTS के लिए उपयोग करने के लिए UniMRCP प्रोफ़ाइल ->
 <param name = "default-tts-profile" value = "vn" />
 <! - ASR के लिए उपयोग करने के लिए UniMRCP प्रोफ़ाइल ->
 <param name = "default-asr-profile" value = "vn" /> 

4) अन्य नोड्स के साथ FreeSWITCH इंटरैक्शन को सक्षम करने के लिए, फ़ाइल को संपादित करें
अनुमत नोड्स में VoiceNavigator के साथ मशीन का IP पता जोड़कर /usr/local/freeswitch/conf/autoload_configs/acl.conf.xml।
  <सूची का नाम = "डोमेन" डिफ़ॉल्ट = "इनकार">		
	 <नोड प्रकार = "अनुमति दें" डोमेन = "$ $ {डोमेन}" />
	 <! - पता 192.168.2.106 -> के साथ नोड बातचीत के लिए अनुमति दें
	 <नोड प्रकार = "अनुमति दें" cidr = "192.168.2.106/32" />	
 </ सूची> 

यह VoiceSavigator के साथ सर्वर को FreeSWITCH से जोड़ने का सेटअप पूरा करता है।

टेस्ट वॉयस एप्लिकेशन बनाएं

1) / usr / स्थानीय / freeswitch / व्याकरण / फ़ोल्डर में digits.gram व्याकरण फ़ाइल बनाएँ
  <? xml संस्करण = "1.0"?>
 <व्याकरण xmlns = "http://www.w3.org/2001/06/grammar" xml: lang = "ru-ru" संस्करण = "1.0" मोड = "आवाज" रूट = "परीक्षण">
     <नियम आईडी = "परीक्षण">
         <एक-के>
             <आइटम> एक </ आइटम>
             <आइटम> दो </ आइटम>
             <आइटम> तीन </ आइटम>
             <आइटम> चार </ आइटम>
             <आइटम> पांच </ आइटम>
             <आइटम> छह </ आइटम>
             <आइटम> सात </ आइटम>
             <आइटम> आठ </ आइटम>
             <आइटम> नौ </ आइटम>
             <आइटम> दस </ आइटम>
         </ एक-के>
     </ नियम>
 </ व्याकरण> 

2) test_vn.xml फ़ाइल में एक डायल योजना बनाएं और इसे / usr / स्थानीय / freeswitch / conf / dialplan / में रखें
  <? xml संस्करण = "1.0" एन्कोडिंग = "utf-8"?>
 <शामिल करें>
   <संदर्भ नाम = "संदर्भ_वन">
     <विस्तार नाम = "स्वागत">
         <कंडीशन फील्ड = "डेस्टिनेशन_नंबर" एक्सप्रेशन = "^ 777 $">
             <कार्रवाई अनुप्रयोग = "उत्तर" />
             <कार्रवाई अनुप्रयोग = "सेट" डेटा = "tts_engine = unimrcp: vn" />
             <क्रिया अनुप्रयोग = "सेट" डेटा = "tts_voice = Maria8000" />
             <एक्शन एप्लिकेशन = "बोलो" डेटा = "एक से दस तक की संख्या को नाम दें!" />
             <एक्शन एप्लिकेशन = "डिटेल_स्पॉट" डेटा = "अनइम्कैप / यूएसआर / लोकल / फ़्रीस्विच / व्याकरण / अंक vn" />
             <एक्शन एप्लिकेशन = "स्लीप" डेटा = "10000" />
             <एक्शन एप्लिकेशन = "हैंगअप" />
         </ स्थिति>
     </ एक्सटेंशन>
   </ प्रसंग>
 </ शामिल करें> 

क्या आपको अभी भी लगता है कि एफएस डायलपैन अजीब और अपठनीय हैं? मेरी राय में यह काफी सरल और स्पष्ट है))

3) इस एप्लिकेशन को कॉल करने में सक्षम होने के लिए, फ़ाइल में /usr/local/freeswitch/conf/dialplan/default.xml जोड़ें
  <विस्तार नाम = "संदर्भ_वन">
       <कंडीशन फील्ड = "डेस्टिनेशन_नंबर" एक्सप्रेशन = "^ 777 $">
         <कार्रवाई अनुप्रयोग = "स्थानांतरण" डेटा = "777 XML संदर्भ_वन" />
       </ स्थिति>
 </ एक्सटेंशन> 


FreeSWITCH को संश्लेषण और मान्यता कार्यों का परीक्षण करने के लिए कॉन्फ़िगर और तैयार किया गया है।
परिवर्तनों को लागू करने के लिए FS को पुनरारंभ करें।

अब आप संश्लेषण और मान्यता की जांच करने के लिए 777 पर कॉल कर सकते हैं। सिस्टम एक से दस तक की संख्या पूछता है और कंसोल में मान्यता परिणाम प्रदर्शित करता है।

और यहाँ सबसे दिलचस्प हिस्सा है। यह परिणाम कैसे प्राप्त करें और इसे संसाधित करें? यदि तारांकन में यह चर $ {RECOG_RESULT} को पार्स करने के लिए पर्याप्त था, तो FreeSWITCH में इसके लिए अधिक जटिल ईवेंट सॉकेट तंत्र का उपयोग किया जाता है। विशेष रूप से, भाषण प्रकार के साथ DETECTED_SPEECH घटना: पता-भाषण।
FreeSWITCH सॉकेट्स के साथ काम करने का विषय इस लेख के दायरे से परे है और एक अलग विवरण का हकदार है।
उन लोगों के लिए, आप यहां और यहां विवरण देख सकते हैं।

Source: https://habr.com/ru/post/In129811/


All Articles