Abstract:
An acoustic echo cancellation system including a record queue operative to receive at least one audio input unit, a playback queue operative to receive at least one audio output unit, an acoustic echo canceller, and synchronization control apparatus operative to retrieve the audio input unit form the record queue and the audio output unit from the playback queue, and simultaneously provide the retrieved units to the acoustic echo canceller for acoustic echo cancellation thereat.

Description:
FIELD OF INVENTION  
         [0001]    The present invention relates to voice communications systems in general, and more particularly to acoustic echo cancellation in computer network telephony systems.  
         BACKGROUND OF THE INVENTION  
         [0002]    One well-known type of echo in voice communications systems, acoustic echo, is caused by acoustic coupling between the microphone and speaker of a telephone or network telephony enabled personal computer (PC), where speaker output is received by the microphone as input and retransmitted back to the transmission source. Known acoustic echo cancellation techniques detect acoustic echo and subtract it from the microphone input at an acoustic echo canceller (AEC). ABCs typically require the speaker output signal and the microphone input signal to be input in a time-synchronized fashion, with the acoustic echo signature offset from the speaker output signal by a time delay due to the time required for the speaker output to travel to the microphone. The AEC adjusts for the time delay and subtracts the echo from the input signal. The AEC can also adjust for minor shifts in the time delay due to minor changes in the acoustic environment, such as when the position of the microphone changes relative to the position of the speaker.  
           [0003]    AECs are typically implemented as embedded systems built specifically to provide acoustic echo cancellation, employing dedicated hardware, such as digital signal processors (DSP), and a real-time operating system (RTOS). While a PC processor and operating system may be used to provide acoustic echo cancellation, PCs are typically designed for multitasking, non-real-time applications, with multiple applications concurrently vying for shared resources, and are thus ill-suited to provide the time-synchronized inputs required by an AEC. A PC&#39;s speakers and microphone are both connected to the PC&#39;s sound card, yet they typically operate independently. In order to ensure audio output that is as continuous as possible, the playback thread that feeds the speakers receives very high priority from the operating system. In contrast, continuous recording cannot typically be achieved as recording receives a much lower priority from the operating system, and this cannot usually be controlled at the application level. Such disparity often results in the speaker&#39;s output stream being received by the AEC more frequently and regularly than the microphone&#39;s input buffer, resulting in non-time-synchronized input to the AEC, as well as lost input due to buffer overflow. While ABCs are generally configured to buffer the speaker&#39;s output stream and the microphone&#39;s input buffer until they have a sufficient portion of each in order to perform the time delay adjustment and echo subtraction, lost input in one stream relative to the other causes relatively large shifts in the time delay to which AECs adapt poorly.  
         SUMMARY OF THE INVENTION  
         [0004]    The present invention seeks to provide non-embedded acoustic echo cancellation for use in computer network telephony systems whereby lost input in the record stream relative to the playback stream, and vice versa, is compensated for prior to performing acoustic echo cancellation. The present invention thus avoids relatively large shifts in the time delay between record and playback streams without requiring modification at the AEC.  
           [0005]    There is thus provided in accordance with a preferred embodiment of the present invention an acoustic echo cancellation system including a record queue operative to receive at least one audio input unit, a playback queue operative to receive at least one audio output unit an acoustic echo canceller, and synchronization control apparatus operative to retrieve the audio input unit from the record queue and the audio output unit from the playback queue, and simultaneously provide the retrieved units to the acoustic echo canceller for acoustic echo cancellation thereat.  
           [0006]    Further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to perform the retrieval and the simultaneous provision in response to the playback queue receiving the audio output unit.  
           [0007]    Still further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to perform the retrieval and the simultaneous provision in response to the playback queue receiving the audio output unit provided the record queue is non-empty.  
           [0008]    Additionally in accordance with a preferred embodiment of the present invention the system further includes an audio output unit counter, and the synchronization control apparatus is additionally operative in response to the playback queue receiving the audio output unit to increment the audio output unit counter, and decrement the audio output unit counter when the audio output unit is retrieved from the playback queue.  
           [0009]    Moreover in accordance with a preferred embodiment of the present invention the synchronization control apparatus is additionally operative upon the record queue becoming empty to compare the current minimum value of the counter with at least one previous minimum value of the counter when the record queue previously became empty, and if the current minimum value is greater than the previous minimum value, erase at least one of the audio output units from the playback queue.  
           [0010]    Further in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases a number of the audio output units from the playback queue not exceeding the difference between the current minimum value and the previous minimum value.  
           [0011]    Still further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to decrement the counter by the number of the audio output units erased from the playback queue.  
           [0012]    Additionally in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to set a new previous minimum value equal to the current minimum value.  
           [0013]    Moreover in accordance with a preferred embodiment of the present invention the synchronization control apparatus is additionally operative upon the record queue becoming empty to compare a series of current minimum values of the counter with at least one previous minimum value of the counter when the record queue previously became empty, and if each of the current minimum values is greater than the previous minimum value, erase at least one of the audio output units from the playback queue.  
           [0014]    Further in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases a number of the audio output units from the playback queue not exceeding the difference between the lesser of the current minimum values and the previous minimum value.  
           [0015]    Still further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to decrement the counter by the number of the audio output units erased from the playback queue.  
           [0016]    Additionally in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to set a new previous minimum value equal to the lesser of the current minimum values.  
           [0017]    Moreover in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative upon the playback queue becoming empty and the record queue being non-empty to erase at least one of the audio input units from the record queue.  
           [0018]    Further in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases all of the audio input units from the record queue.  
           [0019]    Still further in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases provided the playback queue is empty on a plurality of occasions.  
           [0020]    Additionally in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases provided the playback queue is empty for a predefined period of time.  
           [0021]    There is also provided in accordance with a preferred embodiment of the present invention a method of acoustic echo cancellation including receiving at least one audio input unit at a record queue, receiving at least one audio output unit at a playback queue, retrieving the audio input unit from the record queue and the audio output unit from the playback queue, and simultaneously providing the retrieved units to an acoustic echo canceller for acoustic echo cancellation thereat.  
           [0022]    Further in accordance with a preferred embodiment of the present invention the simultaneously providing step includes simultaneously providing in response to the playback queue receiving the audio output unit.  
           [0023]    Still further in accordance with a preferred embodiment of the present invention the simultaneously providing step includes simultaneously providing in response to the playback queue receiving the audio output unit provided the record queue is non-empty.  
           [0024]    Additionally in accordance with a preferred embodiment of the present invention the method further includes incrementing an audio output unit counter in response to the playback queue receiving the audio output unit, and decrementing the audio output unit counter when the audio output unit is retrieved from the playback queue.  
           [0025]    Moreover in accordance with a preferred embodiment of the present invention the method further includes comparing, upon the record queue becoming empty, the current minimum value of the counter with at least one previous minimum value of the counter when the record queue previously became empty, and erasing, if the current minimum value is greater than the previous minimum value, at least one of the audio output units from the playback queue.  
           [0026]    Further in accordance with a preferred embodiment of the present invention the erasing step includes erasing a number of the audio output units from the playback queue not exceeding the difference between the current minimum value and the previous minimum value.  
           [0027]    Still further in accordance with a preferred embodiment of the present invention the method further includes decrementing the counter by the number of the audio output units erased from the playback queue.  
           [0028]    Additionally in accordance with a preferred embodiment of the present invention the method further includes setting a new previous minimum value equal to the current minimum value.  
           [0029]    Moreover in accordance with a preferred embodiment of the present invention the synchronization control apparatus is additionally operative upon the record queue becoming empty to comparing, upon the record queue becoming empty, a series of current minimum values of the counter with at least one previous minimum value of the counter when the record queue previously became empty, and erasing, if each of the current minimum value is greater than the previous minimum value, at least one of the audio output units from the playback queue.  
           [0030]    Further in accordance with a preferred embodiment of the present invention the erasing step includes erasing a number of the audio output units from the playback queue not exceeding the difference between the lesser of the current minimum values and the previous minimum value.  
           [0031]    Still further in accordance with a preferred embodiment of the present invention the method further includes decrementing the counter by the number of the audio output units erased from the playback queue.  
           [0032]    Additionally in accordance with a preferred embodiment of the present invention the method further includes setting a new previous minimum value equal to the lesser of the current minimum values.  
           [0033]    Moreover in accordance with a preferred embodiment of the present invention the method further includes erasing at least one of the audio input units from the record queue upon the playback queue becoming empty and the record queue being non-empty.  
           [0034]    Further in accordance with a preferred embodiment of the present invention the erasing step includes erasing all of the audio input units from the record queue.  
           [0035]    Still further in accordance with a preferred embodiment of the present invention the erasing step includes erasing provided the playback queue is empty on a plurality of occasions.  
           [0036]    Additionally in accordance with a preferred embodiment of the present invention the erasing step includes erasing provided the playback queue is empty for a predefined period of time.  
           [0037]    Moreover in accordance with a preferred embodiment of the present invention the method further includes at the first instance where at least one audio input unit is detected in the record queue and at least one audio output unit is detected in the playback queue, if there is a difference between the number of the units in each of the queues, removing at least one of the units from either of the queues until both of the queues have the same number of the units.  
           [0038]    Further in accordance with a preferred embodiment of the present invention the removing step includes removing if the difference between the number of the units in each of the queues exceeds a predefined threshold.  
           [0039]    Still further in accordance with a preferred embodiment of the present invention the method further includes at the first instance where at least one audio input unit is detected in the record queue and at least one audio output unit is detected in the playback queue, if there is a difference between the number of the units in each of the queues, removing at least one of the units from either of the queues until the difference between the number of the units in each of the queues does not exceed a predefined threshold.  
           [0040]    Additionally in accordance with a preferred embodiment of the present invention the removing step includes removing if the difference between the number of the units in each of the queues exceeds a predefined threshold.  
           [0041]    Moreover in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to perform the retrieval and the simultaneous provision in response to the record queue receiving the audio input unit.  
           [0042]    Further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to perform the retrieval and the simultaneous provision in response to the record queue receiving the audio input unit provided the playback queue is non-empty.  
           [0043]    Still further in accordance with a preferred embodiment of the present invention the system further includes an audio input unit counter, and the synchronization control apparatus is additionally operative in response to the record queue receiving the audio input unit to increment the audio input unit counter, and decrement the audio input unit counter when the audio input unit is retrieved from the record queue.  
           [0044]    Additionally in accordance with a preferred embodiment of the present invention the synchronization control apparatus is additionally operative upon the playback queue becoming empty to compare the current minimum value of the counter with at least one previous minimum value of the counter when the playback queue previously became empty, and if the current minimum value is greater than the previous minimum value, erase at least one of the audio input units from the record queue.  
           [0045]    Moreover in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases a number of the audio input units from the record queue not exceeding the difference between the current minimum value and the previous minimum value.  
           [0046]    Further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to decrement the counter by the number of the audio input units erased from the record queue.  
           [0047]    Still further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to set a new previous minimum value equal to the current minimum value.  
           [0048]    Additionally in accordance with a preferred embodiment of the present invention the synchronization control apparatus is additionally operative upon the playback queue becoming empty to compare a series of current minimum values of the counter with at least one previous minimum value of the counter when the playback queue previously became empty, and if each of the current minimum values is greater than the previous minimum value, erase at least one of the audio input units from the record queue.  
           [0049]    Moreover in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases a number of the audio input units from the record queue not exceeding the difference between the lesser of the current minimum values and the previous minimum value.  
           [0050]    Further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to decrement the counter by the number of the audio input units erased from the record queue.  
           [0051]    Still further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative to set a new previous minimum value equal to the lesser of the current minimum values.  
           [0052]    Additionally in accordance with a preferred embodiment of the present invention the synchronization control apparatus is operative upon the record queue becoming empty and the playback queue being non-empty to erase at least one of the audio output units from the playback queue.  
           [0053]    Moreover in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases all of the audio output units from the playback queue.  
           [0054]    Further in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases provided the record queue is empty on a plurality of occasions.  
           [0055]    Still further in accordance with a preferred embodiment of the present invention the synchronization control apparatus erases provided the record queue is empty for a predefined period of time.  
           [0056]    Additionally in accordance with a preferred embodiment of the present invention the simultaneously providing step includes simultaneously providing in response to the record queue receiving the audio input unit.  
           [0057]    Moreover in accordance with a preferred embodiment of the present invention the simultaneously providing step includes simultaneously providing in response to the record queue receiving the audio input unit provided the playback queue is non-empty.  
           [0058]    Further in accordance with a preferred embodiment of the present invention the method further includes incrementing an audio input unit counter in response to the record queue receiving the audio input unit, and decrementing the audio input unit counter when the audio input unit is retrieved from the record queue.  
           [0059]    Still further in accordance with a preferred embodiment of the present invention the method further includes comparing, upon the playback queue becoming empty, the current minimum value of the counter with at least one previous minimum value of the counter when the playback queue previously became empty, and erasing, if the current minimum value is greater than the previous minimum value, at least one of the audio input units from the record queue.  
           [0060]    Additionally in accordance with a preferred embodiment of the present invention the erasing step includes erasing a number of the audio input units from the record queue not exceeding the difference between the current minimum value and the previous minimum value.  
           [0061]    Moreover in accordance with a preferred embodiment of the present invention the method further includes decrementing the counter by the number of the audio input units erased from the record queue.  
           [0062]    Further in accordance with a preferred embodiment of the present invention the method further includes setting a new previous minimum value equal to the current minimum value.  
           [0063]    Still further in accordance with a preferred embodiment of the present invention the synchronization control apparatus is additionally operative upon the playback queue becoming empty to comparing, upon the playback queue becoming empty, a series of current minimum values of the counter with at least one previous minimum value of the counter when the playback queue previously became empty, and erasing, if each of the current minimum value is greater than the previous minimum value, at least one of the audio input units from the record queue.  
           [0064]    Additionally in accordance with a preferred embodiment of the present invention the erasing step includes erasing a number of the audio input units from the record queue not exceeding the difference between the lesser of the current minimum values and the previous minimum value.  
           [0065]    Moreover in accordance with a preferred embodiment of the present invention the method ether includes decrementing the counter by the number of the audio input units erased from the record queue.  
           [0066]    Further in accordance with a preferred embodiment of the present invention the method further includes setting a new previous minimum value equal to the lesser of the current minimum values.  
           [0067]    Still further in accordance with a preferred embodiment of the present invention the method further includes erasing at least one of the audio output units from the playback queue upon the record queue becoming empty and the playback queue being non-empty.  
           [0068]    Additionally in accordance with a preferred embodiment of the present invention the erasing step includes erasing all of the audio output units from the playback queue.  
           [0069]    Moreover in accordance with a preferred embodiment of the present invention the erasing step includes erasing provided the record queue is empty on a plurality of occasions.  
           [0070]    Further in accordance with a preferred embodiment of the present invention the erasing step includes erasing provided the record queue is empty for a predefined period of time.  
           [0071]    Still further in accordance with a preferred embodiment of the present invention the method further includes at the first instance where at least one audio output unit is detected in the playback queue and at least one audio input unit is detected in the record queue, if there is a difference between the number of the units in each of the queues, removing at least one of the units from either of the queues until both of the queues have the same number of the units.  
           [0072]    Additionally in accordance with a preferred embodiment of the present invention the removing step includes removing if the difference between the number of the units in each of the queues exceeds a predefined threshold.  
           [0073]    Moreover in accordance with a preferred embodiment of the present invention the method further includes at the first instance where at least one audio output unit is detected in the playback queue and at least one audio input unit is detected in the record queue, if there is a difference between the number of the units in each of the queues, removing at least one of the units from either of the queues until the difference between the number of the units in each of the queues does not exceed a predefined threshold.  
           [0074]    Further in accordance with a preferred embodiment of the present invention the removing step includes removing if the difference between the number of the units in each of the queues exceeds a predefined threshold.  
           [0075]    The disclosures of all patents, patent applications, and other publications mentioned in this specification and of the patents, patent applications, and other publications cited therein are hereby incorporated by reference. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0076]    The present invention will be understood and appreciated more fully from the following detailed description taken in conjunction with the appended drawings in which:  
         [0077]    [0077]FIG. 1 is a simplified block diagram of an acoustic echo cancellation system, constructed and operative in accordance with a preferred embodiment of the present invention;  
         [0078]    [0078]FIGS. 2A, 2B,  2 C, and  2 D, taken together, are a simplified flowchart illusion of a method of operation of the system of FIG. 1 at steady state, operative in accordance with a preferred embodiment of the present invention;  
         [0079]    [0079]FIG. 3 is a simplified flowchart illustration of an exemplary method of initializing the system of FIG. 1, operative in accordance with a preferred embodiment of the present invention;  
         [0080]    [0080]FIG. 4 is a simplified block diagram of an acoustic echo cancellation system, constructed and operative in accordance with a preferred embodiment of the present invention; and  
         [0081]    [0081]FIGS. 5A, 5B,  5 C, and  5 D, taken together, are a simplified flowchart illustration of a method of operation of the system of FIG. 4 at steady state, operative in accordance with a preferred embodiment of the present invention. 
     
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS  
       [0082]    Reference is now made to FIG. 1, which is a simplified block diagram of an acoustic echo cancellation system, constructed and operative in accordance with a preferred embodiment of the present invention. A record stream  10  and a playback stream  12  are shown in communication with a network  14 , such as the Internet. Record stream  10  and playback stream  12  may be implemented concurrently as separate sub-applications within the context of a single voice-over-internet-protocol (VoIP) software client using conventional techniques on a personal computer having a multitasking operating system, such as Microsoft Windows 2000™.  
         [0083]    Record stream  10  receives audio input units from an audio input device  16 , such as microphone connected to a sound card, typically in the form of audio packets or frames of a set configuration, such as 320-byte units representing 20 ms of audio sampling at an 8 KHz sampling rate with 16 bits per sample. Playback stream  12  receives audio output units from network  14  which are typically identical in configuration to the audio input units with respect to sampling and duration. Playback stream  12  forwards audio output units received from network  14  for output at an audio output device  18 , such as a speaker connected to a sound card, using conventional techniques.  
         [0084]    Record stream  10  includes a record queue  20 , into which audio input units received from audio input device  16  are queued, a playback queue  22 , into which audio output units received from playback stream  12  are queued, and synchronization apparatus  24 , which retrieves audio input units from record queue  20  and audio output units from playback queue  22 , and provides them to an acoustic echo canceller  26 , which performs acoustic echo cancellation using any conventional technique.  
         [0085]    Playback stream  12  also includes queuing and notification apparatus  28  which provides audio output units received from network  14  to playback queue  22 , and notifies synchronization apparatus  24  of the arrival of each audio output unit at playback queue  22 .  
         [0086]    Reference is now made to FIGS. 2A, 2B,  2 C, and  2 D, which, taken together, are a simplified flowchart illustration of an exemplary method of operation of the system of FIG. 1 at steady state, operative in accordance with a preferred embodiment of the present invention. Referring particularly to the method of FIG. 2A, as each audio output unit arrives at playback stream  12  from network  14  (step  200 ) queuing and notification apparatus  28  places a copy of the audio output unit into playback queue  22  (step  202 ) and notifies synchronization apparatus  24  of the arrival of the output unit at playback queue  22  (step  204 ). A counter, typically maintained within the context of record stream  10 , is then incremented by synchronization apparatus  24  to reflect the addition of one more audio output unit to playback queue  22  (step  206 ), Synchronization apparatus  24  then checks record queue  20  for the presence of any previously queued audio input units (step  208 ). If record queue  20  is empty, then the counter is evaluated in the manner described in greater detail hereinbelow with reference to FIG. 2C (step  210 ). If record queue  20  is non-empty, synchronization apparatus  24  checks playback queue  22  for the presence of any previously queued audio output units (step  212 ). If playback queue  22  is empty, then record queue  20  is evaluated in the manner described in greater detail hereinbelow with reference to FIG. 2D (step  214 ).  
         [0087]    Once it is determined that both record queue  20  and playback queue  22  are non-empty, synchronization apparatus  24  retrieves one audio input unit from record queue  20  (step  216 ) and one audio output unit from playback queue  22  (step  218 ) and provides them to acoustic echo canceller  26  for echo cancellation thereat in accordance with conventional techniques (step  220 ). The counter is then decremented by synchronization apparatus  24  to reflect the removal of the audio output unit from playback queue  22  (step  222 ), and processing continues with step  208 .  
         [0088]    Referring now to the method of FIG. 2B, as each audio input unit arrives at record stream  10  (step  230 ) it is placed in record queue  20  (step  232 ).  
         [0089]    Referring now to the method of FIG. 2C, which describes in greater detail a method for carrying out step  210  above, when record queue  20  becomes empty, the value of the counter referred to in step  206  above is said to reach a “minimum” value. The current minimum counter value is then compared with the previous minimum value the counter had when record queue  20  last became empty (step  240 ). If the current counter minimum is greater than the counter&#39;s previous minimum value, then one or more audio output units are erased from playback queue  22  to the extent of the difference between the current minimum and the previous minimum (i.e., (current counter−previous minimum) audio output units are removed) (step  242 ). The counter is then decremented by the number of audio output units erased from playback queue  22  (step  244 ), and then current minimum is set equal to the counter (step  246 ). Alternatively, the counter is not decremented, and a new minimum is set according to the current minimum. Processing may then continue with step  200  (FIG. 2A).  
         [0090]    Step  240  may be modified such that once it is detected that the current minimum is greater than the previous minimum, then one or more subsequent minimum counter values may be evaluated, and steps  242 - 246  may be performed only if the series of minimum counter values are all higher than the previous minimum, with the lesser of the series of minimum counter values used as the current minimum. Should any minimum in the series return to the previous minimum, or dip below the previous minimum, then steps  242 - 246  are not performed.  
         [0091]    Referring now to the method of FIG. 2D, which describes in greater detail a preferred method for carrying out step  214  above, when it is detected that playback queue  22  is empty while record queue  20  is non-empty, steps  200 - 214  (FIG. 2A) may be performed for a predefined number of additional iterations or for a predefined period of time (step  250 ). If playback queue  22  is empty while record queue  20  is non-empty after a predefined number of iterations, or for a predefined period of time, (step  252 ), then one or more, and preferably all, of the audio input units are erased from record queue  20  (step  254 ), and processing may continue with step  200  (FIG. 2A).  
         [0092]    Reference is now made to FIG. 3, which is a simplified flowchart illustration of an exemplary method of initializing the system of FIG. 1, operative in accordance with a preferred embodiment of the present invention. In the method of FIG. 3, record stream  10  and playback stream  12  are instructed to begin placing audio input units into record queue  20  and audio output units into playback queue  22  respectively (step  300 ). At the first instance where at least one audio input unit is detected in record queue  20  (step  302 ) and at least one audio output unit is detected in playback queue  22  (step  304 ), if there is a difference between the number of units in each queue, or if the difference between the number of units in each queue exceeds a predefined threshold (step  306 ), then one or more units may be removed from one or both queues, either until both queues have the same number of units or until the difference between the number of units in each queue does not exceed the predefined threshold (step  308 ), and processing may continue with step  200  (FIG. 2A).  
         [0093]    Reference is now made to FIG. 4, which is a simplified block diagram of an acoustic echo cancellation system, constructed and operative in accordance with a preferred embodiment of the present invention, and additionally to FIGS. 5A, 5B,  5 C, and  5 D, which, taken together, are a simplified flowchart illustration of an exemplary method of operation of the system of FIG. 4 at steady state, operative in accordance with a preferred embodiment of the present invention. It is appreciated that the system of FIG. 1 and the methods of FIGS. 2A, 2B,  2 C,  2 D, and  3  may be implemented such that, instead of maintaining a counter to reflect the number of audio output units in playback queue  22 , a counter is maintained to reflect the number of audio input units in record queue  20 . In this embodiment, shown in FIG. 4, record queue monitoring apparatus  30  is provided, typically being implemented within the context of record stream  10 , and is responsible for placing audio input units into record queue  20 , or detecting the arrival of audio input units into record queue  20 , and notifying synchronization apparatus  24  to increment the audio input unit counter. The methods of FIGS. 5A, 5B,  5 C, and  5 D, therefore, apply these principles to the methods of FIGS. 2A, 2B,  2 C, and  2 D, where references to record queue  20  and playback queue  22  are switched, and references to audio input units and audio output units are switched. Likewise, the method of FIG. 3 may be applied to the system of FIG. 4 and the methods of FIGS. 5A, 5B,  5 C,  5 D, with processing continuing after step  308  (FIG. 3) with step  500  (FIG. 5A).  
         [0094]    It is appreciated that one or more steps of any of the methods described herein may be implemented in a different order than that shown while not departing from the spirit and scope of the invention.  
         [0095]    While the present invention may or may not have been described with reference to specific hardware or software, the present invention has been described in a manner sufficient to enable persons having ordinary skill in the art to readily adapt commercially available hardware and software as may be needed to reduce any of the embodiments of the present invention to practice without undue experimentation and using conventional techniques.  
         [0096]    While the present invention has been described with reference to one or more specific embodiments, the description is intended to be illustrative of the invention as a whole and is not to be construed as limiting the invention to the embodiments shown. It is appreciated that various modifications may occur to those skilled in the art that, while not specifically shown herein, are nevertheless within the true spirit and scope of the invention.