Abstract:
During unfavorable network conditions, a system provides a fallback mode that ensures conversation intelligibility and eliminates dropouts. In the fallback mode, the system uses data retransmission and mitigates retransmission delay by breaking input and output audio into segments for flow control and by involving the users in flow control. On the receive end, when necessary, the system pauses audio output and indicates the pause to the receiving user to inform the receiving user that the pause is a system artifact rather than silence from the transmitting user. On the transmit end, when necessary to avoid accumulation of excessive end-to-end delay, the system suspends audio input and indicates the suspension to the transmitting user to inform the transmitting user that audio input is temporarily being ignored. The transmit end of the system decides when to suspend audio input based on current end-to-end delay, which is continually communicated from the receive end.

Description:
RELATED APPLICATION 
       [0001]    This application claims priority to U.S. Provisional Application No. 61/920,310, filed on Dec. 23, 2013. 
     
    
     TECHNICAL FIELD 
       [0002]    The present disclosure relates to a system for providing intelligible audio conversation over unreliable digital transmission media, in order to allow users to hold a conversation over the digital transmission medium, employing codecs, data transmission protocols, and user interaction techniques. Examples of such technology are mobile telephone calls, VOIP telephone calls, Internet audio chat, and Internet audio/video chat. 
       BACKGROUND 
       [0003]    To handle data transport disruptions, existing systems for providing audio conversation over unreliable transmission media use packet loss mitigation (PLM) techniques that manipulate audio to correct for packet loss or delay. These techniques are appropriate and necessary when used in moderation. However, when overused they can degrade the quality of the audio below the level of intelligibility. 
         [0004]    Examples of PLM Techniques:
       Interpolation—Replace missing portions of audio with interpolated audio. When interpolation is done to excess, the result can be audio that resembles normal speech but really is not.   Slowing down—Replace missing portions of audio with slowed-down audio taken from before or after the missing portion.   Speeding up—Speed up delayed audio to lower the transmission delay.   Changing codecs—Lower the demands on network bandwidth by changing the parameters of the audio codec in use or by switching to a different codec to lower the data rate.   Forward Error Correction—Replicate audio data redundantly in the transmission.       
 
         [0010]    In existing systems, the user experiences unintelligible or missing audio when sufficient data is not delivered over the network in a timely fashion. Importantly, the user has trouble knowing when whole portions of the conversation have been lost. The transmitting user has no way of knowing when his speech has been delivered unintelligibly or not at all, and the listening user often has no way of knowing that some of what he or she should have heard has been deleted by the system. Furthermore, a call can be dropped altogether, and the transmitting user doesn&#39;t become aware for quite a long time that everything he said was deleted. Users often are forced to try to unravel the resulting miscommunication, compounding the problems. 
       SUMMARY 
       [0011]    An exemplary embodiment of the present disclosure provides a system for limiting accumulation of end-to-end delay (EED), which represents a time interval between a time of acceptance of input data from a transmitting user and a time of outputting of the data to a receiving user utilizing a remote system, after transmission of the data over a network. The exemplary system includes a first transmission subsystem (TS) configured to transmit and receive data to and from the remote system over a network. The exemplary system also includes an audio input subsystem (AIS) configured to accept data from a transmitting user and transmit that data to the remote system via the first TS. In addition, the exemplary system includes an input flow-control subsystem (IFCS) configured to continually receive EED updates from the remote system, determine when the EED exceeds a predetermined threshold based on the received EED updates, transmit a stop notification to the AIS when the EED is determined to exceed the threshold, and inform the transmitting user when the stop notification is transmitted to the AIS. The AIS, upon receiving the stop notification, is configured to stop accepting data from the transmitting user. 
         [0012]    An exemplary embodiment of the present disclosure provides a system for limiting accumulation of end-to-end delay (EED), which represents a time interval between a time of acceptance of input data from a transmitting user utilizing a remote system and a time of outputting of the data to a receiving user, after transmission of the data over a network. The exemplary system includes a transmission subsystem (TS) configured to transmit and receive data to and from the remote system and a receiving user over the network. The exemplary system also includes an audio output subsystem configured to receive data from remote system via the TS and to output the received data to the receiving user, calculate, at predetermined intervals, an EED representing a time interval between a time of acceptance of input data from the transmitting user by the remote system and the current time at which the system is outputting the data to the receiving user, generate EED updates of the calculated interval, and transmit the generated EED updates to the remote system via the TS. 
         [0013]    An exemplary embodiment of the present disclosure provides a system including an audio input subsystem (AIS) and an audio output subsystem (AOS) communicating with each other via a transmission subsystem utilizing a reliable message transport protocol (RMTP). During unfavorable network conditions, the system provides a fallback mode that ensures conversation intelligibility and eliminates dropouts. In the fallback mode, the system uses data retransmission and mitigates retransmission delay by breaking input and output audio into segments for flow control and by involving the users in flow control, as follows. On the receive end, when necessary, the system pauses audio output and indicates the pause to the receiving user via auditory or visual cues, informing the receiving user that the pause is a system artifact rather than silence from the transmitting user on the remote system. On the transmit end, when necessary to avoid accumulation of excessive end-to-end delay, the system suspends audio input and indicates the suspension to the transmitting user via auditory or visual cues, informing the transmitting user that audio input is temporarily being ignored. The transmit end of the system decides when to suspend audio input based on the current end-to-end delay, which is continually communicated from the receive end. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0014]      FIG. 1  is a block diagram of a system for limiting the accumulation of end-to-end delay in a communication network, according to an exemplary embodiment of the present disclosure; and 
           [0015]      FIG. 2  is a block diagram of a system for limiting the accumulation of end-to-end delay in a communication network, according to an exemplary embodiment of the present disclosure. 
       
    
    
     DETAILED DESCRIPTION 
       [0016]    The following abbreviations and definitions are used in the description of exemplary embodiments of the present disclosure. 
         [0017]    Abbreviations 
         [0000]    AAQ acceptable audio quality
 
AIS audio input subsystem
 
AOS audio output subsystem
 
EED end-to-end delay
 
PLM packet loss mitigation
 
RMTP reliable message transport protocol
 
         [0018]    Audio Quality &amp; Audio Delay 
         [0019]    Acceptable audio quality (AAQ) is audio quality at or above a certain minimum fidelity. The system always outputs audio to the receiving user&#39;s audio output with AAQ. 
         [0020]    End-to-end delay (EED) is the difference between the time at which an audio sample is output to the receiving user and the time at which the audio sample was input by the transmitting user. According to an exemplary embodiment, EED may represent the calculated time interval between the time of acceptance of input data from a local transmitting user and the time of outputting of the data to a remote user served by a remote system. 
         [0021]    Continuous audio is AAQ delivered to a user continuously and with end-to-end delay (EED) below a certain allowed maximum continuous-audio delay. 
         [0022]    Audio Input and Output Subsystems 
         [0023]    The audio input subsystem (AIS) and audio output subsystem (AOS) portions of the system perform transmit and receive processing (respectively) for audio and for user interaction. The AIS creates audio data from an audio source, such as a microphone, and then transmits it. The AOS receives transmitted audio data, and then outputs it to an audio destination, such as speaker or audio recording function. 
         [0024]    Current Time 
         [0025]    The system relies on being able to query a clock for an approximation of the current time in absolute terms, such as by reference to Universal Coordinated Time. At each end of a conversation, the closer the clocks are to the same standard of absolute time, the better the system will work. 
         [0026]    Reliable Message Transport Protocol 
         [0027]    The system uses a reliable message transport protocol (RMTP) that transports data in a sequence of messages. RMTP uses retransmission as necessary to ensure delivery of all messages. 
         [0028]    At the receive end, RMTP delivers to the client each message when received from the underlying transport layer, in the order it was received from the underlying layer. RMTP assumes that its underlying layers do not reorder received messages. 
         [0029]    At the transmit end, RMTP assigns a sequence number to each message. It is the receive end client&#39;s responsibility to use the message sequence numbers to organize messages received out of sequence into proper sequence. 
         [0030]    The AIS and AOS are clients of RMTP for audio data transport. 
         [0031]    In some cases the AOS will determine that a not-yet-received message is not needed because the AOS is able to construct AAQ without it by using PLM techniques. In such a case the RMTP allows the AOS to tell the RMTP to discard the unnecessary message, and as a result the RMTP will make no further attempts to retransmit it, although retransmission may already be in process. 
         [0032]    For transmitting other types of data such as EED update messages, the system can use RMTP or other reliable transport protocol. 
         [0033]    Audio Output Subsystem 
         [0034]    The AOS has a receive buffer, which holds AAQ audio data. 
         [0035]    The AOS extracts audio data from messages it receives from the RMTP and appends that audio data to its receive buffer, using PLM techniques as appropriate within the constraint that audio in the receive buffer must be AAQ. 
         [0036]    When the time that will be required to output the audio data accumulating in the receive buffer exceeds a certain minimum amount, the AOS begins outputting the audio data from the receive buffer to the audio destination, thus entering outputting mode and starting an output segment 
         [0037]    When the duration of the audio data in the receive buffer falls below a certain duration, the AOS stops outputting audio to the output destination, thus entering paused mode and ending an output segment. 
         [0038]    The AOS is in either outputting mode or paused mode, and under certain conditions the AOS transitions between these two modes to implement output flow control. The AOS indicates its current mode to the user. Indicating paused mode to the user prevents the user from mistaking a lack of audio during paused mode as silence from the transmitting user. The indication of paused mode to the user takes different forms depending on whether paused mode is forced by the receive buffer becoming empty or forced by use of the pause function or hold function in the user interface. 
         [0039]    When the AOS transitions back to outputting mode, under certain conditions the AOS first outputs an amount of audio from the end of the previous output segment, so that the receiving user hears some overlap for context. These conditions are (1) when paused mode has lasted longer than a certain amount of time, or (2) when the most recent audio sample in the output buffer is designated as a cutoff sample. 
         [0040]    The current time at which the AOS outputs an audio sample is its output time. 
         [0041]    While the create time of the audio that the AOS is currently outputting is old enough that the currently outputting audio is delayed more than the amount permitted for continuous audio, the AOS reduces EED by shortening any periods of unimportant audio. Unimportant audio is audio that the system determines is effectively silence or noise and not speech, unless a user has directed the system not to use this feature. 
         [0042]    During outputting mode, when the AOS outputs a cutoff sample, the AOS indicates this fact to the receiving user; this indication to the user informs the user of a point in time when audio input from the remote user was suspended. An appropriate audio indication for such an event might be, for example, a “snip” sound. 
         [0043]    To limit the intrusiveness of output flow control, paused mode has a minimum duration. When transport conditions are bad enough that input flow control is heavily used, the system temporarily raises the minimum duration of paused mode. 
         [0044]    End-To-End Delay Determination 
         [0045]    The AIS creates each audio sample from the input source at a certain current time, which is the create time of that audio sample. The AIS maintains the association between each audio sample and its create time as the audio data travels through the system. 
         [0046]    The end-to-end delay (EED) for an audio sample is the difference in time between the audio sample&#39;s output time and its create time. 
         [0047]    At various times the AOS calculates the EED for the currently outputting audio sample, and sends the EED back to the other end in an EED update message. The AOS sends an EED update message whenever there is a discontinuity in the flow of create times of audio samples as they are output. Useful times for the sending of EED update messages are the first and last audio samples of an output segment and audio samples when the use of PDM techniques disrupts the normal flow of create times of audio samples as they are output. 
         [0048]    Each time the AIS receives an EED update message newer than the most recently received EED update message, it updates an excessive EED (e.g., “input-off” in  FIG. 1 ) boolean signal, setting it to true if the received EED exceeds a certain amount, otherwise setting it to false. 
         [0049]    The system indicates to the user the EED of the received audio data currently being output by the AOS. The system also indicates to the user the EED of the received audio data currently being output by the AOS at the other end of the conversation. 
         [0050]    Alternatively or in addition, the AIS can be configured to use the absence of a communication from the AOS to determine the extent of a delay. 
         [0051]    Audio Input Subsystem 
         [0052]    In listening mode the AIS creates audio data from the audio source, associates the audio data with its create time, and transmits the audio data and create time to the receive end. 
         [0053]    In blocked mode, the AIS does not transmit any audio from the input source to the receive end. 
         [0054]    The AIS is either in listening mode or blocked mode. Under certain conditions, the AIS transitions between these two modes to implement input flow control. The AIS indicates its current mode to the user. Indicating blocked mode to the user dissuades the transmitting user from speaking or creating other audio that will not be delivered. One way in which the AIS indicates blocked mode to the user is by withholding sidetone feedback from the transmitting user. 
         [0055]    When the AIS enters listening mode, the AIS simultaneously starts a begin-listening timer, which is active until it expires. The begin-listening timer is active only while the AIS is in listening mode. 
         [0056]    After the begin-listening timer becomes inactive, if the excessive EED signal is true, the AIS starts a warning timer. The AIS indicates to the user when the warning timer is active, so the user knows that the AIS may soon transition from listening mode to blocked mode. While the warning timer is active, the AIS restarts the warning timer while the user is speaking, to give the user extra time if needed. If the excessive EED signal goes false while the warning timer is active, the AIS cancels the warning timer and restarts the begin-listening timer. When the warning timer expires, the AIS transitions to blocked mode. 
         [0057]    After the AIS has been in blocked mode for a certain amount of time, if the excessive EED signal becomes false, the AIS transitions back into listening mode. 
         [0058]    When the AIS transitions into blocked mode, it designates the last audio sample of the preceding segment of listening mode as a cutoff sample, so that the AOS on the receive end can process it specially. 
         [0059]    To limit the intrusiveness of input flow control, listening mode has a minimum duration, and blocked mode has a minimum duration. When transport conditions are bad enough that output flow control is heavily used, the system temporarily raises minimum duration of listening mode. 
         [0060]    Continuous Audio vs Flow-Controlled Audio 
         [0061]    When the data transport medium is not working well enough to support continuous audio, the AOS employs output flow control so that it can provide AAQ. The imposition of output flow control usually forces the AIS at the other end to implement input flow control. 
         [0062]    While the system is providing continuous audio, neither input flow control nor output flow control is active. The following cascade of events happens when the system departs from providing continuous audio and starts using output flow control: 
         [0000]    1. The AOS notices that audio data flow from the network is not sufficient for it to output continuous audio; therefore,
 
2. the AOS begins output flow control by pausing output, thus breaking up audio output into output segments; as a result,
 
3. the AIS at the other end notices that recent audio it has transmitted has excessive EED; and therefore,
 
4. the AOS begins input flow control by suspending input, thus breaking up audio input from the user into input segments, thus lowering the EED by giving the AOS at the other end time to catch up.
 
         [0063]    After network conditions improve enough for the system to provide continuous audio, (1) the AOS receives sufficient audio data to continue to output audio data indefinitely within an output segment of ever-increasing length, and (2) the excessive EED signal remains false, so the AIS continues indefinitely to take audio input from the user and to transmit it. 
         [0064]    Input Flow Control User Interaction 
         [0065]    When performing input flow control, the AIS proceeds through these steps: 
         [0000]    1. The AIS indicates to the user that it is accepting user audio input and transmitting it;
 
2. while transmitting user audio input, the AIS gives the user a warning indication that the AIS will soon stop accepting audio input from the user;
 
3. the AIS indicates to the user (for an indefinite period) that the AIS is not accepting user audio input;
 
4. the AIS ceases the indication that it is not accepting user audio input and resumes accepting user audio input and transmitting it (back to step 1).
 
         [0066]    The warning indication and “not accepting user input” indications allow the user to know when to speak and when not to speak because his audio input would be ignored. 
         [0067]    Output Flow Control User Interaction 
         [0068]    When performing output flow control, the AOS proceeds through these steps: 
         [0000]    1. the AOS indicates to the user that it is outputting received audio to the receiving user&#39;s output destination;
 
2. the AOS indicates to the user that audio output is paused because reception of audio data from the transmitting user is delayed;
 
3. the AOS ceases the reception-paused indication and resumes the outputting of audio from the transmitting user (back to step 1).
 
         [0069]    When audio output is paused, the indication of this fact to the user makes clear that he is not experiencing a period of silence from the other end and that audio from the other end is not being deleted by the system because of transmission trouble. 
         [0070]    Other User Interaction 
         [0071]    The system affords various types of user interaction that interact with the flow control features of the system. 
         [0072]    The system has a user pause function, which allows the receiving user to direct the system to force the AOS to change from outputting mode to user-paused mode and back. User-paused mode is like paused mode except that the system indicates the mode to the receiving user differently from how it indicates paused mode. The normal mechanisms of the system ensure that the AIS uses blocked mode as necessary so that no transmitted audio is lost while the AOS is in paused mode as directed by the receiving user. 
         [0073]    The system has a user-hold function, which allows a user to direct the system to enter or leave its user-hold mode at his end. If either end of the conversation is in user-hold mode, the conversation is in hold mode. While the system is in hold mode, the system is forced also to be in paused mode. The conversation remains in hold mode until neither user&#39;s end of the conversation is in user-hold mode. The system also has a remote-hold mode, and the system uses messaging to maintain remote-hold mode as a mirror of user-hold mode at the other end. The system indicates user-hold mode and remote-hold mode to the user. The following example shows how the system avoids confusion over user intentions regarding hold: User A initiates user-hold mode, then user B also initiates user-hold mode; then, user A cancels user-hold mode; now (1) user B can see that A is ready for the conversation to leave hold mode, and (2) user A can see that user B is not yet ready for the conversation to leave hold mode; finally, user B cancels user-hold mode, and the conversation leaves hold mode. 
         [0074]    The system allows the user to select from his music own library the audio that he will hear when the AOS is in user-hold mode or remote-hold mode. Thus while the user is on hold he need not ever be subjugated to hold music or other audio transmitted from the other end. 
         [0075]    The system allows a user to direct the AOS to be in perfect reception mode. In perfect reception mode, the AOS waits for all audio data messages in sequence, so that it can deliver accurate audio to the receiving user, avoiding all use of PLM techniques. 
         [0076]    The system allows a user to direct the AOS to be in streaming mode. While the AOS is in streaming mode, the AOS directs the remote AIS to avoid entering blocked mode. 
         [0077]    The system allows a user to direct the AIS to be in uninterrupted mode. While the AIS is in uninterrupted mode, the AIS remains in listening mode. This feature might be called “push-to-talk”. 
         [0078]    The system allows a user to direct the AOS to make a recording of both ends of the conversation; while recording, the AOS uses all received audio data messages for the recording even if it does not use all of them for the audio it outputs to the receiving user&#39;s output destination. In the recorded data, the system stores audio creation time and output time; the system, using additional messaging, also stores data indicating incoming audio messages that were not used in constructing output audio for each end. Thus the recorded data can be later used to reconstruct the conversation from the perspective of either user. Because of the nature of the system, the recorded audio is AAQ. Depending on user settings the recorded audio can be beyond AAQ, i.e., lossless. 
         [0079]    When a user does not answer an incoming call, the system uses its ability to make an AAQ recording so that the caller can leave a voice message that is guaranteed to be intelligible. While the caller is leaving a voice message, the caller end&#39;s AIS buffers audio data as much as possible so that the caller end&#39;s AIS can remain in listening mode. While the caller is leaving a voice message, the system outputs to him a user input control to allow the user to signal the end of the recording. After the voice message audio data has been completely transmitted, the system indicates to the caller that it is OK to hang up. 
         [0080]    The operative features of the present disclosure were described above with regard to the functions performed in the system. It is to be understood that devices in the system such as the AIS, AOS and a device implementing the RMTP transmissions are each implemented by a computer processing device having a processor and a non-transitory computer-readable recording medium (e.g., ROM, hard disk drive, flash memory, optical memory, etc.) that has recorded thereon a computer program that, when executed by the processor, causes the processor to perform the operative features of that device. The processor can be a general-purpose processor (e.g., processors produced by Intel or AMD) configured to execute the computer program tangibly recorded on the non-transitory computer-readable recording medium. Alternatively, the processor can be an application specific processor that is specifically configured to carry out the operative features described herein. 
         [0081]      FIGS. 1 and 2  are block diagrams illustrating various features of exemplary embodiments of the present described above.  FIG. 1  illustrates components of the system for accepting data input from a local transmitting user and transmitting the input data to a remote receiving user.  FIG. 2  illustrates components of the system for receiving data from a remote system and outputting the received data to a local receiving user. The systems of  FIGS. 1 and 2  are for limiting the accumulation of EED. In the exemplary embodiments of  FIGS. 1 and 2 , EED represents the calculated time interval between the time of acceptance of input data from a transmitting user and the time of outputting to a remote user served by a remote system, after transmission of the data over a network (e.g., the Internet). 
         [0082]    In accordance with the exemplary embodiments described above, the exemplary system of  FIG. 1  includes a transmission subsystem (TS) which is configured to transmit/receive data to/from a remote system over a network. The exemplary system also includes an audio input subsystem (AIS) configured to accept data input by a transmitting user served by the local system and to transmit the input data to the remote system via the TS for the benefit of a remote receiving user. In addition, the exemplary system of  FIG. 1  includes an input flow-control subsystem (IFCS). In the illustration of  FIG. 1 , the IFCS is illustrated as being a separate component from the AIS for clarity of illustration. However, it is to be understood that the AIS can perform the functions of the IFCS such that the functions of both the AIS and IFCS are implemented by a common computing entity (e.g., the same computer processing device or component of a computer processing device). The IFCS continually receives (at intervals determined by the remote system) EED updates from the remote system via the TS. The EED updates are transmitted by the AOS as described above. During periods when the EED exceeds a threshold, which is configurable based on a desired user experience with respect to a desired maximum end-to-end delay (e.g., 2 seconds), the IFCS sends a stop notification (input-off signal) to the AIS. When the AIS receives the input-off signal, the AIS does not accept any further data from the local transmitting user for the time being. The IFCS informs the transmitting user as to whether it is sending an input-off signal to the AIS to thereby inform the transmitting user whether additional data will be accepted by the AIS. 
         [0083]    According to an exemplary embodiment, the IFCS is configured to transmit a resume notification to the AIS after the EED is determined to no longer exceed the threshold, while the AIS is not accepting data from the transmitting user after receiving the stop notification. The AIS is configured to resume accepting input data from the transmitting user upon receiving the resume notification. The IFCS informs the transmitting user when the resume notification is transmitted to the AIS. According to another exemplary embodiment, the IFCS is configured to cease transmitting the stop notification to the AIS after the EED is determined to no longer exceed the threshold, while the AIS is not accepting data from the transmitting user after receiving the stop notification. The AIS is configured to resume accepting input data from the transmitting user upon the IFCS ceasing transmission of the stop notification, and the IFCS informs the transmitting user when transmission of the stop notification to the AIS ceases. 
         [0084]      FIG. 2  represents an exemplary embodiment of the receive side of the system of the present disclosure. Similar to  FIG. 1 , the system of  FIG. 2  includes a transmission subsystem (TS) which is a communicative interface to a remote system via an external network (e.g., the Internet). The TS of  FIG. 2  is configured to transmit/receive data to/from the remote system over the network. The system of  FIG. 2  includes an AOS in accordance with the exemplary embodiments described above. The AOS is configured to receive data from the remote system via the TS, and to output the received data to a receiving user local to the system of  FIG. 2 . The AOS also continually calculates (e.g., every 200 milliseconds) the interval between the current time and the acceptance time associated with the data being output to the receiving user. According to an exemplary embodiment, the acceptance time can be defined as the time when the audio-video device of the (remote) transmitting user (e.g., the user&#39;s computer) accepted the data that is currently being output to the receiving user by the AOS. The AOS continually (e.g., at regular intervals such as every 200 milliseconds) transmits EED update notifications to the remote system via the TS. The EED update notifications are transmitted to and continuously received by the TS of  FIG. 1  in accordance with the exemplary embodiment described above. 
         [0085]    It will be appreciated by those skilled in the art that the present invention can be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The presently disclosed embodiments are therefore considered in all respects to be illustrative and not restricted. For example, the foregoing features of the present disclosure can be applied to multiple user conversations (e.g., three or more users) as well as to two-person conversations.