Patent ID: 12250340

DETAILED DESCRIPTION

The present specification generally relates to an electronic communications system providing electronic communications services (e.g., voice telephone calls, short message service or SMS messages, text-image-video-audio messages, general data communications, etc.). The communications system includes communication devices having VoIP telephone numbers. Further, each VoIP telephone number may be associated with one or more of the communications devices. While certain infrastructure may not operate under Internet Protocol (IP) (e.g., public switched telephone networks (PSTNs), cellular base station networks, etc.), communications are routed to and from such infrastructure using IP to the extent possible. The present specification also generally relates to providing communications services to communication devices where feedback control, and in particular, PID control is used to manage the audio quality of voice calls between the communication devices. Other aspects of the present invention will also become apparent in light of the following detailed description.

Proportional Integral Derivative (PID) control is most commonly used in industrial applications to stabilize the behavior of machines. However, PID control have also been used to maximize available bandwidth of a datagram-based network as shown in U.S. Pat. No. 9,185,043 (U.S. '043) entitled “Telecommunications Protocol with PID Control of Data Transmission” by inventor Robert Cousions dated Nov. 10, 2015. The computer data transmission systems and methods of U.S. '043 appears to use PID control to maximize the data transmission rate by manipulating the Inter-datagram Delay. It may be advantageous to improve the communication services of VoIP telephone calls based on PID control.

FIG.1is a block diagram of an example communications system100which provides communications services and utilizes feedback control to manage the voice quality of telephone calls. The communications system100includes a plurality of networks, including a mobile network20, a wireless local-area network (WLAN)22, a wide-area internet protocol (IP) network24, and a public-switched telephone network (PSTN)34providing network communications between a plurality of communications devices, such as mobile communications devices30, and fixed communications devices32. The communications system100also includes a Voice over Internet Protocol (VoIP) service40and a communications routing system42to manage communications in the communications system100.

The mobile network20may be a wireless cellular network that operates under one or more known standards and technologies, such as Long Term Evolution (LTE), Worldwide Interoperability for Microwave Access (WiMAX), Enhanced Voice-Data Optimized (EVDO), Code Division Multiple Access (CDMA), HSPA (High Speed Packet Access), and similar. The mobile network20provides mobile network communications services, such as voice, data, and SMS services.

The WLAN22generally provides wireless network communication services and may operate under wireless local-area network standards and technologies, such as IEEE 802.11.

The mobile network20and the WLAN22each connect to the wide-area IP network24, such as the Internet. The WLAN22can be connected to the wide-area IP network24by an Internet service provider (ISP) or the similar entity (not shown). The mobile network20can be connected to the wide-area IP network24by a packet data interface. For clarity of illustration, whileFIG.1has lines showing communication between certain parts of the communications system100, the various components (such as WLAN22via ISP and/or mobile network20) connected to the wide-area IP network24may be configured to communicate with each other. Further, some parts of the communications system100are not shown to enhance clarity.

The mobile communications devices30are generally configured to connect to one or more of the networks to provide communications. For example, the mobile communications devices30can connect to the mobile network20, for example via base stations and other infrastructure. The mobile communications devices30may further connect to the WLAN22, via access points or similar. Examples of suitable mobile communications devices30include devices such as cellular telephones, smartphones, tablet computers, and the like that are provided with wireless communications interfaces suitable for the particular technologies used in the mobile network20and the WLAN22. For sake of discussion it is assumed that all of the mobile communications devices30can connect to the mobile network20and WLAN22. In particular, the mobile communications devices30may be simultaneously connected to both the mobile network20and the WLAN22. While the mobile network20may generally provide a better performing data channel than the WLAN22for voice calls, the WLAN22may provide the data channel free of charge to users. In various implementations, different mobile communications devices have different types of wireless communications interfaces, different configurations, and/or different access rights suitable for connection to different mobile networks and different WLANs.

The fixed communications devices30are generally configured to connect to the WLAN22, for example via a router or wired access point. The fixed communications devices30are generally stationary or relatively fixed and may include, for example, desktop computers, laptop or wi-fi only devices, servers, or similar. For clarity, the term communications devices30,32may mean mobile communications devices30and/or fixed communications devices32, as applicable.

The PSTN34supports a plurality of landline telephones and additional mobile networks (not shown). For example, the PSTN34may connect additional mobile networks having the same or similar features of the mobile network20which are operated by different carriers and/or operated according to different technologies and standards as compared to the mobile network20. For clarity, the mobile communications devices30connected to the mobile network20may also initiate or receive voice calls directly from the PSTN34via the mobile network20. Further, such voice calls, for example, may be via GSM (Global System for Mobile communication) from the mobile network20. For convenience, such voice calls via the mobile network20in this disclosure are referred to as via a “voice channel”. This is in contrast to VoIP voice calls using a “data channel” of the mobile network20such as the Packet Data Channel of GPRS (General Packet Radio Service).

The VoIP service40is generally configured to manage IP data streams related to VoIP communications services (for example, routing the IP data stream from communications devices30,32to other communications devices30,32). That is, VoIP calls are streamed through the VoIP service40. The VoIP service40thus interfaces with the wide-area IP network24, the mobile network20and the PSTN34(and, as applicable, additional mobile networks) to manage VoIP calls. The VoIP service40may operate using one or more protocols, such as the Session Initiation Protocol (SIP), and one or more audio codecs, such as Opus. In particular, the VoIP service40may be configured to transcode IP data streams to be compatible with different networks (e.g., between the mobile network20and the PSTN34). In some implementations, the VoIP service may be a subcomponent of the mobile network20. In the present example communications system100, the VoIP service40may act as a central point where digital audio streams of telephone calls are handled and handed off between endpoint communication devices30,32and/or endpoint communication devices outside of the communications system100.

The communications system100further includes the communications routing system42connected to the VoIP service40and the mobile network20via the wide-area IP network24. In some implementations, the VoIP service40is directly connected to the communications routing system42via a local IP network distinct from the wide-area IP network24. The communications routing system42is configured to direct the routing of communications of disparate types between mobile communications devices30via the mobile network20and/or the WLAN22, and further with communications devices (including landlines) of the PSTN34and additional mobile networks as needed.

The communications routing system42may include one or more databases to manage associations between account identifiers, device identifiers, mobile directory numbers, a log of communications events, and the like. The communications routing system42further includes a routing engine configured to respond to incoming communications events, route data communications, initiate and end voice calls, and communicate SMS messages. The communications routing system42may also include a plurality of servers to interface with the VoIP service40and the mobile network20, as well as a load balancer to balance requests from the communications devices among the servers. The communications routing system42may also include other components, including switches, billing systems, routing engines, and the like, to facilitate the functionality performed by the communications routing system42.

As will be appreciated, the communications system100may include other components to improve and facilitate communications in the communications system100. For example, the communications system100may include a push notification service to push notifications of communications events to destination communications devices. The communications system100may include a proxy configured to handle VoIP call handoffs and to prioritize communications events associated with emergency calls (e.g., as an alternative to the communications routing system42handling such). The communications system100may include an interoperation service connecting the communications routing system42to the mobile network20via the wide-area IP network24to interface with the mobile network20and to facilitate data communications between the communications routing system42and the mobile network20. The communications system100may include a quality of service server to determine the performance of data channels, implemented, for example as a standalone component, or as a subcomponent of another component, such as the VoIP service40or the communications routing system42. The communications system100may further include an advertising server, for example operated by one or more intermediaries, to obtain and display advertisements at communications devices30,32.

An outgoing voice call from a communications device30,32may be conducted as follows. The communications device30,32sends a call request to the VoIP service40via the WLAN22, if connected, or otherwise via the mobile network20. If the destination device is on the PSTN34, the VoIP service40completes the call via the PSTN34. The VoIP service40may additionally notify the communications routing system42of the call request, call initiation, and call termination. The outgoing voice call event may then be recorded in the associated account data in the communications routing system42so that it may be synchronized with the client programs on other communications devices30,32associated with an account identifier of the account data.

An incoming voice calls may also arrive at the VoIP service40via the mobile network20or the WLAN22. The VoIP service40notifies the communications routing system42of a call request for a particular endpoint destination communications device30,32. The communications routing system42may then issue a push notification to one or all of the endpoint destination communications devices30,32associated with the VoIP telephone number to notify the destination communications devices30,32of the call. If a user of one of the destination communications devices30,32accepts the call, the destination communications device30,32notifies the VoIP service40of call acceptance. The VoIP service40may then notify the communications routing system42of call initiation and call termination.

Incoming and outgoing voice calls made to or from a communications device30,32associated with the communications routing system42are made using the VoIP telephone number, which is established at the VoIP service40. When such a call is conducted as data via the mobile network20, the second MDN of the relevant mobile communications device30may be used to track the data usage on the mobile network20. As will be appreciated, the system100may further employ a proxy, perform SIP registrations, generate push notifications, or the like to support incoming and outgoing voice calls from a communications device30,32.

In operation, voice calls are carried out between source devices and destination devices (i.e., communication devices30,32), as supported, at least in part, by the VoIP service40. Voice calls are defined by one or more legs, each leg having an encoding device and a receiving device. The legs of a voice call may be defined by different devices through which the audio stream is relayed from the source device to the destination device. For example, a first leg may be defined by the source device (one of the communications devices30,32), acting as the encoding device, and the VoIP service40, acting as the receiving device. A second leg may be defined by the VoIP service40, acting as the encoding device, and the destination device (another one of the communications devices30,32). The digital audio stream of voice calls flows bidirectionally between these points. The audio stream is encoded at each encoding device and decoded at each receiving device, including transcoding, where necessary, at intermediary points (e.g., the VoIP service40). It will be further understood that a device may act as an encoding device when audio data is being transmitted, and that the same device may act as the receiving device to receive audio data, as appropriate during a voice call.

The system100employs a feedback controller to improve quality at each leg. In particular, the encoding device of each leg is configured to encode an analog audio stream to a digital audio stream according to one or more input parameters, such as bandwidth, bitrate, jitter buffer size, forward error correction (FEC), packet loss concealment (PLC), and the like. The input parameters may include fixed input parameters and variable input parameters, which may be updated and configured to improve quality of the received audio stream. The digital audio stream, which is the sampled and packetized version of the analog audio stream, is transmitted to the receiving device for the leg. The receiving device is configured to analyze the received audio stream and send a quality indicator to the encoding device. The quality indicator represents the quality of the digital audio stream received at the receiving device, and may be determined based on network statistics, such as packet loss, latency, jitter, and the like, or a computed mean opinion score (MOS) representing the perceived quality of a voice call. The encoding device is further configured to, at a feedback controller, determine updated variable input parameters for encoding subsequent analog audio streams. For example, the feedback controller may configure or update the variable input parameters according to proportional-integral-derivative (PID) control or computations. Thus, the feedback controller may update, in real-time, the variable input parameters to improve the perceived quality of subsequently encoded analog audio streams.

The presently described feedback control may be implemented in digital communication links between encoding devices and receiving devices to improve voice quality between these two communications devices. Additionally, the presently described feedback control may be implemented independently at independent legs on a voice call between a source device and a destination device to improve voice quality at each leg, with encoding input parameters updated for improving voice quality at the given leg. Advantageously, the quality indicator may be received at the encoding device in real-time, during a voice call to continually adjust the variable input parameters as the network statistics change, thereby maintaining high audio quality throughout the voice call. Further, the feedback controller may employ a PID controller for each of the variable input parameters to allow more precise adjustments for each variable input parameter.

Referring now toFIG.2, a block diagram of an encoding device200and a receiving device250of a leg of a voice call. The encoding device200includes an encoder204, a feedback controller208, and a communications interface216. The receiving device250includes a decoder254, a quality assessment module258, and a communications interface262.

The encoder204is configured to receive an analog audio stream and encode the analog audio stream to a digital audio stream. For example, when a source communications device30,32is acting as an encoding device, the analog audio stream may be received from an audio receiver (e.g., a microphone) of the source communications device30,32. In another example, when the VoIP service40acts as the encoding device, the analog audio stream may be received from a decoder, after decoding an incoming digital audio stream received from a source communications device30,32. The encoder204may be, for example, an Opus encoder, or the like.

In particular, the encoder204is configured to encode the analog audio stream according to one or more input parameters. For example, the input parameters may include one or more of: bandwidth (i.e., the band of frequencies that the audio stream is being constrained to), bitrate (i.e., the bit rate of the encoded audio stream for transmission), jitter buffer size (i.e., audio samples held in the buffer before being played back on the receiving device, as measured in milliseconds), forward error correction, packet loss concealment, and the like. The input parameters may include both fixed parameters and variable input parameters. For example, the encoder204may encode the analog audio stream according to one or more fixed parameters, stored in a memory accessible by the encoder204, as well as one or more variable input parameters received from the feedback controller208.

Accordingly, the encoder204is interconnected with the feedback controller208to receive one or more of the variable input parameters defining the encoding operation. The feedback controller208is configured to generate and adjust the variable input parameters for encoding operations to improve the quality of the digital analog stream received at the receiving device250. In particular, the feedback controller208is configured to receive a quality indicator representing a quality of the digital audio stream received at the receiving device. For example, the quality indicator may include a mean opinion score (MOS) representing the perceived quality of a voice call, or a set of network statistics. Based on the quality indicator, the feedback controller208determines updated variable input parameters.

Accordingly, the feedback controller208may include an evaluation module210. The evaluation module210is configured to receive the quality indicator and process the quality indicator to generate an error term for use by the feedback controller208to determine the updated variable input parameters. For example, the evaluation module210may receive a set of network statistics (e.g., including packet loss, latency, jitter, and the like) from the receiving device250and compute the MOS based on the network statistics. As will be appreciated, in other examples, other scoring or quantitative measures may be used to represent the quality of the audio stream received by the receiving device250, based on the quality indicator.

The evaluation module210may additionally compute an error function e(t) as a difference the mean opinion score (MOS) measured or computed by the receiving device250and communicated as the quality indicator, and a MOS setpoint value, set to represent a desired quality level. In other examples, the error function e(t) may be computed by other suitable functions, as will be appreciated by persons of skill in the art.

The feedback controller208may additionally include a proportional-integral-derivative (PID) controller (i.e., a controller employing a proportional-integral-derivative control loop mechanism). More particularly, the feedback controller208may include a PID controller212-1,212-2, through212-n(referred to generically as a PID controller212and collectively as the PID controllers212) for each variable input parameter a1, a2, through an. The PID controllers212may receive the error term from the evaluation module210and determine the variable input parameters based on the error term. More particularly, each PID controller212is employs a control function represented by equation (1):

u⁡(t)=Kp⁢e⁡(t)+Ki⁢∫0t⁢e⁡(t′)⁢dt′+Kd⁢de⁡(t)dt(1)

In equation (1), the term Kpe(t) represents the proportional control term, the term Ki∫0te(t′)dt′ represents the integral control term, and the term

Kd⁢de⁡(t)dt
represents the derivative control term. The coefficients Kp, Ki, and Kdfor the proportional, integral, and derivative terms respectively, are constants determined from optimizing or tuning each of the PID controllers212. For example, the PID controllers212may be tuned according to manual methods, the Ziegler-Nichols tuning method, other heuristic methods, or the like, as will be appreciated by persons of skill in the art. These coefficients may be stored in a memory accessible to the encoder204. The proportional, integral and derivative terms are summed to output u(t), which provides the variable input parameters a1, a2, through an at each respective PID controller212.

The encoding device200also includes the communications interface216interconnected with the encoder204. The communications interface216includes suitable hardware (e.g., transmitters, receivers, network interface controllers and the like) allowing the encoding device200to communicate with other computing devices, such as the receiving device250, via a communications link220. The specific components of the communications interface216are selected based on the type of network or other links that the encoding device200communicates over. In particular, the encoding device200is configured to communicate digital audio streams (i.e., representing audio data during a voice call) to the receiving device250via the communications interface216. The encoding device200is further configured to receive quality indicators from the receiving device250via the communications interface216.

The receiving device250includes the decoder254, configured to receive a digital audio stream and decode the digital audio stream to an analog audio stream. In particular, the decoder254may receive the digital audio stream from an encoding device, such as the encoding device200, via the communications interface262. The decoder254may be configured to output the analog audio stream, for example to an audio output device (e.g., a speaker), for example when a source communications device30,32is acting as a receiving device. In another example, when the VoIP service40acts as the receiving device, the analog audio stream may be sent to an encoder to be transcoded for a subsequent leg. The decoder254may be, for example, an Opus decoder, or the like.

The decoder254is further interconnected with the quality assessment module258and may send the digital and/or analog audio stream to the quality assessment module258. The quality assessment module258is configured to assess the quality of the received digital and/or analog audio stream. For example, the quality assessment module258may obtain network statistics and configuration values from the network (e.g., the IP network24) itself. In other examples, the quality assessment module258may obtain network statistics from the digital audio stream as received at the receiving device250or from the analog audio stream as received from the decoder254. The quality assessment module258may then return the network statistics, via the communications interface262, as a quality indicator to the encoding device from which the digital audio stream was received. In some examples, the quality assessment module258may be integrated with the decoder254.

The communications interface262is therefore interconnected with the decoder254and the quality assessment module258. The communications interface262includes suitable hardware (e.g., transmitters, receivers, network interface controllers and the like) allowing the receiving device250to communicate with other computing devices, such as the encoding device200, via the communications link220. The specific components of the communications interface262are selected based on the type of network or other links that the receiving device250communicates over. In particular, the receiving device250is configured to receive digital audio streams from the encoding device200via the communications interface262. The receiving device250is further configured to transmit quality indicators to the encoding device200via the communications interface262.

Turning now toFIG.3, a flowchart depicting an example method300of improving audio quality using feedback control is provided. The method300will be described in conjunction with its performance in the system100, and in particular, as performed by the encoding device200and the receiving device250. As previously noted, the encoding device200and the receiving device250represent endpoint devices at specific legs within a communications route in the system100. For example, they may represent a source communications device30,32and the VoIP service40respectively, during a first leg, or the VoIP service40, and a destination communications device30,32respectively, during a second leg. The method300will additionally be described in conjunction withFIG.4, which depicts a schematic diagram of the flow of data during a performance of the method300.

At block305, the encoding device200, and in particular, the encoder204, receives an analog audio stream to be encoded and sent to the receiving device250. That is, at405ofFIG.4, the analog audio stream is received from an audio source. The audio source may be, for example, an audio receiver (i.e., a microphone of a communications device30,32) or a decoder (e.g., a decoder of the VoIP service40).

At block310, the encoding device200, and in particular, the encoder204encodes the analog audio stream into a digital audio stream. The encoder204may obtain various input parameters, including fixed input parameters from a memory accessible to the encoder204, and variable input parameters from the feedback controller208. For example, the variable input parameters may include bandwidth, bitrate, and jitter buffer size. In particular, at an initial interval, at time t=0, the error function e(t) is zero, and the PID controllers212may output initial variable input parameters a1, a2, through an to the encoder204to encode the analog audio stream. Thus, at408, the feedback controller208provides the initial variable input parameters to the encoder204. At410, the encoder204outputs a digital audio stream for transmission to the receiving device250. In particular, the digital audio stream may be communicated to the communications interface216for transmission to the receiving device250.

At block315, the encoding device200, and in particular, the communications interface216, transmits the digital audio stream to the receiving device250, and in particular, the communications interface262. The transmission of the digital audio stream from the encoding device200to the receiving device250is depicted at415. For example, the communications interface216may be configured to employ a real-time transport protocol (RTP) to send audio streams. In particular, the encoding device200may be configured to send the audio stream over an IP network, such as the network24, which employs RTP standards to deliver audio (and video) streams. The receiving device250, and in particular, the communications interface262, may thus similarly be capable of receiving and decoding RTP audio streams.

At block320, the digital audio stream is received at the receiving device250, and in particular, by the communications interface262. Upon receiving the digital audio stream, the communications interface262may communicate the digital audio stream to the decoder254at420.

At block325, the receiving device250, and in particular, the decoder254, decodes the digital audio stream to generate an analog audio stream. The decoder254may employ standard decoding protocols according to decode the digital audio stream, and outputs the analog audio stream at425.

At block330, the receiving device250, and in particular, the quality assessment module258analyzes the audio stream and generates a quality indicator. The quality assessment module258may analyze the digital audio stream or the analog audio stream to determine the quality of the received audio stream. For example, the quality assessment module258may obtain network statistics, including packet loss, latency, jitter, and the like over a given real-time transport control protocol (RTCP) interval. In some examples, the quality assessment module258may generate a quality indicator including the raw data values representing packet loss, latency, and jitter. In other examples, the quality assessment module258may compute the MOS for the given interval based on the packet loss, latency, jitter, and other network statistics and generate a quality indicator including the computed MOS. At430, the quality assessment module258outputs the quality indicator to the communications interface262for transmission to the encoding device200.

At block335, the receiving device250, and in particular, the communications interface262, transmits the quality indicator to the encoding device, and in particular, the communications interface216. The transmission of the quality indicator from the receiving device250to the encoding device200is depicted at435.

At block340, the receiving device250outputs the decoded analog audio stream. That is, at440, the audio stream is output, for example, to an audio output device (e.g., a speaker of a communications device30,32), or an encoder (e.g., an encoder of the VoIP service40).

At block345, the encoding device200, and in particular, the communications interface216, receives the quality indicator from the receiving device250. Upon receiving the quality indicator, the communications interface216may communicate the quality indicator to the feedback controller208at445.

At block350, the encoding device200, and in particular, the feedback controller208, determines updated variable input parameters. The feedback controller208provides the updated variable input parameters to the encoder204for encoding subsequent analog audio streams.

For example, referring toFIG.5, an example method500of updating the variable input parameters is depicted.

At block505, the feedback controller208, and in particular, the evaluation module210, obtains a MOS based on the quality indicator. For example, the evaluation module210may compute the MOS based on network statistics, including packet loss, latency, and jitter defined in the quality indicator. In other examples, the evaluation module210may simply extract the MOS from the quality indicator (e.g., in examples where the receiving device250computes the MOS based on the network statistics).

At block510, the feedback controller208, and in particular, the evaluation module210, determines the error term e(t) at the time t by comparing the computed MOS from block505to the MOS setpoint value. For example, the evaluation module210may subtract the compute MOS from the MOS setpoint value. Having computed the error function e(t), the evaluation module210outputs the error term e(t) to each PID controller212, at450ofFIG.4.

At block515, each PID controller212computes its respective updated variable input parameter based on the error function e(t). In particular, each PID controller212computes a proportional term, an integral term, and a derivative term, and sums them, per equation (1) to compute the updated variable input parameters a1′, a2′, through an′. The updated variable input parameters a1′, a2′, through an′ are output to the encoder204at455.

As will be appreciated, in some examples, other variations are possible. For example, the encoding device200may additionally consider the network type when encoding the analog audio stream. For example, returning toFIG.3, optionally, at block355, the encoding device200may detect the network type of the network over which the digital audio stream is to be transmitted. For example, network type may include Wi-Fi, LTE, 3G, or other suitable WLAN or mobile networks. The network type may be transmitted to the feedback controller208to generate the initial variable input parameters.

That is, the feedback controller208may be configured to determine the initial variable input parameters in consideration of the network type. More specifically, the network type may affect the coefficients Kp, Ki, and Kd. Accordingly, the feedback controller208may retrieve the coefficients Kp, Ki, and Kdcorresponding to the network type. For example, these constants may be pre-determined (e.g., based on a tuning method), and stored in a memory accessible by the feedback controller208. The feedback controller208may then proceed to compute the initial variable input parameters based on the coefficients corresponding to the network type.

Additionally, in some examples, the network type may change over the course of the voice call. For example, the voice call may be alternately carried over the mobile network20or the WLAN22based, for example, on the respective quality of each network. Accordingly, optionally, at block360, the encoding200may detect a change in the network type. The updated network type may be transmitted to the feedback controller208to generate the updated variable input parameters.

That is, the feedback controller208may be configured to determine the updated variable input parameters based on the quality indicator, and further in consideration of the network type. The feedback controller208may retrieve the coefficients Kp, Ki, and Kdcorresponding to the network type and use the coefficients to compute the updated variable input parameters. For example, Table 1 depicts an example table storing the Kp, Ki, and Kdcorresponding to network types.

TABLE 1PID coefficients by network typeNetwork TypeKpKiKdWi-Fi4.74.53.1LAN4.54.32.9Cell3.32.52.1Other4.54.52.8

As can be seen, the coefficients may vary from between network types. Additionally, the encoding device200may store coefficients for “other” networks, such as when the network type is unidentified or does not have specifically computed coefficients.

As described above, a communications system, device, and method are provided to improve audio quality during a voice call using feedback control. In particular, a receiving device may provide a quality indicator, such as a mean opinion score, to the encoding device to allow the encoding device to adjust and fine-tune variable input parameters of the encoding operation. For example, the encoding device may employ proportional-integral-derivative controllers for each variable input parameter. Such a feedback loop may be implemented at each leg of a voice call (i.e., between each pair of communications devices required to relay the voice call from the source device to the destination device). Advantageously, such a feedback loop may be implemented in real time to continually adjust the variable input parameters in response to changes in network statistics, network type, and other factors affecting audio quality of the voice call.

The scope of the claims should not be limited by the embodiments set forth in the above examples, but should be given the broadest interpretation consistent with the description as a whole.