{"id":1362,"date":"2012-04-10T22:55:34","date_gmt":"2012-04-10T22:55:34","guid":{"rendered":"http:\/\/192.168.16.235\/?page_id=1362"},"modified":"2020-01-08T11:32:34","modified_gmt":"2020-01-08T11:32:34","slug":"call-progress-analysis","status":"publish","type":"page","link":"https:\/\/commetrex.com\/?page_id=1362","title":{"rendered":"Call-Progress Analysis"},"content":{"rendered":"<p>[vc_row css_animation=&#8221;&#8221; row_type=&#8221;row&#8221; use_row_as_full_screen_section=&#8221;no&#8221; type=&#8221;grid&#8221; angled_section=&#8221;no&#8221; text_align=&#8221;left&#8221; background_image_as_pattern=&#8221;without_pattern&#8221; z_index=&#8221;&#8221; css=&#8221;.vc_custom_1578318404627{padding-top: 60px !important;padding-bottom: 0px !important;background-color: #f0f0f0 !important;}&#8221;][vc_column][vc_column_text]Every time we place a call we instinctively perform call-progress analysis (CPA). We listen for dial tone before dialing, detect ring back, busy, answer, and so on, without giving it much thought. But duplicating the nearly unfailing precision of human-based CPA in a multiline communications system requires considerable care in its implementation.<\/p>\n<p>Telephony applications with outbound calling that use the public switched telephone network require the ability to accurately and rapidly interpret the call-progress tones, such as ring back and busy, that are delivered by the network to the calling entity. This call-progress analysis is complicated by the lack of the worldwide use of standard tone frequencies and patterns. The design of CPA signal-processing DSP software must, therefore, address the tradeoff between speed of analysis and generality. Commetrex\u2019 60080 CPA is designed to minimize the vendor\u2019s support requirements by providing an analysis resource that does not require tuning for over 99% of applications, even for global deployments, while providing accurate responses within 1.5 seconds (for busy) to 5.0 seconds (for ring back-off-hook-no-voice) when using the default parameters.<\/p>\n<p>60080 CPA uses a low- and high-pass frequency discriminator together with energy measurements over time to qualify in-band signaling tones. Three signal characteristics are used for tone detection: the tone frequency, timing (Tone_On, Tone_Off) and period and consistency (the number of times a tone cycle repeats before being qualified).<\/p>\n<p>The design of Commetrex\u2019 CPA is based on these characteristics of call-progress (CP) tones: Nearly all CP tones are comprised of one or two frequencies between 200 and 500 Hz. Although the timing of call-progress tones varies between manufacturers and PTT administrations, there is a nearly universal signal-timing hierarchy that can be relied upon for discrimination between the various signals.<\/p>\n<p>In addition to discerning all the usual call-progress tones and modem-answer tone, this product has a voice-detect capability that enables the using application to determine whether the call has been answered by a residential user, an answering machine, or a business.[\/vc_column_text][\/vc_column][\/vc_row][vc_row css_animation=&#8221;&#8221; row_type=&#8221;row&#8221; use_row_as_full_screen_section=&#8221;no&#8221; type=&#8221;grid&#8221; angled_section=&#8221;no&#8221; text_align=&#8221;left&#8221; background_image_as_pattern=&#8221;without_pattern&#8221; z_index=&#8221;&#8221; css=&#8221;.vc_custom_1578318800266{padding-top: 60px !important;padding-bottom: 60px !important;background-color: #f0f0f0 !important;}&#8221;][vc_column width=&#8221;1\/2&#8243; el_class=&#8221;white-box&#8221;][vc_column_text]<\/p>\n<h2><strong>Features<\/strong><\/h2>\n<ul>\n<li>Universal compatibility<\/li>\n<li>Detect ring back, busy, reorder, SIT, dialtone, voice answer, and modem answer.<\/li>\n<li>Detect voice, voice followed by silence then voice.<\/li>\n<li>Tunable parameters<\/li>\n<li>Support for TI TMS320C5400 and TMS320C6000 DSP<\/li>\n<li>TMS320DSP Algorithm Standard compatible<\/li>\n<li><a title=\"MSP Consortium\" href=\"http:\/\/www.msp.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">MSP Consortium M.100<\/a> compatible<\/li>\n<\/ul>\n<p>[\/vc_column_text][\/vc_column][vc_column width=&#8221;1\/2&#8243; el_class=&#8221;white-box&#8221;][vc_column_text]<\/p>\n<h2><strong>Benefits<\/strong><\/h2>\n<ul>\n<li>Worldwide marketing of your product<\/li>\n<li>Fast, accurate detection<\/li>\n<li>Low support costs<\/li>\n<li>Low implementation costs<\/li>\n<li>Low resource utilization<\/li>\n<\/ul>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row css_animation=&#8221;&#8221; row_type=&#8221;row&#8221; use_row_as_full_screen_section=&#8221;no&#8221; type=&#8221;grid&#8221; angled_section=&#8221;no&#8221; text_align=&#8221;left&#8221; background_image_as_pattern=&#8221;without_pattern&#8221; z_index=&#8221;&#8221; css=&#8221;.vc_custom_1578482817614{padding-top: 60px !important;padding-bottom: 60px !important;}&#8221;][vc_column][vc_column_text]<\/p>\n<h2><strong>\u2018C6000 Resource Utilization<\/strong><\/h2>\n<p>MCPS single-sample: 2.93<br \/>\nProgram Memory (full duplex): 19.8K bytes<br \/>\nConstants\/tables: 4.2K<br \/>\nPer-Instance Memory: 456 bytes<\/p>\n<h2>\u2018<strong>C5400 Resource Utilization<\/strong><\/h2>\n<p>MCPS (single-sample only): 3.6<br \/>\nProgram Memory: 4.4K words<br \/>\nConstants\/tables: 3.4K<br \/>\nInstance Memory: 590 bytes<\/p>\n<h2><strong>License Options<\/strong><\/h2>\n<p>Limited-Use Paid-Up Source Code<br \/>\nObject Code with Runtime Licenses<\/p>\n<h2><strong>System Design<\/strong><\/h2>\n<p>The figure below shows a general block diagram of the partitioning of the CPA system. It is divided into two Media Stream Transforms (MSTs): the feature detection (FD) MST and the CPA Finite State Machine (CPA-FSM) MST. This partitioning allows the two entities to be assigned to different processors for execution. For example, an embedded system with both DSP and a scalar (or co-processor) might benefit from the FD executing on the DSP and the FSM on the scalar.<\/p>\n<p>The FD MST processes the incoming signal samples to detect\/extract features like CPA tone start\/stop, voice start\/stop, SIT tone pattern, and fax-modem answer tone. The FD MST sends time-stamped events to the CPA-FSM MST whenever a feature is detected or a change is observed. Time stamps are based on the rate of the incoming samples (8000 samples\/second).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2338 alignnone\" title=\"image_cpa1\" src=\"http:\/\/commetrex.com\/wp-content\/uploads\/2012\/04\/image_cpa1.jpg\" alt=\"CPA System\" width=\"325\" height=\"200\" \/><\/p>\n<address>Above: CPA System<\/address>\n<p>The following two sections provide an overview of each of the above components.<\/p>\n<h4><strong>Feature Detection<\/strong><\/h4>\n<p>The FD component of the CPA system is an MST that typically runs on the task processor. Its operation is based on partitioning the telephone channel into two bands as shown in the next figure. The FD MST implements two FIR (band and high pass) filters to compute the energy portion of the incoming signal in each band. Also, the FD MST runs four IIR-based notch filters to detect specific tones of the CED and SIT signals. All filters operate at 8000 Hz sampling rate and have a unity gain.<\/p>\n<p>&nbsp;<\/p>\n<address><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2339\" title=\"image_cpa2\" src=\"http:\/\/commetrex.com\/wp-content\/uploads\/2012\/04\/image_cpa2.jpg\" alt=\"CPA System\" width=\"316\" height=\"110\" \/><\/address>\n<address>Above: Partitioning of the telephone channel<\/address>\n<p>The FD MST keeps track of the raw energy of the signal and does not consider the relative energies of different features before the raw energy passes a parameter-controlled threshold level. Once the raw energy exceeds the threshold, the output of each filter (the energy of each feature) is compared with the raw energy and with other filter outputs to make a decision on the signal.<\/p>\n<h4><strong>Finite State Machine<\/strong><\/h4>\n<p>The CPA-FSM component of the CPA system is an MST that can execute on the DSP, embedded-scalar, or host processor. It is driven by events from the Event Preprocessor. The CPA-FSM implements all required states for call-progress analysis. It makes use of other supporting routines to implement the processing required by each event transition. The CPA-FSM MST consists of four major components: the event pre-processor, the state machine, and the supporting (edge) routines of the state machine and the timer package.<\/p>\n<h2><strong>Voice Detection<\/strong><\/h2>\n<p>The voice-begin event is the first voice event generated when the remote party begins speaking. Note that the voice must be above the SilenceLevel for VoiceOnTime milliseconds. The voice-end event is reported after an absence of voice for SilenceLong milliseconds. If voice is detected again after an absence of voice for SilenceShort milliseconds, the voice-end-short event is reported. The voice-end-short event is not generated if voice restarted after a silence less than SilenceShort milliseconds.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2340\" title=\"image_cpa3\" src=\"http:\/\/commetrex.com\/wp-content\/uploads\/2012\/04\/image_cpa3.jpg\" alt=\"CPA System\" width=\"331\" height=\"349\" \/><\/p>\n<p>This capability allows the application to infer whether the called party answered with a \u201cHello\u201d, which is 0.4 seconds, or \u201cHello, thank you for calling Commetrex\u201d, or \u201cHi, this is Pete and Alice. We\u2019re not here right now\u2026\u201d<\/p>\n<table style=\"width: 100%;\" border=\"1\" cellspacing=\"0\">\n<caption align=\"center\">\n<h3 class=\"table-heading\">CPA Events<\/h3>\n<\/caption>\n<tbody>\n<tr>\n<th><strong>Event Name(ID)<\/strong><\/th>\n<th><strong>Description<\/strong><\/th>\n<\/tr>\n<tr>\n<td>CP_BEG<\/td>\n<td>CPA Started<\/td>\n<\/tr>\n<tr>\n<td>CP_BUSY<\/td>\n<td>Busy tone detected<\/td>\n<\/tr>\n<tr>\n<td>CP_CED<\/td>\n<td>Modem tone detected<\/td>\n<\/tr>\n<tr>\n<td>CP_DIALTONE<\/td>\n<td>Dial tone detected<\/td>\n<\/tr>\n<tr>\n<td>CP_END<\/td>\n<td>Call progress has completed<\/td>\n<\/tr>\n<tr>\n<td>CP_NOANSWER<\/td>\n<td>No answer (after ringing) detected<\/td>\n<\/tr>\n<tr>\n<td>CP_RBTONE<\/td>\n<td>Ring back tone detected<\/td>\n<\/tr>\n<tr>\n<td>CP_ROTONE<\/td>\n<td>Reorder (fast busy) tone detected<\/td>\n<\/tr>\n<tr>\n<td>CP_SIT<\/td>\n<td>SIT detected<\/td>\n<\/tr>\n<tr>\n<td>CP_VOICE<\/td>\n<td>Voice detected<\/td>\n<\/tr>\n<tr>\n<td>CP_VOICE_END_ SHORT<\/td>\n<td>Silence longer than SilenceShort has been detected after detection of voice<\/td>\n<\/tr>\n<tr>\n<td>CP_VOICE_END<\/td>\n<td>Silence longer than SilenceLong has been detected after detection of voice<\/td>\n<\/tr>\n<tr>\n<td>CP_RBQUIT<\/td>\n<td>Ring back quit<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>[\/vc_column_text][\/vc_column][\/vc_row][vc_row css_animation=&#8221;&#8221; row_type=&#8221;row&#8221; use_row_as_full_screen_section=&#8221;no&#8221; type=&#8221;grid&#8221; angled_section=&#8221;no&#8221; text_align=&#8221;left&#8221; background_image_as_pattern=&#8221;without_pattern&#8221; z_index=&#8221;&#8221; css=&#8221;.vc_custom_1578483017318{padding-top: 60px !important;padding-bottom: 60px !important;background-color: #f0f0f0 !important;}&#8221;][vc_column][vc_column_text]<\/p>\n<h2><strong>Interfacing With the 60080 CPA<\/strong><\/h2>\n<p>The <a href=\"http:\/\/www.msp.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">MSP Consortium<\/a> has published its M.100 recommendation for a stream-processing environment that supports multi-line multi-media stream processing. Commetrex\u2019 implementation of M.100 is <a title=\"OpenMedia Software Developer\u2019s Kit\" href=\"http:\/\/commetrex.com\/products\/openmedia-software-developers-kit\/\" target=\"_blank\" rel=\"noopener noreferrer\">OpenMedia\u2122<\/a>, which supports the 60080 CPA as a \u201cdrop-in\u201d resource. The native algorithm \u201cwrapper\u201d used by M.100 is specified by Texas Instruments (TI). TI has promulgated an algorithm-packaging standard that is designed to standardize the interface between media technologies and the controlling subsystem. The 60080 CPA conforms to this standard.<\/p>\n<p>http:\/\/dspvillage.ti.com\/docs\/express_dsp\/expressdsphome.jhtml.<\/p>\n<p>The TMS320DSP Algorithm Standard API Reference (TI document number SPRU360) is an API specification intended to reduce the cost of interfacing with licensed media technologies. All compliant algorithms must implement the IALG interface, which defines a framework-independent interface for the creation of algorithm instance objects. The interface functions fall into the following three categories:<\/p>\n<ol>\n<li>Instance object creation, initialization, and deletion<\/li>\n<li>Algorithmic processing<\/li>\n<li>Instance object control and relocation<\/li>\n<\/ol>\n<p>The CPA module uses the functions listed below to implement the above interface. For a more detailed description of the proper function refer to pages 1-7 to 1-11 in the 60080 API Reference Manual.<\/p>\n<ol>\n<li>CPA_create( ): Creates a CPA algorithm object instance and performs the necessary initialization of the commands and parameters.<\/li>\n<li>CPA_detect( ): Processes the input data.<\/li>\n<li>CPA_delete( ): Deletes the algorithm object instance when the input data are processed.<\/li>\n<li>CPA_control( ): Defines a standard method to control the algorithm instance in real time by, for example, changing the command and parameter values. It can also be used to receive status information.<\/li>\n<\/ol>\n<table border=\"1\" cellspacing=\"0\">\n<caption align=\"center\">\n<h3 class=\"table-heading\">CPA Parameters<\/h3>\n<\/caption>\n<tbody>\n<tr>\n<th><strong>Parameter<br \/>\nName<\/strong><\/th>\n<th><strong>Default<\/strong><\/th>\n<th><strong>Units<\/strong><\/th>\n<th><strong>Description<\/strong><\/th>\n<\/tr>\n<tr>\n<td>SilenceLevel<\/td>\n<td>-40<\/td>\n<td>DBm<\/td>\n<td>The average value of the input stream below which the signal is considered to be silence (noise). Valid range is \u201346 to \u201334.<\/td>\n<\/tr>\n<tr>\n<td>SilenceTime<\/td>\n<td>500<\/td>\n<td>Msec<\/td>\n<td>The minimum length if a silence period after voice is detected to qualify VOICE_OFF. Signal Detection circuit responds to loss of carrier within 4 \u20135 ms, so minimum value for parameter is 5 ms.<\/td>\n<\/tr>\n<tr>\n<td>SilenceShort<\/td>\n<td>1000<\/td>\n<td>Msec<\/td>\n<td>The time voice must be OFF before sending VOICE_END_SHORT event. This parameter must be greater than SilenceTime. Note that the MSP App must take into account that voice had been off for a duration SilenceTime.<\/td>\n<\/tr>\n<tr>\n<td>SilenceLong<\/td>\n<td>1500<\/td>\n<td>Msec<\/td>\n<td>The time voice must be OFF before sending VOICE_END event. This parameter must be greater than SilenceShort. Note that the MSP App. must take into account that voice had been off for a duration SilenceTime.<\/td>\n<\/tr>\n<tr>\n<td>VoiceOnTime<\/td>\n<td>50<\/td>\n<td>Msec<\/td>\n<td>The minimum length of time voice must be detected before call progress reports a voice begin event.<\/td>\n<\/tr>\n<tr>\n<td>RB_Max<\/td>\n<td>3000<\/td>\n<td>Msec<\/td>\n<td>The maximum duration of a Ring-Back (RB) tone to distinguish it from dial tone. Most RB tones are between 1-2 seconds in duration. The default should be at least 2.5 Sec. The longer it is the longer it takes to qualify dial tone. The shorter it is the more likely it will have to be tuned in the field.<\/td>\n<\/tr>\n<tr>\n<td>RB_Count<\/td>\n<td>5<\/td>\n<td>Count<\/td>\n<td>The number of RB tones to report \u201cNo Answer\u201d<\/td>\n<\/tr>\n<tr>\n<td>RB_StopPeriod<\/td>\n<td>5000<\/td>\n<td>Msec<\/td>\n<td>The time from the end of the last RB tone before declaring RB stopped, meaning the called terminal is off-hook without voice, CED or SIT. Few RB tone-off times are greater than 4 seconds; CED period is 3.5 sec<\/td>\n<\/tr>\n<tr>\n<td>BZ_Max<\/td>\n<td>1500<\/td>\n<td>Msec<\/td>\n<td>The maximum period (on time plus off time) to differentiate between slow busy and RB. Busy typically has a period of one second and a 50% duty cycle. A value of 1.5 seconds for this parameter will yield excellent worldwide results<\/td>\n<\/tr>\n<tr>\n<td>RO_Max<\/td>\n<td>700<\/td>\n<td>Msec<\/td>\n<td>The maximum period (on time plus off time) to differentiate between Slow Busy and Fast Busy (reorder). A default value of 700 \u2013 750 msec. will yield acceptable results.<\/td>\n<\/tr>\n<tr>\n<td>BZ_Count<\/td>\n<td>4<\/td>\n<td>Count<\/td>\n<td>The number of Busy tones to qualify \u201cBusy\u201d or \u201cFast Busy\u201d.<\/td>\n<\/tr>\n<tr>\n<td>TimeOut<\/td>\n<td>10000<\/td>\n<td>Msec<\/td>\n<td>The maximum time that can elapse with no response from the network before call progress stops with a reason of timeout.<\/td>\n<\/tr>\n<tr>\n<td>StopMask<\/td>\n<td>0x21<\/td>\n<td>Mask<\/td>\n<td>Mask to control which events cause call progress to stop. A value may be formed by Oring any of the following:<br \/>\n0x0001 voice begin<br \/>\n0x0002 voice end short<br \/>\n0x0004 voice end<br \/>\n0x0008 modem tone (CED)<br \/>\n0x0010 SIT tone<br \/>\nCPA always terminates if the following are detected: dial tone, busy, and no answer.<\/td>\n<\/tr>\n<tr>\n<td>PrecMask<\/td>\n<td>3<\/td>\n<td>Mask<\/td>\n<td>Mask to control which precise detector to run. A value may be formed by ORing any of the following:<br \/>\n0x0001 CED tone (modem)<br \/>\n0x0002 SIT<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>[\/vc_column_text][\/vc_column][\/vc_row]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[vc_row css_animation=&#8221;&#8221; row_type=&#8221;row&#8221; use_row_as_full_screen_section=&#8221;no&#8221; type=&#8221;grid&#8221; angled_section=&#8221;no&#8221; text_align=&#8221;left&#8221; background_image_as_pattern=&#8221;without_pattern&#8221; z_index=&#8221;&#8221; css=&#8221;.vc_custom_1578318404627{padding-top: 60px !important;padding-bottom: 0px !important;background-color: #f0f0f0 !important;}&#8221;][vc_column][vc_column_text]Every time we place a&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":98,"menu_order":156,"comment_status":"closed","ping_status":"open","template":"template-products.php","meta":{"footnotes":""},"class_list":["post-1362","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/commetrex.com\/index.php?rest_route=\/wp\/v2\/pages\/1362","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/commetrex.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/commetrex.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/commetrex.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/commetrex.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1362"}],"version-history":[{"count":9,"href":"https:\/\/commetrex.com\/index.php?rest_route=\/wp\/v2\/pages\/1362\/revisions"}],"predecessor-version":[{"id":5071,"href":"https:\/\/commetrex.com\/index.php?rest_route=\/wp\/v2\/pages\/1362\/revisions\/5071"}],"up":[{"embeddable":true,"href":"https:\/\/commetrex.com\/index.php?rest_route=\/wp\/v2\/pages\/98"}],"wp:attachment":[{"href":"https:\/\/commetrex.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}