Background of the Invention
a. Field of the Invention
Broadly speaking, this invention relates to telecommunications. More particularly, in a preferred embodiment, this invention relates to methods and apparatus for processing digitized human speech to reduce the bit rate required to transmit the information signal over a digital telecommunications link.
B. Discussion of the Prior Art
In recent years, considerable attention has been focused on digital transmission and switching systems. Such systems are in many ways superior to the analog systems heretofore employed and offer the further advantage that the digital signal may be encrypted prior to transmission, an important fact where security is of concern.
Since human speech is analog in nature, it is necessary to employ some form of analog-to-digital conversion prior to transmission over the digital system. Several approaches have been employed in prior art including the so-called "wideband" and "narrowband" conversion techniques. The "wideband" techniques include pulse code modulation (PCM), which results in an output bitstream, say, at a 48 or 64 kb/s rate, or delta modulation, for example, Continuously Varying Slope Delta Modulation (CVSD) which results in an output bitstream at a 32 or 16 kb/s rate.
The "narrowband" techniques include the so-called "VOCODER" approach, or any of several more sophisticated converters which utilize some sort of adaptive or predictive technique. The "narrowband" techniques result in an output bitstream of from 1.2 or 2.4 kb/s to 9.6 kb/s, depending upon the desired voice quality and the particular technique which is used.
The problem is that "narrowband" converters are expensive and the voice quality that they yield, especially speaker recognizability, is marginal at best. The "wideband" converters, especially those employing Delta Modulation, are far more successful, are inexpensive, and deliver good performance at bit rates of 32 kb/s and even 16 kb/s. Unfortunately, these high bit rates limit the number of voice circuits that can be multiplexed over a transmission link of a given bandwidth.
Now, it is a known fact that the speech pattern of the average talker is replete with numerous inter-syllable and inter-word pauses. It is, in other words, highly redundant from an information transfer viewpoint. This redundancy becomes even greater when one considers the fact that at least some of the time the talker is silent while listening to the talker at the other end of the circuit.
Summary of the Invention
The instant invention, in an illustrative embodiment, operates on the digital output signal of the Delta Modulation A/D converter by applying a coding process thereto which inserts distinct, short code words in lieu of the extended bit patterns which are generated by idle conditions in the input speech signal. This substitution process is followed by bit buffering in order to allow a certain degree of averaging over a given time period, which is controlled by the buffer size. The output of the invention is timed at a clock rate which is lower than the input rate from the A/D converter. Practical values of the reduction of the bit rate are in the order of 2 to 3 (i.e., a 16 kb/s A/D converter bit rate will be reduced for transmission to a rate of 9.6, 8 or 6 kb/s). A similar device is required for the D/A converter at the receiving terminal. There, the received digital bit stream is fed into a buffer whose output is controlled by a decoder which monitors for the special code words previously inserted by the source coder. In the absence of such special code words, the buffer output is timed at the same rate as the output rate of the A/D converter in the distant coder. The buffer output is fed into a D/A converter to produce the analog speech signal. When the decoder recognizes the special code word(s), the buffer output is interrupted and "idle" bit patterns are generated and fed into the D/A converter at the same rate as the bit streams previously delivered from the buffer. The durations of the "idle" bit patterns are controlled by the characteristics of the special code words, as recognized by the decoder. When the "specified" length of the "idle" bit patterns is expired, the decoder again switches the buffer output to the D/A converter at the original clock rate.
The invention and its mode of operation will be more fully understood from the following detailed description, when taken with the appended drawings, in which:
Description of the Drawings
FIG. 1 is a simplified block schematic diagram of an overall transmission system utilizing the adaptive coding process according to the invention;
FIG. 2 is a block schematic diagram of the adaptive encoder shown in FIG. 1;
FIGS. 3A and 3B show a partially block schematic, partially functional flow diagram illustrating the operation of the encoder shown in FIG. 2;
FIG. 4 is a flow-chart illustrating the processing steps that the digital bit stream undergoes in the encoder shown in FIGS. 2 and 3;
FIG. 5 is a block schematic diagram of the adaptive decoder shown in FIG. 1;
FIGS. 6A and 6B show a partially block schematic, partially functional flow diagram illustrating the operation of the decoder shown in FIG. 5;
FIGS. 7A and 7B show a partially block schematic, partially functional flow diagram illustrating the operation of an alternate decoder according to the invention; and
FIG. 8 is a flow-chart illustrating the processing steps that the digital bit stream undergoes in the decoder shown in FIGS. 5 and 6.
Detailed Description of the Invention
The invention will now be described with reference to a specific communications system of the type wherein an analog voice signal is first converted into a digital signal at a 16 kb/s rate, then adaptively encoded for transmission over a digital transmission facility operating at an 8 kb/s rate, and finally decoded at the distant terminal back into a 16 kb/s signal for subsequent reconversion into the original analog voice signal.
One skilled in the art will appreciate that the above system is merely illustrative of many such systems and the invention disclosed herein is suitable for use with transmission facilities and digital signals operating at different bit rates provided, of course, that appropriate changes are made to certain components and circuits of the encoder and decoder, for example, the internal clock circuits, et cetera. Further, the invention is not necessarily restricted to use with voice signals but may also be used with other analog signals having similar characteristics to voice signals.
FIG. 1 illustrates the operating environment for the invention. As shown, an audio signal, illustratively, a voice signal occupying from 300 - 4000 Hz, is applied to a microphone 10 which is connected to the input of a Continuously Variable Slope Delta (CVSD) Analog-to-Digital Converter 11. Converter 11, in turn, is connected to a 16 kb/s clock 12 and to the input of an adaptive encoder 13, which will be described in considerable detail later. The output of encoder 13, which is now at an 8 kb/s rate, is connected to the input of an 8 kb/s digital transmission facility 14, for example, any of the commercially available digital transmission systems or a leased Bell System digital transmission facility.
At the receiving location, the output from transmission facility 14 is connected to an adaptive decoder 16 which converts the incoming 8 kb/s digital signal to a 16 kb/s signal. Decoder 16 will also be described in considerable detail later. The output of decoder 16 is connected to a CVSD Digital-to-Analog Converter which is connected to a 16 kb/s clock 18. The analog output of converter 17 is connected to a transducer 19, for example, a telephone receiver, which recreates the original audio input to microphone 10. To simplify the drawing, only one direction of transmission has been shown. Obviously, for two-way transmission, additional equipment will be required at both ends of the system; however, this is identical to that shown and, thus, need not be discussed in detail.
FIG. 2 depicts the circuitry of adaptive encoder 13 in more detail. As shown, the output of A/D converter 11 is applied, via lead 21, to the input of a threshold monitor 22; to one input of an AND gate 23; and, via an electronic switch S1A, to the input of a first-in, first-out (FIFO) buffer 24. The set output of monitor 22 is connected to the other input of AND gate 23 while the reset lead of monitor 22 is connected to a control circuit 26 which will be discussed in greater detail below. The output of AND gate 23 is connected to the counting input of a bit counter 27 having a capacity of 7,600 bit counts in the illustrative example. The output of counter 27 is also connected to control circuit 26 as is the reset lead 28. A pair of comparitor circuits 29 and 31 connected between bit counter 27 and control circuit 26 respectively indicate to the control circuit when the count in counter 27 has reached 12 bits or 7,600 bits, its maximum count.
The output of the 12 bit FIFO buffer 24 is connected, via an electronic switch S1B, to the input of a FIFO output buffer 32. Buffer 32 has a capacity of 24,000 bits in the illustrative embodiment with the first and last bit positions being used to derive an "overflow" flag signal and an "underflow" flag signal on leads 33 and 34, respectively. Buffer 32 is also connected to the output of an 8 kb/s clock 36.
As will be explained below, upon command from control circuit 26, switches S1A and S1B are moved to the "off" or open position and in this condition, a code word generator and buffer 41 generates from 1 to 4 special code words which are connected to the input of buffer 32 via a gating circuit 42. Gate 42 and code word generator 41 are connected to a 16 kb/s clock 43. An inverter 44 is connected between code word generator 41 and gate 42 to produce an inverted, or "negative" version of the code word (or words) generated by generator 41. The output of encoder 13 is taken from the output of FIFO buffer 32 at the rate of 8 kb/s.
The operation of adaptive encoder 13 will now be described in detail. This explanation will best be understood by reference to FIG. 3, which repeats the basic steps of FIG. 2 and adds additional detail concerning control circuit 26, as well as flow-charting certain of the operational steps that occur in encoder 13 of FIG. 1. FIG. 4, which is a pure flow chart, is also helpful in understanding the invention. It should not be assumed that because a flow chart is given that this invention is a computer program. While any digital encoding and decoding process can be implemented in a general purpose computer, the preferred embodiment of the invention is the hardware configuration shown in FIG. 1. To be sure, the hardware could be implemented in a microprocessor or, by the use of LSI, in one or more integrated circuit chips but the circuit diagram would remain essentially as shown in FIG. 1.
As previously discussed, the input to encoder 13 comprises the output of CVSD A/D converter 11, i.e., a digital bitstream having a constant bit rate of 16 kb/s. When speech input is present at microphone 10, the input bitstream is composed of binary "1"s and "0"s. In accordance with known principles of operation of a CVSD A/D converter, the occurrence of consecutive "1"s indicates a steep increase in the positive amplitude of the speech signal while a series of consecutive "0"s indicates a steep increase in negative amplitudes. When no speech signal is present, i.e., when the talker is pausing between words or syllables, or while he is listening to the distant talker, the CVSD output is the "idle" pattern comprising, in the illustrative embodiment, a bitstream of alternate "1"s and "0"s, i.e., "1010101010 . . . " or a somewhat disturbed pattern which produces negligible signals levels when fed through a digital-to-analog converter.
The fact that the speech of the average talker contains lengthy periods of inter-syllable or inter-word pauses, represented by the above-described "10101010 . . . " "idle" pattern, is utilized in the invention to reduce the digital bit rate required to transmit the speech from 16 kb/s to, say, 8 kb/s, in the illustrative embodiment. According to the invention, the CVSD output bitstream is fed to three encoder ports; (1) threshold monitor 22; (2) the 12-bit FIFO buffer 24; and (3) bit counter 27, via AND gate 23. The threshold monitor reconstitutes the digital CVSD bitstream and through a digital-to-analog CVSD converter and thus generates positive and negative-going analog signals. Monitor 22 is basically a CVSD receiver or integrator with level thresholds which are set at moderate positive and negative amplitudes. These threshold levels will not be reached so long as the CVSD output bitstream represents essentially the idle pattern, i.e., during inter-syllable or inter-word talker pauses. Amplitude swings which are confined between the preset level thresholds cause monitor 22 to generate a d.c. "set" signal which enables AND gate 23 and hence bit counter 27. Thus, whenever the "idle" speech condition is present in the CVSD output bitstream, the bitstream is routed to bit counter 27 which then counts the number of bits in the "idle" pattern. On the other hand, the "set" signal is replaced by a "reset" signal when the integrated CVSD output signal exceeds the preset analog amplitude levels. This occurs when the talker resumes speech. The "reset" signal is applied to control circuit 26 and causes the control circuit to read-out the current count in counter 27 followed by the application of a reset signal to counter 27.
It has priorly been determined that an "idle" pattern of less than 12 bits, i.e., slightly less than 1 millisecond at a 16 kb/s rate, is too short a pause to warrant encoding and decoding action; accordingly comparator 29 of FIG. 2 is connected to bit counter 27 and generates an output signal to control circuit 26 if, and only if, at least 12 bits are detected as having been fed into bit counter 27.
Switches S1A and S1B are normally closed, thus the CVSD bitstream that was fed into monitor 22 and bit counter 27 is also fed into buffer 24, thence, into output buffer 32 which has a capacity of 24,000 bits, or about 11/2 seconds of speech at a 16 kb/s rate. As will be shown, the instant invention assumes, on the basis of experimental analysis that within that 11/2 second interval the average talker will have at least one, and typically many, inter-syllable or inter-word pauses in his speech pattern.
Returning to bit counter 27, if the incoming bitstream comprises the "idle" pattern and comparator 29 (29b in FIG. 3) determines that the idle pattern is at least 12 bits long, the contents of buffer 24 is purged by control circuit 26 and the input and output of buffer 24 are disconnected by setting S1A and S1B to the "off" position. If the idle pattern continues for an unusually long time, say, over 500 msec, the count in bit counter 27 will approach 7,600. If it exceeds 7,600, comparator 27 will signal control circuit 26 to reset counter 27 and the process will continue until monitor 22 again detects an incoming speech signal.
As previously mentioned, if the count in counter 27 is less than 12 bits, S1A and S1B remain "on" and the CVSD bitstream, even though it is the "10101010 . . . " idle pattern, will be fed to buffer 32, via the 12-bit buffer 24. On the other hand, if the count in counter 27 exceeds 12 bits, switches S1A and S1B are "opened" and one or more special code words are generated by code word generator 41 and fed into buffer 32 in lieu of the CVSD output bitstream.
The special code words employed in this invention are correlation code words, each 11 bits long in the illustrative example. These code words have idealized correlation properties, i.e., when shifted through a code word detector they product a large spike (negatively or positively oriented) if they coincide with the checkword, but have small correlation energy when not in coincidence. A representative code word is "10110111000" which is hereinafter designated as a "1" or "P", for positive, code word. The same code word can be inverted to become a "0" or negative code word, "N". The autocorrelation properties of the illustrative word are: 11, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0. The corresponding average properties of a "buried" code word are: 11, 5.5, 5, 5.5, 5, 5.5, 5, 5.5, 5, 5.5, 5.
Table I below gives a representative translation table for the special code words employed in this invention.
As can be seen, if the number of redundant bit patterns which are to be replaced by a code word is from 12 to 18 bits long, the above-discussed "P" code word "10110111000" is transmitted to buffer 32, hence, to the distant decoder which, as we shall see, will decode it into a corresponding "idle" pattern of "101010101010". If the redundant bit pattern is from 19 to 28 bits long, the "N" code word, which is the inverse of the "P" code word, is transmitted, and so forth. If the redundant bit pattern is from 5,501 to 7,600 bits long, for example, four special code words are transmitted in a "PPPN" sequence.
It will be evident from the above that the number of bits required to replace "idle" patterns is considerably lower than the length of the "idle" pattern itself. In the worst case, an eleven bit code word replaces from 12 to 18 bits of the "idle" pattern but in the most efficient case, a 44 bit code word (4 .times. 11) replaces up to 10,000 bits of the "idle" pattern.
It is this "compression" that permits the disclosed encoder to read into FIFO buffer 32 at 16 kb/s and to read out at 8 kb/s. Thus, control circuit 26 determines from the count in counter 27 which code words, or sequence of code words, is to be fed into buffer 32, in accordance with a stored lookup table and gate 42, under control of control circuit 26, feeds the sequence of code words into buffer 32. If the count in counter 27 exceeds 7,600, a "1011" or "PPNP" sequence of code words is automatically generated and counter 27 is reset.
After from 1 to 4 of the special correlation code words have been fed at the 16 kb/s rate into FIFO buffer 32, switches S1A and S1B are put into the "on" position and counter 27 reset. This once again permits the CVSD output bitstream to feed into buffer 32, via buffer 24. Output buffer 32 has a bit capacity of several thousand bits, 24,000 in the illustrative example, to allow for a suitable averaging of the non-reduced and reduced input bit rates. The indicated buffer size allows for delay variations which can range up to 3 seconds delay of the information transfer at the 8 kb/s rate. As previously mentioned, buffer 32 is provided with an "empty" or underflow state flag and a "filled" or overflow state flag. When the "empty" state flag is set, i.e., when only 1 bit remains in buffer 32, bit counter 27 is stopped, the count stored therein is read, one or more special code words are generated and fed into buffer 32, bit counter 27 is reset, and the CVSD output bitstream is permitted to pass through buffer 24 into buffer 32 while the process described above is started all over again.
On the other hand, when the "filled" state flag is set, i.e., when buffer 32 is filled, buffer 24 is disconnected by opening switch S1 (FIG. 3), thus allowing buffer 32 to be emptied, at the 8 kb/s rate until the overflow flag is reset. This process is continued, that is, every 2.sup.nd bit from coder 13 is discarded until the process is interrupted by the detection of another "idle" pattern condition in the CVSD output bitstream, which fact causes monitor 22 to seize control again in the described manner.
As mentioned, buffer 32 is fed into the transmission line at the 8 kb/s rate. If the information signal is to be encrypted prior to transmission, the cryptographic equipment would be located at the output of buffer 32 and would also operate at the 8 kb/s rate.
FIG. 5 depicts the circuitry of adaptive decoder 16 in greater detail. As shown, decoder 16 comprises a FIFO input buffer 51 having its input connected to the output of the 8 kb/s transmission facility 14. Buffer 51 has a capacity of 24,000 bits in the illustrative example and is connected to a 16 kb/s clock circuit 52. A fill status circuit 53 monitors the last bit position in buffer 51 to indicate when the buffer is filled. The output of buffer 51 is connected to the input of a 44-bit buffer 54, thence, via a normally closed electronic switch S2 to a CVSD Digital-to-Analog converter 56. The output of D/A converter 56 is connected, via some suitable audio amplifier 57, to transducer 19.
Each stage of buffer 54 is connected, via leads 58.sub.0 - 58.sub.43, to a code word correlator circuit 59. The output of correlator circuit 59 is connected to a logic circuit 61 which is connected, via an enable/inhibit lead 62, to clock 52. A purge circuit 63 is connected to each of the bit stages of buffer 54 to purge the up-to-four code words which may be stored therein. Purge circuit 63 is also connected to, and controlled by, logic circuit 61. An idle pattern generator 64 operating at the 16 kb/s rate is connected to CVSD D/A converter 56, via normally "open" switch S3A. A counter 66 is also connected to the output of buffer 54, via normally "open" switch S3B. Switches S2 and S3A and S3B are controlled by logic circuit 61.
The operation of decoder 16 will now be described in detail. The explanation will be simplified if reference is made to the decoder flow diagram of FIG. 6 and to the flow chart of FIG. 8. (FIG. 7 is a decoder flow diagram of an alternative implementation and will be discussed later.)
As shown, decoder 16 receives the incoming line signal at the 8 kb/s rate and operates on that signal to provide an interface between it and the CVSD D/A converter which operates at 16 kb/s. More specifically, the incoming 8 kb/s line signal is applied to the input of FIFO input buffer 51. Buffer 51 is an "elastic" buffer of large bit capacity. The output of buffer 51, which is clocked at the 16 kb/s rate, is fed through buffer 54 (actually four, 11-bit buffers 54.sub.a - 54.sub.d) to D/A converter 56 to produce the desired analog voice signal.
This connection is broken, via switch S2, under two conditions. The first, which is extremely rare in practice, is when fill status circuit 53 signals logic circuit 61 that buffer 51 is empty. When this occurs, logic circuit 61 "closes" switches S3A and S3B to permit idle pattern generator 64 to generate an idle pattern of an arbitrary but predetermined time duration (4,000 bits in the illustrative embodiment). This bit sequence is fed into the CVSD converter 56 to give buffer 51 time to accumulate an adequate number of bits (e.g., 2,000) from the line before processing.
The second case, i.e., where a special 11-bit code word is detected in buffer 54a, signals to the decoder that idle patterns of a defined duration must be fed into the CVSD converter in lieu of the special code word.
Correlator 59, which is associated with buffers 54a - 54d, after detecting a correlation peak of magnitude "11" in buffer 54d and after halting the through-flow by signaling logic circuit 61 to "open" switch 52, checks:
1. the polarity of the special code word in buffer 54d (i.e., is the code word "P" or "N");
2. whether buffer 54c also contains a special code word of either "P" or "N" polarity;
3. if buffers 54d and 54c both contain code words, whether buffer 54b also contains a special code word of either "P" or "N" polarity; and
4. if buffers 54d, 54c and 54b each contain code words, whether buffer 54a also contains a special code word of either "P" or "N" polarity.
After determination that buffer 54 contains from 1 to 4 code words, as well as determining their polarity, correlator 59 forwards the sequence of P/N's to logic circuit 61 which compares the sequence with the translation table of Table I. As previously discussed, the translation table defines the number of idle bit patterns (10101010 . . . ) to be substituted for the sequence of special code words transmitted by the encoder, at the transmitting location.
Since the number of idle patterns is represented by a range, rather than a fixed value, the translation process uses the fill status of buffer 51 to determine whether to use the lower bound or the upper bound of the table entries. The fill status information from circuit 53 indicates whether the input buffer holds less than 2,000 bits or is more filled. If less than 2,000 bits are held in the input buffer the upper bounds of the table entries are used, and if more than half filled, the lower bounds are used. Obviously, this is only an approximation and will result in some arbitrary lengthening or shortening of quiet intervals, but the effect in most cases is not noticeable.
After logic circuit 61 has selected the appropriate table entry, idle pattern generator 64 is connected to D/A converter 56, via switch S3A, and the output bits of the generator are counted by counter 66 at the 16 kb/s rate. Meanwhile, the buffer 54 is advanced N steps to remove the special code words stored in it (N = number of special code words times 11 bits).
When counter 66 reaches the specified count, clock 52 for input buffer 51 is enabled, thus allowing the incoming bitstream to enter the buffers 54d - 54a and to proceed, via now-"closed" switch S2, into CVSD converter 56. Switches S3A and S3B are then "opened" and counter 66 is reset. Note that buffer 51 in the decoder and buffer 32 in the encoder are first-in, first-out buffers. That is, inputted bits (negative = space, positive = mark) "fallthrough" and assemble themselves at the output port in a first-in first-out sequence. This provides an elasticity of loading/unloading of the buffers in the context of the disclosed process.
FIG. 7 depicts the flow diagram of an alternative decoder according to the invention. As shown, the 44-bit buffer 54 of FIG. 6 is replaced by a single 11-bit buffer 154 and code word correlator 159 is reduced correspondingly to an 11-bit correlator. In order to check for the occurrence of sequential code words, buffer 154, after having detected one code word and having opened switch 112, is filled again with 11 bits from buffer 51 by 11 clock pulses from clock 52, whereupon the code word correlator 159 again checks for the presence of another code word. If another code word is detected, the process is repeated one or two times to determined the occurrence of a third or fourth code word. Subsequent procedures are substantially identical as described above for FIG. 6 and, thus, need not be discussed in detail.
One skilled in the art may make various changes and substitutions to the layout of parts shown without departing from the spirit and scope of the invention.