reference will now be made in detail to several embodiments of the invention that are illustrated in the accompanying drawings . wherever possible , same or similar reference numerals are used in the drawings and the description to refer to the same or like parts . the drawings are in simplified form , not to scale , and omit apparatus elements and method steps that can be added to the described systems and methods , while including certain optional elements and steps . for purposes of convenience and clarity only , directional terms , such as top , bottom , left , right , up , down , over , above , below , beneath , rear , and front may be used with respect to the accompanying drawings . these and similar directional terms should not be construed to limit the scope of the invention in any manner . referring more particularly to the drawings , fig1 is a high - level flow chart of selected steps of a process 100 for detecting a period of silence and terminating voice recording ( or performing another function ) when silence is detected . among other uses , implementation of the process 100 in a telephone answering system can improve a caller &# 39 ; s ability to use a voice - activated voice mail system from a noisy environment in a hands - free mode . the telephone answering system identities when the caller has stopped speaking , and hangs up automatically . the process begins at step 110 with receiving coded audio blocks from the system &# 39 ; s module responsible for digitizing and coding incoming sound . in one exemplary embodiment of the system , the blocks are generated by a computer telephony subsystem card , such as the br1 / pc1 series cards , available from intel corporation , 2200 mission college blvd ., santa clara , calif . 95052 , ( 800 ) 628 - 8686 . in this embodiment , the blocks are 1 , 536 one - byte samples in length , generated at a rate of 8 , 000 samples per second . thus , each block is 192 milliseconds in duration . at step 115 , each block is segmented into windows . in the illustrated embodiment , each window is also 1 , 536 bytes in length . in one variant , the windows overlap by 160 bytes . thus , there is about a 10 percent overlap between consecutive windows . the overlap is not strictly necessary , but it provides better handling of audio events occurring close to borderline of a particular window , and of events that would span two consecutive non - overlapping windows . in variants of the illustrated embodiment , the overlap ranges from about 2 percent to about 20 percent ; in more specific variants , the overlap ranges between about 4 percent and about 12 percent . the windows are sent to a classifier engine , at step 120 . the classifier engine examines the audio data of the windows to determine whether the sound within a particular window is likely to be speech , silence , or noise . in effect , the classifier engine 120 acts as a speech versus non - speech ( non - voice ) discriminator . note that if the windows do not overlap and are the same length as the blocks , the segmentation step is essentially obviated or merged with the following step 120 . at step 125 , output of the classifier engine is received . at step 130 , the output of the classifier engine is evaluated . in some embodiments , the evaluation process is relatively uninvolved , particularly if the classifier engine output is a simple yes / no classification of the window ; in other embodiments , the classifier output is subject to interpretation , which is carried out in this step 130 . for example , the classifier engine can return a value corresponding to the energy level of the signal within the window , a number or rate of zero - crossings in the window , and a classification tag . in this case , the numerical output of the classifier engine can be evaluated or interpreted within a context dependent on the classification tag received . according to one alternative , the two numbers and the classification tag returned by the classifier engine can be evaluated together , for example , by attaching a third number to the classification tag received , weighting the three numbers in an appropriate manner , combining ( e . g ., adding ) the three numbers , and comparing the result to one or more thresholds . in one variant of the illustrated process , the energy level output of the classifier engine is compared to a predefined threshold , while the zero - crossing output is practically ignored . in another variant , the zero - crossing number or rate is compared to a threshold , with little or no significance attached to the energy level . in yet another variant , classification also includes comparison of the energy level and zero - crossing rate ( or number ) to bounded ranges . for example , the zero - crossing output of the classifier engine is compared to a range bounded by a set of two real numbers ( hfzclow , hfzchigh ), while the energy level output is compared to another set of two real numbers ( hfelow , hfehigh ). the window is then classified as noise if the zero - crossing and energy level outputs fall within their respective bounded ranges . the bounded ranges test can also be applied in context of the classification of the window by the classifier engine . using the “ endpointer ” classifier engine discussed below , the bounded ranges test may be applied when the classifier engine tags the window with a signal tag ( which is discussed below in relation to the “ endpointer ” algorithm . if voiced speech is detected in the window being processed , a speech count accumulator is incremented , at step 140 . the value held by the speech count accumulator is then compared a predetermined limit l 1 , at step 145 . if the value in the speech count accumulator is equal to or exceeds l 1 , then both accumulators are cleared and process flow turns to processing the next window . if the speech count accumulator does not exceed the l 1 limit , process flow turns to the next window without clearing the speech count and non - voice count accumulators . in one variant of the illustrated embodiment , l 1 is set to seven . this corresponds to a time period of about note that the seven windows of speech need not occur consecutively for the accumulators to be cleared ; it suffices if the seven windows accumulate before end - of - speech is detected . in some variants of this process , l 1 is set to correspond to a time period between about 0 . 7 and about 2 . 5 seconds . in more specific variants , l 1 corresponds to time periods between about 1 and about 1 . 8 seconds . in yet more specific variants , l 1 corresponds to time periods between about 1 and about 1 . 5 seconds . if speech is not detected within the currently - processed window , a non - voice count accumulator is incremented , at step 155 . the non - voice count accumulator is then compared to a second limit l 2 , at step 160 . if the value in the non - voice count accumulator is less than l 2 , process flow once again turns to processing the next window of coded speech , at step 120 . otherwise , a command to terminate recording is issued at step 165 . in alternative embodiments , step 165 corresponds to other functions . for example , and end - of - speech can be marked within the audio stream to delimit an audio section , which can then be sent to a speech recognizer , i . e ., a speech recognition device or process . in one variant of the illustrated embodiment , l 2 is set to 15 windows , corresponding to about 3 seconds . in some variants of the illustrated embodiment , l 2 corresponds to a time period between about 1 second and about 4 seconds . in more specific variants , l 2 corresponds to time periods between about 2 . 5 and about 3 . 5 seconds . the classifier engine used in the embodiment illustrated in fig1 is an “ endpointer ” ( or “ endpoint ”) algorithm published by bruce t . lowerre . the algorithm , available at ftp :// svr - ftp . eng . cam . ac . uk / pub / comp . speech / tools / ep . 1 . 0 . tar . gz , is filed together with this document and is hereby incorporated by reference as if fully set forth herein . the endpointer algorithm examines both energy content of the signal in the window , and zero - crossings of the signal . the inventive process 100 works by attaching a state machine to the basic methods of the endpointer algorithm for detection of speech , silence , and noise . the endpointer algorithm analyzes segments of audio in 192 millisecond windows , using zero - crossing and energy detection calculations to produce an intermediate classification tag of each window , given the classification of the preceding window . the set of window classification tags generated by the endpointer algorithm includes the following : ( 1 ) silence , ( 2 ) signal , ( 3 ) in_utterance , ( 4 ) continue_utterance , and ( 5 ) end_utterance_final . the state machine uses higher - level energy and zero - crossing thresholds for making a speech - versus - silence - versus - noise determination , using the output generated by the endpointer algorithm . by taking the classification of each audio window , a non - voice accumulator or a speech count accumulator is either incremented , cleared , or left in its previous state . when the non - voice accumulator reaches the required threshold ( l 2 ) indicating that the maximum number of silence or noise windows has been detected , message recording is automatically stopped . note that the classifier engine provides sufficient information to make distinctions within the various windows that fall within the non - voice classification . for example , these windows can be subdivided into silence windows and noise windows , and the state machine algorithm can be modified to assign different weights to the silence and noise windows , or to associate different thresholds with these windows . fig2 illustrates selected steps of a process 200 that employs the former approach . in the process 200 , steps 210 , 215 , and 220 are similar or identical to the like - numbered steps of the process 100 : audio blocks are received , segmented into windows , and the windows are sent to the classifier engine . at step 225 , the output corresponding to each window is received from the classifier engine . window classifications are determined at step 227 , based on the output of the classifier engine . here , each window is classified in one of three categories : speech , silence , or noise . if the window is classified as speech , the speech count accumulator is incremented at step 240 , and the value of the speech count accumulator is tested against the limit l 1 , at step 245 . as in the process 100 , all accumulators are cleared once the value in the speech count accumulator exceeds l 1 , and process flow turns to processing the next window . if the value in the speech count accumulator does not exceed l 1 , process flow turns to the next window without clearing the accumulators . if the currently - processed window is not classified as speech , it is tested to determine whether the window has been classified as silence , at step 252 . in case of silence , a silence count accumulator is incremented , at step 255 . if the window has not been classified as silence , it is a noise window . in this case , a noise count accumulator is incremented , at step 257 . the silence and noise count accumulators are then appropriately weighted and summed to obtain the total non - voice count , at step 258 . in one variant of the process 200 , the weighting factor assigned to the noise windows is half the weighting factor assigned to silence windows . thus , the total non - voice count is equal to ( n 1 + n 2 / 2 ), where n 1 denotes the silence count accumulator value , and n 2 denotes the noise count accumulator value . in other variants , the weighting factor assigned to the noise windows varies between about 30 and about 80 percent of the weighting factor assigned to the silence windows . the total non - voice count is next compared to the limit l 2 , at step 160 . if the total non - voice count is less than l 2 , process flow proceeds to the next window . otherwise , a command to terminate recording is issued at step 265 . note that if the weighting factors for the silence and noise windows are both the same and equal to one , the process 200 becomes essentially the same as the process 100 . turning now to the code in the computer program listing appendix and code of the endpointer algorithm used in certain embodiments of the processes 100 and 200 , several observations may help the reader &# 39 ; s understanding of the operation and functionality of these processes . a person skilled in the art would of course be well advised to turn to the actual code for better and more precise understanding of its operation . the state machine implemented in the code has different boolean modes , such as a mode determined by an end_mode tag . the tag together with its corresponding mode can be either true or false . three counters are maintained by the code : ( 1 ) a speech counter , ( 2 ) a silence counter , and ( 3 ) a noise - counter ; these counters implement the speech , silence , and noise count accumulators described above . three threshold sets of { zero - crossing , energy } parameter combinations are used by the code , to with : noise - threshold , silence - threshold , and speech - threshold . the noise - threshold is used to determine when the currently - processed window is noise . the silence - threshold is used to determine silence in end_mode , and when silence is otherwise observed . the speech - threshold is used to determine when the window contains speech . when the currently - processed window is classified as signal by the classifier engine , and values computed for the ( zero - crossing , energy ) parameter combination are greater than the speech - threshold , a speech - counter is incremented . when a predetermined number of speech windows is encountered ( as determined by observing the speech - counter ), both the silence - counter and the noise - counter are reset . when the state machine is in end_mode , the currently - processed window has been classified as signal , and the values computed for the ( zero - crossing , energy ) parameter combination are less than a silence - threshold , the silence - counter is incremented . when the state machine observes silence returned by the classifier engine and the energy parameter is less than the silence energy - threshold , the silence - counter is incremented . when the state machine observes a continue_utterance return from the classifier engine , the silence - counter and noise - counter are cleared , unless the current { zero - crossing , energy } parameters are less than the silence - threshold set . after each window of audio is classified , the current values in the noise and silence counters are observed , and if the values exceed the pre - configured time - based threshold for maximum combined silence and noise periods , the recording is terminated . to facilitate understanding of the code further , fig3 illustrates a simplified visual “ chain ” model of the operation of the state machine when audio windows are classified . as each audio window is classified , the window is added to one of three classification chains : speech chain , silence chain , or noise chain . all chains are cleared when the number of speech windows received exceeds a first predetermined number ( l 1 ), i . e ., when the speech chain exceeds l 1 windows . the window classification process then continues , allowing the chains to grow once again . if the combination of the silence and noise chains reaches a second predetermined number ( l 2 ), then the end - of - speech command is issued and recording is terminated . in alternative embodiments in accordance with the invention , different classifier engines are used , including classifier engines that examine various attributes of the signal instead of or in addition to the energy and zero - crossing attributes . for example , classifier engines in accordance with the present invention can discriminate between silence and speech using high - order statistics of the signal ; or an algorithm promulgated in itu g . 729 annex b standard , entitled a silence compression scheme for g . 729 optimized for terminals conforming to r ecommendation v . 70 , incorporated herein by reference . although digital , software - driven classifier engines have been described above , digital hardware - based and analogue techniques can be employed to classify the windows . generally , there is no requirement that the classifier engine be limited to using any particular attribute or a particular combination of attributes of the signal , or a specific technique . processes in accordance with the present invention can be practiced on both dedicated hardware and general purpose computing systems controlled by custom program code . fig4 illustrates selected blocks of a general - purpose computer system 400 capable of being configured by such code to perform the process steps in accordance with the invention . in various embodiments , the general purpose computer 400 can be a wintel machine , an apple machine , a unix / linux machine , or a custom - built computer . note that some processes in accordance with the invention can run in real time , on a generic processor ( e . g ., an intel &# 39 ; 386 ), and within a multitasking environment where the processor performs additional tasks . at the heart of the computer 400 lies a processor subsystem 405 , which may include a processor , a cache , a bus controller , and other devices commonly present in processor subsystems . the computer 400 further includes a human interface device 420 that allows a person to control operations of the computer . typically , the human interface device 420 includes a display , a keyboard , and a pointing device , such as a mouse . a memory subsystem 415 is used by the processor subsystem to store the program code during execution , and to store intermediate results that are too bulky for the cache . the memory subsystem 415 can also be used to store digitized voice mail messages prior to transfer of the messages to a mass storage device 410 . a computer telephony ( ct ) subsystem card 425 and a connection 435 tie the computer 400 to a private branch exchange ( pbx ) 402 . the ct card 425 can be an intel ( dialogic ) card such as has already been described above . the pbx 402 is in turn connected to a telephone network to 401 , for example , a public switched telephone network ( pstn ), from which the voice mail messages stored by the computer 400 originate . the program code is initially transferred to the memory subsystem 415 or to the mass storage device 410 from a portable storage unit 440 , which can be a cd drive , a dvd drive , a floppy disk drive , a flash memory reader , or another device used for loading program code into a computer . prior to transfer of the program code to the computer 400 , the code can be embodied on a suitable medium capable of being read by the portable storage unit 440 . for example , the program code can be embodied on a hard drive , a floppy diskette , a cd , a dvd , or any other machine - readable storage medium . alternatively , the program code can be downloaded to the computer 400 , for example , from the internet , an extranet , an intranet , or another network using a communication device , such as a modem or a network card . ( the communication device is not illustrated in fig4 .) finally , a bus 430 provides a communication channel that connects the various components of the computer 400 . in operation , the pbx 402 receives telephone calls from the telephone network 401 and channels them to appropriate telephone extensions 403 . when a particular telephone call is unanswered for a preprogrammed number of rings , the pbx 402 plays a message to the caller , optionally providing the caller with various choices for proceeding . if the caller chooses to leave a message , the call is connected to the ct card 425 , which digitizes the audio signal received from the caller and hands the digitized audio to the processor subsystem 405 in blocks , for example , blocks of 1 , 536 samples ( bytes ). the processor subsystem 405 , which is executing the program code , segments the blocks into windows and writes the windows to the mass storage device 415 . at the same time , the processor subsystem 405 monitors the windows as has been described above with reference to the processes 100 and 200 . when the combination of silence and noise count accumulators reaches a critical value ( l 2 ), the processor subsystem 405 issues terminate recording commands to the ct card 425 and to the pbx 402 , and stops recording the windows to the mass storage device 410 . upon receipt of the terminate recording command , the pbx 402 and the ct card 425 drop the telephone call , disconnecting the caller . the invention can also be practiced in a networked , client / server environment , with the computer 400 being integrated within a networked computer configured to receive , route , answer , and record calls , e . g ., within an integrated pbx , telephone server , or audio processor device . it should be understood that fig4 illustrates many components that are not necessary for performing the processes in accordance with the invention . for example , the inventive processes can be practiced on an appliance - type of computer that boots up and runs the code , without direct user control , interfacing only with a computer telephony subsystem . the above is of course a greatly simplified description of the operation of the hardware that can be used to practice the invention , but a person skilled in the art will no doubt be able to fill - in the details of the configuration and operation of both the hardware and software . this document describes the inventive apparatus , methods , and articles of manufacture for detecting silence in considerable detail for illustration purposes only . neither the specific embodiments and methods of the invention as a whole , nor those of its features limit the general principles underlying the invention . the specific features described herein may be used in some embodiments , but not in others , without departure from the spirit and scope of the invention as set forth . various physical arrangements of components and various step sequences also fall to within the intended scope of the invention . the invention is not limited to the use of specific components , such as the computer telephony cards mentioned above . furthermore , in the description and the appended claims the words “ couple ,” “ connect ,” and similar expressions with their inflectional morphemes do not necessarily import an immediate or direct connection , but include connections through mediate elements within their meaning . it should also be noted that , as used in this document , the words “ counter ” and “ accumulator ” have similar meanings . many additional modifications are intended in the foregoing disclosure , and it will be appreciated by those of ordinary skill in the art that in some instances some features of the invention will be employed in the absence of a corresponding use of other features . the illustrative examples therefore do not define the metes and bounds of the invention and the legal protection afforded the invention , which function is carried out by the claims and their equivalents .