Method and apparatus for improving the quality of communication in a digital conference arrangement
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation-in-part of M. A. Marouf et al., entitled &#34;Method and Apparatus for Controlling Ports in a Digital Conference Arrangement&#34;, Ser. No. 382,672, filed May 27, 1982; and is related to the applications of J. H. Bobsin et al., entitled &#34;An Arrangement for Reducing Clipping in a Digital Conference Arrangement&#34;, Ser. No. 382,762, filed May 27, 1982; D. E. Herr et al., entitled &#34;Automatic Interactive Conference Arrangement&#34;, Ser. No. 382,602, filed May 27, 1982; T. W. Anderson et al., entitled &#34;Announcement System&#34;, Ser. No. 380,511, filed May 21, 1982; M. A. Marouf et al., entitled &#34;Method and Apparatus for Controlling Signal Level in a Digital Conference Arrangement&#34;, filed concurrently with this application; and A. H. Bass et al., entitled &#34;Method and Apparatus for Controlling Ports in a Digital Conference Arrangement&#34;, filed concurrently with this application. 
    
    
     TECHNICAL FIELD 
     This invention relates generally to multiport digital conference arrangements and, more particularly, to method and apparatus for controlling state transitions of a port to improve the quality of communication. 
     BACKGROUND OF THE INVENTION 
     Generally, digital conference arrangements sum information samples representing, for example, speech from each conferee and then distribute the resulting sample to each conference port. One such arrangement is described in the parent application of M. A. Marouf and P. W. Vancil in which only samples from selected ports are included in a resulting output sample to reduce noise, echo, and other types of distortion. The selection process is accomplished by assigning each port a priority level based on the state of the port in each one of two sets of states and summing the information samples of only those ports having the highest priority levels. One set of states may comprise the levels of speech detected on the port, whereas the other set may comprise the history of activity on the port such as, for example, how long the conferee has been silent, the interval between speech bursts, etc. 
     In many prior art arrangements, a port is commonly held over or placed in a holdover state for a fixed time interval between words to reduce speech clipping. Generally, such fixed time interval arrangements are unable to discriminate between speech and extraneous noise conditions such as, for example, the rustling of papers. Hence, a port that was activated by noise may be placed in the same holdover state as a port that was activated by speech, thereby preempting other conferees in a speaker selection process. 
     In contrast, when no holdover is performed and all of the conferees are silent, nothing is heard on the conference bridge. This is annoying as the conferee has the feeling that he is cut off from the conference. 
     SUMMARY OF THE INVENTION 
     The foregoing problem is solved and a technical advance is achieved in a multiport digital conference arrangement adapted to include information samples from selected ports in an output sample by method and apparatus for controlling state transitions of a selected port. This is accomplished by measuring the time interval information samples representing the level of a signal above a predetermined reference level are present on a selected port. When the measured time interval for the selected port is greater than a predetermined time interval, the selected port assumes a holdover state. 
     More specifically, in one illustrative embodiment of the invention, the measured time interval is used to cause a selected port to assume one of two holdover states having different holdover time periods. When information samples representing the level of a signal above the reference level are present on a selected port for a period of time less than the predetermined time interval, this is usually representative of the extraneous noise situation, i.e., rustling of papers, and the port assumes the first holdover state. If additional samples are not received within a relatively short holdover time period, the port is removed from the selection process. When information samples representing the level of a speech signal above the reference level are present on a selected port for a period of time greater tnan the predetermined time interval, this is usually indicative of a speaker who wishes to participate in the conference. Hence, the port is placed in the second holdover state having a longer holdover period to permit pauses between words and sentences. Of course, if additional speech is not received within the longer holdover period, the port is also removed from the selection process. 
     In accordance with another feature of this invention, a minimum number of selected ports are forced to remain in a holdover state to provide background noise on the bridge. This ensures that a conferee receives some minimum background noise to eliminate the feeling that he is cut off from the conference. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     The invention may be better understood from the following detailed description when read with reference to the drawing in which: 
     FIG. 1 shows a block diagram of a telephone network having a toll switching system equipped with a network services complex (NSC) for providing audio conferencing and other services; 
     FIG. 2 shows a more detailed block diagram of the NSC audio bridge for providing audio conferences; 
     FIG. 3 shows a more detailed block diagram of the audio bridge processor for controlling the status of an audio conference; 
     FIG. 4 shows a more detailed block diagram of the audio bridge switching hardware for including information samples from selected ports in an output sample; 
     FIG. 5 shows a more detailed block diagram of the audio bridge delay unit for delaying the application of incoming information samples to the switching hardware; 
     FIG. 6 shows a detailed state diagram of the conference processing algorithm for keeping track of the activity state of each port of a conference; 
     FIG. 7 shows a flow diagram of one base cycle of the audio bridge operational software; 
     FIGS. 8 through 14 shows a detailed flow diagram of one base cycle of the conference processing program which implements the conference processing algorithm; 
     FIG. 15 shows the layout of a 16-bit word representing exemplary constants that may used to establish the adjusted priority level of a conference port; 
     FIG. 16 shows a detailed flow diagram of the priority SORT subroutine; 
     FIG. 17 shows the layout of the conference sort array used to enable ports on the bridge; and 
     FIG. 18 shows a detailed flow diagram of a subroutine that provides a minimum number of ports to be enabled on the bridge. 
    
    
     DETAILED DESCRIPTION 
     Introduction 
     The general organization of a system employing the invention is illustrated in the block diagram of FIG. 1 which shows a typical communications network having a toll switching system 102 which serves local central offices 103 and 104. Central offices 103 and 104 contain switching apparatus for providing communication services to customer stations 105 and 106, respectively. Connected to switching system 102 is network services complex 100 for providing special services such as audio and data conferencing. 
     Network services complex 100 includes NSC processor 101, audio bridge 135, and other units. As will be described in more detail below, one of the functions of the complex is to provide facilities for conferencing the voice signals of customers over the telephone network via the toll and local switching offices. 
     Toll switching system 102, as depicted in FIG. 1, is a typical electronic switching system, such as, the No. 4 ESS which is manufactured by the Western Electric Company, Incorporated. This switching system is described in detail in the The Bell System Technical Journal, Vol. 56, No. 7, September, 1977, and need not be fully described herern for the reader to understand the present invention. 
     Toll Switching System 
     Switching system 102 comprises network 107, centrai processor 108, voice interface unit 109, digroup terminal unit 110, signal processors 111 and 112, and misceiianeous equipment units tnat have not been shown to simplify the drawing. 
     Network 107 has a trme-space-time switching configuration utilizing time slot interchange (TSI) units 113-116 and time multiplex switch (TMS) unit 117. 
     Time multiplex switch 117 is a two-stage switch array comprised of solid state crosspoints which provide a multiplicity of unidirectional paths between its inputs and outputs. Each network connection through TMS 117 is made in terms of a pair of unidirectional paths in one of the 128 time slots sharing the paths on a repeating basis at an 8 KHz rate. The switches are controlled by information contained in time slot memories and this information is placed in the memory by the central processor under the control of call processing programs. 
     Time slot interchange units 113-116 provide the initial time-space and final space-time stages of network 107. The units receive incoming pulse code modulated (PCM) samples over analog and digital facilities in well-known DS-120 format where 120, eight-bit PCM channels are time division multiplexed with eight maintenance channels to form a 128 time slot frame. The receiving portion of a TSI unit buffers the incoming links to allow synchronization of the data with network timing and performs the initial time-space switching before transmitting the data to the TMS. After passing through the TMS, tne data is returned to the same TSI or another TSI where the final space-to-time conversion is performed. The TSI then reloads the data onto outgoing DS-120 links wnere it is transmitted to the appropriate analog or digital facility. 
     Access to switching network 107 is via serial PCM links each accommodating 120 voice channels. However, central offices 103 and 104 can be connected to toll switching system 102 via analog or digital transmission facilities. Thus, as seen in FIG. 1, local central office 104 is connected to the toll office over digital facilities which terminate in digroup terminal unit 110, whereas local office 103 is connected via analog trunks to voice interface unit 109. Digroup terminal 110 performs the time division multiplexing and demultiplexing between interoffice transmission facilities and network 107 and also processes control signals from signaling processor 112. 
     The analog trunks are terminated in a voice interface unit such as 109 whose principal function is analog-to-digital conversion (and vice-versa) plus formating digital data for the TSI units. Voice interface unit 109 communicates with the central processor via signal processor 111. 
     Signal processor 111 is a directed processor under the control of central processor 108 and provides the scan, distribute, and digit reception tasks for analog trunks. Signal processor 112 performs the equivalent tasks for the digital trunks except that instead of physical scan and distribution points, the supervisory states of each trunk are stored in a memory of the signal processor. 
     The majority of the logic, control, storage, and translation functions required for the operation of the toll switching system are performed by central processor 108. A typical central processor suitable for use in the illustrative toll switching system is described in the Bell System Technical Journal, Vol. 56, No. 2, February, 1977. 
     As mentioned above, interoffice signaling information is extracted from the transmission paths of analog and digital trunks by signal processors 111 and 112, respectively, and used by central processor 108 for call processing. However, the signaling for certain trunks may be transmitted between the offices over a common data link separate from the transmission paths using a common channel interoffice signaling (CCIS) system. A typical common channel interoffice signaling system is described in The Bell System Technical Journal, Vol. 57, No. 2, dated February, 1978, and is depicted in FIG. 1 by CCIS terminal blocks 123 and 126 and data link 132. 
     Network Services Complex 
     Coupled to the toll switching system is network services complex 100 comprising NSC processor 101, time slot interchange unit 124, DS-1 interface 129, input/output control 130, and audio bridge 135. Network services complex 100 also includes other units such as a data conferencing facility, dual tone multifrequency receivers, and data storage which have not been shown to simplify the drawing and which need not be fully described herein for the reader to understand the present invention. 
     It is intended that network services complex 100 function with many different types of switching systems to provide several special services in addition to those mentioned above. As such, complex 100 has been designed to connect to a switching system via conventional interoffice trunks and a CCIS-like data link. Interoffice trunks 131 serving complex 100 are digital facilities, such as, for example, well-known T1 type, which are similar to the trunks between toll office 102 and local office 103 as described above, and data link 132 along with CCIS terminals 123 and 126 which are similar to those described in the 1978 Bell System Technical Journal cited above. 
     The network services complex is modularly designed to allow for various service units to be added. All units are interconnected over a time multiplex data bus 133 and a serial control bus 134. The control bus is used by NSC processor 101 via I/O control 130 to communicate control, status, and error information to the various units in the complex. Input/output control is a typical direct memory access circuit, whereas data bus 133 consists of a transmit and a receive leg, each handling 256 time slots of time-multiplexed PCM data. 
     Interface 129 connects interoffice trunks 131 from toll switching system 102 to time slot interchange unit 124 which switches any of the 128 or 256 time slots on the interoffice trunks and data bus 133, respectively. 
     The network services complex 100 is controlled by NSC processor 101 which performs all call processing, maintenance, fault recovery, diagnostics and audits for the entire complex. NSC processor 101 also interfaces with CCIS terminal 126 to transmit and receive messages from the host toll switching system 102. 
     As mentioned above, the network services complex can be equipped to furnish many services. For this illustrative embodiment, the complex is equipped with an audio bridge 135 which will be used for establishing audio conferences under customer control. 
     The Audio Bridge 
     The audio bridge is a multiport digital conference arrangement and is illustrated in more detail in the block diagram of FIG. 2. The conference arrangement comprises an audio bridge processor 200, bus interfaces 201 and 202, a plurality of echo canceler units such as 203, a plurality of speech detectors such as 204, and logic unit 226 which includes delay unit 205 and switching hardware 206. A speech detector and an echo canceler are provided on a per-port basis to detect and measure the level of speech and to control the amount of echo, respectively. In this illustrative embodiment, 64 speech detectors and 64 echo cancelers have been provided to make up a 64 port (channel, time slot) audio bridge, but only 60 on an alternating basis will be available for conferencing, the others being used for spares and maintenance testing. Thus, the audio bridge can form conferences varying in size from one 60-port conference to 20 three-port conferences. 
     Each port is monitored for the presence and the absence of speech above a threshold level, the instantaneous level of speech being represented by an information sample. The instantaneous levels of speech on a port are combined over a given time period to form a composite level for comparison with the threshold. Upon detecting speech, the speech detector for that port generates two control signals. One is a speech indication which designates the port as having speech thereon, and the other is a speech level estimate which is used for port selection and automatic level control. The audio bridge processor scans the speech detectors once each base cycle for these control signals to direct the switching hardware to include only information samples from selected, designated ports in the output sample. Generally, with one conferee speaking, only the input sample from that speaker is included in the output sample. With more than one conferee speaking simultaneously, the switching hardware sums the input sample from each speaker together to form the output sample. To allow sufficient time for speech detection and port selection, the delay unit stores all incoming information samples for a period of time equal to the worst case speech detection and channel selection time. During one portion of this time period, the two control signals are generated. During a subsequent portion, the delay unit applies the stored information samples to the switching hardware for selective inclusion in an output sample. 
     Communication within the audio bridge between the audio bridge processor and other units is via audio bridge control bus 212. The audio bridge communicates with the rest of the network services complex, and, therefore, the telephone network via serial control bus 134 and time multiplex data bus 133. It is over serial control bus 134 that the audio bridge receives orders from and sends replies to NSC processor 101 for establishing and controlling conferences. Time multiplex data bus 133, on the other hand, comprises a transmit and a receive leg for handling the samples of speech to be summed and distributed for each conference. 
     Audio Bridge Processor 
     Audio bridge processor 200 is a well-known 16 bit, bit-sliced microprogrammed controller that performs all common arithmetic, logic, and sequence control operations found in comparable 16 bit microcomputers. The audio bridge processor communicates with the NSC processor via audio bridge control bus 212 and is programmed to scan the transmit and receiver buffers within serial control bus interface 201 for orders to control the conferences and to format replies to the NSC processor. 
     The audio bridge processor also controls the status of the conferences by writing control information into the switching hardware control memory. In addition, the processor also scans the speech detectors to obtain information about the speech level of every port of the conference, maps the speech level into gain control coefficients, and then writes these coefficients into the switching hardware coefficient memory for noise and automatic level control. Furthermore, processor 200 controls the operation of the echo canceler hardware by writing control data into the echo canceler control registers. 
     Audio bridge processor 200 is disclosed in more detail in FIG. 3 and comprises a number of well-known processor and memory units which are commercially availabie. The basic units include microword data register 300, arithmetic logic unit 301, a program memory such as PROM 302, program address circuit 330, interrupt control circuit 331, and a data memory such as RAM 303. The audio bridge processor contains two internal buses, namely, address bus 317 and data bus 318. Access to the other units of the audio bridge, such as echo cancelers, speech detectors and the switching hardware, is via audio bridge control bus 212 which can also be used to transfer data to and from registers internal to the audio bridge processor. 
     The audio bridge is arranged so that various units within the bridge can act as sources and destinations for data on audio bridge control bus 212. Accordingly, each instruction specifies the source and destination address for data to be moved on the audio bridge control bus. Each address for program memory 302 is generated by program address circuit 330 and transmitted over internal address bus 317 to program memory 302 via address buffer/decoder 306. 
     Program address circuit 330 includes condition register 310, condition select multiplexer 311, mapping ROM 312, and address sequencer 305. The output of address sequencer 305 provides the address for program memory 302. In addition, the sequencer is directly connected to control bus 212 via conductors 321 to obtain addresses from any of the audio bridge registers that are acting as sources on the bus. Condition register 310 and multiplexer 311 are used to make conditional jumps which may be based on addresses applied to mapping ROM 312 from microword register 300. 
     Portions of the output of the program memory are then written into microword register 300, parity check circuit 308, and clock control circuit 309 via internal data bus 318. Microword data register 300 is a 32-bit latch that holds the instruction being executed. While the latched instruction is executed, a new instruction is fetched, thus permitting a pipelined architecture. Clock circuit 309 controls the number of clock cycles needed to execute the instruction by reading a field in the instruction. Parity of the instruction is calculated by parity check circuit 308. The instruction contained in microword data register 300 contains a source field, a destination field, and an overlay field. Interpretation of the overlay field depends on whether the instruction is for the arithmetic logic unit or the program address circuit. A special overlay buffer 319 is provided to allow words to be written into register 300 for diagnostic purposes. 
     The output of microword data register 300 is applied to arithmetic logic unit 301 and control bus source and destination register 307. Arithmetic logic unit 301 is capable of performing addition, subtraction, and other logical functions. Scratch-pad register 304 is also provided to conveniently move various types of data in arithmetic logic unit 301. Data bus source and destination register 307 decodes the source and destination address fields in the instruction to generate appropriate register input and output enable signals. 
     Data memory 303 in this embodiment is used as a temporary data store for the audio bridge processor and is controlled by sequencer 320 which permits the memory to act as both a data source and destination on control bus 212. To access the memory, address information from control bus 212 is first loaded into memory sequencer 320. Data from the memory is then placed on the control bus via data buffer register 316. 
     Interrupt control circuit 331 is also provided in the audio bridge processor. The interrupt control circuit comprises select register 322, mask register 313, mask logic 323, priority interrupt encoder 314, and interrupt vector buffer 324. In this illustrative embodiment, up to seven levels of external user-defined interrupts and seven software interrupts have been provided. When the interrupt circuit acts as a destination on control bus 212, a portion of the data is written into select register 322 and the remaining portion is written into mask register 313. The software interrupt can then be executed by masking the output of the select register with the output of the mask register. The masked output is then encoded by priority interrupt encoder 314 which drives buffer 324, whose output accesses program memory 302. 
     Time-out counter 332 is provided to function as a sanity timer which generates interrupts via interrupt select register 322. In addition, multiplexer 315 provides a one out of four source selection to reduce loading on control bus 212 and allows the data memory sequencer, time-out counter, interrupt control circuit, and microword register direct access to the bus. 
     Echo Canceler 
     Returning to FIG. 2, the echo canceler units are provided on a per-port basis as mentioned above. Each unit comprises an echo canceler such as 220, a plurality of latches 222-224 for gating speech samples into and out of the echo canceler, and a control register 221 under the control of audio bridge processor 200. An example of an echo canceler suitable for use in the echo canceler unit is described in &#34;A Single-Chip VLSI Echo Canceler&#34;, Bell System Technical Journal, Vol. 59, No. 2, February, 1980, pp. 149-160. 
     During its assigned time slot, the echo canceler receives a near-end speech sample from time multiplex data bus interface 202 via demultiplexer 207 and latch 222 and a far-end speech sample from the switching hardware via demultiplexer 225 and latch 223 in μ255 companded format. Echo canceler 220 computes the estimated echo and subtracts this from the near-end speech sample. The resultant is transmitted via latch 224 to switching hardware input bus 208. The speech samples from the switching hardware are transmitted to the time slot interchange unit via time multiplex data bus 133 and interface 202. 
     The transmit and receive legs of the time multiplexed data bus 133 pass 256 time slots of PCM audio data to and from time slot interchange unit 124. The audio bridge ports need only 64 time slots. The interface selects the 64 out of 256 time slots required for the audio bridge ports, formats the data, and generates timing signals for the echo cancelers, speech detectors, delay unit, and switching hardware. 
     Speech Detector 
     Speech detector 204 comprises a digital signal processor 216, two input shift registers 213 and 214, an output shift register 218, and speech level register (latch) 219. The speech detector does not modify the flow of data from the echo cancelers to the switching hardware but merely monitors the data flow on both the input and output sides, i.e., buses 208 and 209, of switching hardware 206 via demultiplexer 227 and 228. This gives the audio bridge processor full control over the gain or loss modification of the audio data and also permits the bridge to operate with some or all of the speech detectors out of service. 
     The digital signal processor 216 receives a synchronization pulse in the time slot to which the speech detector is assigned, and upon receiving the pulse, the speech detector starts alternately reading data from the switching hardware input and output buses 208 and 209 via shift registers 213 and 214, respectively, and multiplexer 215. In executing its program, the digital signal processor transmits a speech level measurement to output shift register 218 and latch 219. Periodically, the audio bridge processor scans the digital signal processor for a speech indication and, if present, reads the speech level measurement from the latch. This data is then transmitted over control bus 212 via multiplexer 210 which buffers data from all the speech detectors. 
     The audio bridge processor controls the digital signal processor via control demultiplexer 229 and register 217. By setting register 217, the digital signal processor can be put in any one of a number of operational or maintenance modes. 
     An example of a digital signal processor suitable for use in the present invention is disclosed in the Bell System Technical Journal, Vol. 60, No. 7, Part 2, September, 1981. 
     Switching Hardware 
     Switching hardware 206 performs three major functions in the conference arrangement, namely, it sums the speech samples from the time slots (ports, channels) into their respective conferences to form an output sample for each conferee, implements noise and automatic level control on incoming speech samples, and implements echo control by inserting loss into the speaker&#39;s receive path when echo cancelers are not effective. The audio bridge processor controls these functions by writing the coefficient memory of the switching hardware with appropriate coefficients. 
     Insofar as the switching hardware is concerned, conference summation is a two-step process which occurs over two time frames, where a frame comprises a maximum of 64 audio bridge time slots. The mouth samples for a given time frame are first combined to form a sum for each conference. Then in the following time frame, an ear sample is produced for each conferee by subtracting the conferees mouth sample from the conference sum. 
     The switching hardware used in this embodiment of the invention is shown in more detail in FIG. 4. The switching hardware receives the output of the echo cancelers via delay unit 205 over switching hardware input bus 208. Data is in the well-known μ255, eight-bit parallel format. This data is first converted to a 13-bit linear form by converter 400 using a table lookup operation, and the linear data is forwarded to input multiplier 404. 
     Input multiplier 404 implements the noise and automatic level control in the audio bridge. The two inputs to the multiplier are the linear mouth sample from converter 400 and a coefficient from coefficient memory 402 as determined by audio bridge processor 200. The determination of the coefficient to be applied to the incoming sample will be described below. When the coefficient is equal to zero because there is no talking on a conferee port, the background noise related to that time slot is eliminated. 
     To insure that both the multiplier and, indirectly, the coefficient are valid, overflow circuit 417 checks for products larger than can be allowed in the bridge. If an overflow condition is detected, the output is forced to a maximum level corresponding to the sign-bit of the output. 
     The output of the overflow circuit 417 is then applied to addition and subtraction hardware to produce the conference sums for each frame and the individual ear samples for each conferee. The addition and subtraction is performed by arithmetic logic unit 408 in cooperation with memories 403, 407, and 409. When producing the total conference sum, arithmetic logic unit 408 adds an adjusted mouth sample from input multiplier 404 to the partial sum of the conference which is an accumulation of mouth samples from all time slots in the current time frame for the particular conference. The partial sum is stored in accumulator memory 407 via sum register 411 and multiplexer 412. 
     To produce an ear sample for each conferee, the conferee&#39;s mouth sample from the previous frame is taken from memory 409 and subtracted from the total sum of all mouth samples from the same frame of the conference. 
     The conference accumulator from an operational point of view, contains two blocks of stored data, namely, the partial sum of mouth samples of the current frame and the total sum of all mouth samples received during the previous frame. 
     During the summing process, one additional block is used for an initialization process, while still another block remains idle. 
     The addressing of coefficient memory 402, control memory 403, accumulator 407, and mouth sample memory 409 is controlled by time slot and frame counter circuits. The blocks of data associated with each time slot in the memories are addressed by input and output time slot counters 418 and 419 via multiplexer 416. Since mouth sample memory contains two 64-word- data blocks, frame counter 420 is used to address the desired block of data. With accumulator 407, phase adder 421 in response to the frame counter addresses one of four data blocks. 
     As noted above, the audio bridge processor controls each conference as to its membership and the number and level of enabled simultaneous speakers. The processor exercises this control through the use of control memory 403 and coefficient memory 402. 
     Control memory 403 consists of sixty-four words, each of which, is associated with a conference port, i.e., a time slot. The control memory is written by audio bridge processor 200, via buffer 413, memory address register 424, and multiplexer 415. Each word in the control memory contains the address of the conference accumulator memory location to which a conference is associated. Thus, whenever a time slot sample is added to a partial sum or subtracted from a total sum, the sample in accumulator 407 is pointed to by control memory 403. 
     Coefficient memory 402 contains two 64-word data blocks, one word per time slot. One word corresponds to the input coefficient for adjusting the speaker&#39;s sample, and the other is for adjusting the listener&#39;s sample that is transmitted to a conferee. 
     The output of arithmetic logic unit 408 that is to be transmitted to a conferee is transmitted via difference register 414 and overflow circuit 410 to output multiplier 405. Multiplier 405 adjusts the ear sample by the coefficient factor received from memory 402 to provide additional echo control. Similar to the input operation, overflow circuit 406 makes sure that the output level of the ear sample does not exceed a certain threshold, and the resultant is converted back to μ255 format by output circuit 401. The companded signal is transmitted over switching hardware output bus 209 via interface 202 to data bus 133. It is via this data bus and the NSC time slot interchange unit that the summed speech samples are distributed over the communication network to the conferees. 
     Delay Unit 
     Returning again to FIG. 2, delay unit 205 stores the information samples from all 64 ports for a period of time before the samples are applied to switching hardware 206. This provides enough time for the speech detectors to designate channels having threshold samples thereon and the audio bridge processor to select designated channels. If the delay unit is not utilized, the information samples would be applied directly to the switching hardware, and the loss of samples, commonly called clipping, would likely occur. When the samples represent speech, this clipping may result in the loss of the initial syllable or even the entire first word of a new speaker. In order to minimize clipping, the delay time should be greater than the time required by the speech detector to detect the presence of speech and the audio bridge processor to select designated channels. 
     The delay circuit used in this embodiment is depicted in more detail in FIG. 5 and basically comprises a delay memory such as RAM 501 and address counter 502. Delay memory 501 receives information samples from all 64 channels via switching hardware input bus 208 and input buffer 503. Each sample appears on the bus as eight parallel bits of PCM information during one time slot of a 64 time slot frame. In addition, a parity bit is provided with every input sample, and both are written into one location in delay memory 501 after parity is computed by input parity check circuit 504. During a subsequent time frame, the same sample and associated parity bit are read out during the same time slot the bits were written into memory. Parity is computed again for each sample by output parity circuit 505. During each of the 64 time slots, a read-write sequence is followed: reading old data out of a memory location, writing new data into the same location, and incrementing address counter 502. 
     One arrangement is to delay the sample a multiple of eight time frames where eight frames equals one millisecond of delay. Since there are 64 ports, it takes (8 times 64) 512 words of memory to delay a sample eight time frames. When, for example, the size of the delay memory is 64,024 words, the maximum delay is 127 milliseconds. 
     The length of delay can be controlled by adjusting the maximum value of the address counter. Since address counter 502 is incremented every time slot, the counter may be configured to cycle through 512 words of memory for one millisecond of delay. To provide k milliseconds of delay, the address counter is configured to cycle through k times 512 words of memory. If no delay is desired, a control signal from the audio bridge processor causes multiplexer 506 to select input samples directly from input buffer 503 via bypass bus 550. 
     To summarize, information samples from the channels are first stored in the delay memory during one time frame and then retrieved during a subsequent time frame for application to the switching hardware. This delay period allows the speech detectors and audio bridge processor sufficient time to detect the presence of speech and select designated ports from which the switching hardware will include input samples in an output sample. In one case, the input samples and the control signal are received by the switching hardware during the same time frame. Alternatively, the input samples may be delayed a longer period of time to permit the control signals to be first received by the switching hardware. This allows time for the switching hardware to adjust the selected ports before receiving the input samples to avoid clipping. Once samples are applied to the switching hardware, conference summation is then a two-step process which occurs over two time frames as previously described. 
     Audio Data Flow 
     Having described the bridge hardware, a brief description of the data flow through the bridge is in order. During each time frame, 64 time slots of PCM data representing, for example, speech enter the audio bridge via time multiplex data bus 133. Each time slot of data is first sent to an echo canceler such as 203 where various degrees of echo cancellation may be performed. Leaving the echo canceler unit, the data is sent to delay unit 205 where it is delayed for a period of time sufficient for a speech detector such as 204 to detect the presence and absence of speech above a threshold and audio bridge processor 200 to adjust the switching hardware to receive samples from selected ports. From the delay unit, the data is sent to the switching hardware where the incoming data is summed and distributed to each port of a conference. 
     A speech detector for each of the 64 ports (time slots, channels) monitors the data going into the delay unit and generates a speech/no-speech (busy/idle) indication and a speech level estimate. The speech level estimate or, more particularly, the peak energy level over a period of time on the port, is represented as an eight-bit number in a speech level register such as latch 219, whereas, the speech/no-speech indication is a one-bit number generated by the digital signal processor. The audio bridge processor scans each speech detector every program base cycle to obtain the speech/no-speech indication and the speech level estimate. These are then used by a conference processing program to select which ports of a conference are enabled on the bridge. 
     Conference Processing Program 
     The conference processing program is part of the audio bridge processor firmware and software that utilizes priority levels to determine which ports in a conference are enabled on the bridge. To ensure the stability of the bridge, only a limited number of simultaneous speakers are heard by the conferees. Thus, the program must sometimes select which active ports will be enabled. That is, which ports with speech on them will be enabled on the bridge. A fundamental concern is that certain active ports should be enabled on the bridge easier than others. Appropriately, those ports should have a higher priority level than others. Hence, the priority level of each port is made a function of several pluralities or sets of states, such as, for example, the levels of speech on the port, the history of activity on the port as well as the period of time the port has remained in the present activity state, and an &#34;assigned port priority&#34;. In addition, other sets of states devised by one skilled in the art may be used, such as the time of day, distance from the bridge, time zone, transmission facility type, etc. 
     Normally, the conferee who is presently speaking on an enabled port should have a higher priority level for staying enabled on the bridge than that of a conferee just beginning to talk. However, the conference processing program allows the speech level to adjust the priority level of active ports so that loud interrupting speakers may be heard on the bridge. 
     The history of activity on the port is also used to adjust the priority level. Thus, a different priority level constant is associated with each different activity state. In addition, the state count--the number of program base cycles a port remains in a given activity state--is used to adjust the priority level of each port. 
     Another factor in adjusting the port priority level is the &#34;port priority&#34; assigned by the NSC processor. For example, when a port is added to a conference, the NSC processor sends a control signal to the audio bridge processor designating the port as having one of four port priorities: broadcast (BC), attendant (AT), normal (NORM), and listen-only (LO). The speech samples from a broadcast priority port are broadcasted to all other members of the conference. A port with attendant priority is always enabled on the bridge when the port is active--that is, when the conferee is speaking. This guarantees that speech from the attendant port will always be heard by the other conferees. If the number of attendant priority ports is greater than the maximum number of permitted simultaneous speakers, then only the attendant ports with the highest priority levels will be enabled. A port with normal priority receives no special treatment. When a normal priority port is active, it is enabled as long as the maximum number of simultaneous speakers is not exceeded. A port with listen-only priority is never enabled on the bridge. Thus, a listen-only port simply monitors the conference and cannot participate in the conversation. 
     Included in the conference processing program is an algorithm which keeps track of the present activity state, state count, and other variables of each port to establish priority levels. The program uses this algorithm once each program base cycle to update the activity state and priority level of each port. 
     A detailed state diagram for the conference processing algorithm is depicted in FIG. 6. As shown, the diagram includes six activity states and all the possible state transitions. The bold transition paths represent the more common transitions made in normal program operation, whereas the 1ighter paths represent special cases. Inactive (sp) ports are normally in &#34;idle&#34; (II) state 601. When a conferee starts talking, the active port first assumes &#34;entry&#34; (EA) state 602 and is then enabled on the bridge. In addition, the state count is initialized and subsequently incremented each base cycle to measure the time interval speech samples are present on the port in the entry state. If the conferee speaks for a time interval called the entry period (NE), such as, for example, 500 milliseconds, the port assumes either &#34;bridged&#34; (BA) state 603 or &#34;holdover bridged&#34; state 605 depending on whether the conferee continues to talk. If speech is not detected, the port assumes the holdover bridged state. If speech continues, the port assumes the bridged state, and automatic level control is performed. 
     Automatic level control reduces the speech level contrast of different conferees. The speech detector for each port not only provides speech detection, but estimates the level of speech on the port. The audio bridge processor reads the speech level from each speech level register every program base cycle to control the rate of change of signal level adjustment. These level adjustments are implemented using gain coefficients which are written into the coefficient memory of the switching hardware. 
     One feature of this invention is a variable holdover technique to reduce speech clipping between words and to reduce the amount of noise heard on the bridge. For example, if a port in the entry state becomes inactive before the end of the entry period, it assumes &#34;holdover entry&#34; (HE) state 604 for a short holdover period (NHE1) such as, for example, 20 to 200 milliseconds, and is then placed back in the idle state. If during this short holdover period the port becomes active again, the port resumes the entry state with entry period timing restarted. As a result, the entry period helps to prevent the automatic level control from adjusting to extraneous noises. Whereas, the short holdover period causes the amount of noise heard on the bridge to be reduced and facilitates other active ports with speech thereon to be enabled on the bridge. 
     Similarly, if a port in the bridged state becomes inactive due to, for example, pauses between words, the port assumes the holdover bridged (HB) state with a long holdover period (NHB1) such as, for example, 1.5 seconds. This reduces speech clipping caused by constantly enabling and disabling a port from the bridge. During this long holdover period, an active port may resume either the entry or the bridged state depending on how long the port has been in the holdover bridged state as shown in FIG. 6. If the port remains inactive during the entire holdover period, the port assumes &#34;wait&#34; (WI) state 606. 
     Wait state 606 is an intermediate state between the holdover bridged and idle states. When a port remains inactive in the holdover bridged state, the port is placed in the wait state rather than the idle state. Ports in the wait state are not enabled on the bridge. The only purpose of the wait state is to allow ports that have a recent history of speech, priority over ports that are in the idle state. A port will move to the idle state after a period called the wait period (NW) such as, for example, five seconds. It is thought that in most large conferences, only a few conferees do most of the talking. Therefore, in the event that many ports become active at the same time, the active ports in the wait state, rather than the idle state, may be considered the best ports to be enabled. 
     As mentioned, to ensure stability, the conference processing program limits the number of active ports (simultaneous speakers) enabled on the bridge. The maximum number of simultaneous speakers (MAX) is a parameter that may range, for example, from one to five. The larger the number, the more transparent the bridge is to the conferees, and the less chance of speech clipping. The disadvantage of a large number of simultaneous speakers is that as the number increases, the overall noise level on the bridge also increases. As shown in FIG. 6, the MAX parameter is used by the conference processing algorithm to make state transitions. 
     In addition, the conference processing program identifies the number of ports enabled on the bridge and always enables a minimum number. This minimum number (MIN) may vary, for example, from zero to two. When zero, no noise is heard on the bridge when all of the ports in a conference are inactive. This is annoying as the conferee has the feeling that he is cut off from the conference. When MIN equals one, the last port which was active is left in a holdover state until some port becomes active. Therefore, everyone hears noise from the active port except the conferee on the active port, who hears nothing. When MIN equals two, the last two active ports are left in the holdover states where all conferees hear some noise. An advantage for having a large number for MIN is that the last active ports are often the most probable ports to be active again. Hence, there is less chance of speech clipping. However, the disadvantage is that the total amount of noise always heard on the bridge is greater. 
     During each base cycle of the program, the state of each port is updated. Shown in FIG. 6, next to the state transition paths, is a set of conditions which cause a transition. In some cases, the transition is from one state to another. In others, the port remains in the same state as indicated by the transitions paths looping back on the same state. The variable &#34;i&#34; on the transition paths represents the state count of a port which is either incremented (++) or set to a designated constant and is stored in a 64-word block of data memory 303. As mentioned, the conference processing program utilizes the state count to measure the time interval that a port remains in a given activity state, as well as the time that speech is present on the port in that activity state. The variables &#34;sp&#34; and &#34;sp&#34; represent the presence and absence of speech on the port, respectively, as indicated by the speech detector and are stored in the speech level table stored in data memory 303. The &#34;adjusted priority rank&#34; is represented by the variable &#34;apr&#34; and will be discussed later. By way of example, a transition from the idle to the entry state occurs when there is speech on the port and the adjusted priority rank of the port is less than or equal to the maximum number of permitted simultaneous speakers. This transition also causes the state count to be initialized or set to zero. 
     Software Implementation 
     The program implements the state diagram depicted in FIG. 6 by assigning each port an &#34;adjusted priority level&#34; (apl). The larger the adjusted priority level, the higher the port priority and the more likely the port is to be enabled on the bridge. The adjusted priority level is the sum total of the priority constants attributed to the present activity state of the port including the speech/no-speech indication, the assigned port priority, and the speech level estimate. Ports in a conference with the largest adjusted priority levels are enabled on the bridge. In this embodiment, the five ports in a conference with the largest adjusted priority levels are assigned an &#34;adjusted priority rank&#34; of one through five. The highest priority port has an adjusted priority rank of one, the second highest priority port having an adjusted priority rank of two, etc. If a conference has a port with broadcast priority, the broadcast port will typically have an adjusted priority rank of one. The adjusted priority rank is shown in the state diagram of FIG. 6 as the variable &#34;apr&#34;. 
     Conference Processing Program Operation 
     The conference processing program is part of the operational software in the audio bridge processor which is shown in FIG. 7. This operational software may take, for example, two to three milliseconds to complete one base cycle which includes time for communicating with the NSC processor and performing internal jobs such as hardware exercises, error checks, audits, etc. 
     As mentioned, the conference processing program implements the conference processing algorithm by assigning an adjusted priority level to each port. One base cycle of the conference processing program is depicted in the flow diagrams of FIGS. 8 through 14. In block 801 of FIG. 8, the speech level estimate and speech/no-speech indication from each port are read by the audio bridge processor and then written into a speech level table in data memory 303. In blocks 802 and 803, each conference on the audio bridge is then processed independently and sequentially. 
     As indicated in block 901 of FIG. 9, conference processing begins by determining the first port number in a linked list stored in data memory 303. An adjusted priority level (apl) is then obtained for the port in the following manner: first, the eight-bit speech level estimate (measurement) is read from the speech level table and placed in a general register of arithmetic logic unit 301. This 16-bit general register contains the adjusted priority level of the port during processing. The layout of a 16-bit word representing exemplary priority constants that may be used to establish the adjusted priority level of a port is shown in FIG. 15. The activity state of the port and the assigned port priority are read out of two 64-word tables in data memory 303. In blocks 902 through 906, each port is assigned an initial adjusted priority level which is a function of the speech level on the port and a port priority constant. For listen-only ports, the adjusted priority level along with the speech/no-speech indication are set to zero. 
     In FIGS. 10 through 13, additional constants are added to the adjusted priority level depending on the present activity state (blocks 1001, 1002, 1101, 1102, 1201, and 1301), the speech/no-speech indication (blocks 1003, 1004, 1103, 1104, 1202, and 1302), and the state count (blocks 1105, 1203, and 1303-1305) of the port. It is during this sequence of steps that a predetermined combination of states is given its relative priority or rank with respect to any other combination of activity states, speech levels, and assigned port priorities. Also, the activity state and state-count are updated for those indicated cases. After these processing steps, the adjusted priority level of the port is equal to the sum total of the speech level, the activity state/state-count constant, and the assigned priority constant. 
     In accordance with one feature of this invention, a port may assume one of two holdover states depending on how long speech has been present on the port. This variable holdover technique is implemented using the state count: the number of program base cycles a port remains in a particular activity state. As previously mentioned, when information samples representing the level of a speech signal above a predetermined reference level are detected on an idle port, the port assumes the entry state where entry period timing is performed using the state count (i). As long as there is speech on the port and the state count is less than some constant such as, for example, NE, the port remains in the entry state. When information samples representing the level of a speech signal above the reference level are not detected, the port assumes holdover entry state HE with the state count being set to zero as depicted in FIGS. 6 and 11. This is usually indicative of extraneous background noise on the port. Once the port assumes the holdover entry state, the presence of speech and the state count are monitored as shown in FIG. 12. If speech is once again detected, the port resumes the entry state. If not, the state count is incremented until a short holdover period (NHE1) is reached at which time the port returns to the idle state. Until then, the adjusted priority level is adjusted each cycle as shown in FIG. 12. 
     When the entry period is reached with speech detected on the port, the port assumes the bridged state. Again, as long as speech is detected, the port remains in the bridged state. When speech is no longer detected, as with pauses between words of a speaker, the port assumes the holdover bridged state HB with the state count being set to zero as depicted in FIGS. 6 and 10. In the holdover bridged state, the port is monitored for speech as shown in FIG. 13. When speech is again detected, the port resumes the bridged or the entry state depending on the state count. Otherwise, the state count is incremented along with the adjusted priority level being until the long holdover period (NHB1) is reached at which time the wait state is assumed. 
     Finally, unless the port is inactive and either in the idle or wait state, a priority sort subroutine is called which is depicted in the flow diagram of FIG. 16. The priority sort subroutine is a well-known sort by insertion sorting routine that inserts the adjusted priority level and the port number of a port in a conference sort array such that the port with the largest adjusted priority level is at the top of the sort array, and the port with the smallest adjusted priority level is at the bottom. Note that the minimum number of ports that may be sorted in each conference is the minimum number of ports always enabled on the bridge (MIN). The maximum number of ports that may be sorted is the actual number of ports (MAXP) in the conference. The conference sort array is depicted in FIG. 17 and is stored in data memory 303 of the audio bridge processor. 
     After all the ports in a particular conference have been processed, the ports in the sort array that have the highest adjusted priority rank are enabled on the bridge as shown in FIG. 14. In blocks 1401 through 1406, the initial/next port is first read out of the sort array. If the adjusted priority rank of the port is equal to or less than the maximum number of simultaneous speakers to be heard, the port is enabled on the bridge; otherwise, the port is disabled. 
     In accordance with another feature of this invention, a minimum (MIN) number of ports is always enabled on the bridge to provide background noise for each conferee. This is to eliminate the feeling of a conferee that he is cutoff from the conference. This is accomplished by subroutine 1404 which provides a minimum number of ports to be enabled on the bridge. A detailed flow diagram of subroutine 1404 is depicted in FIG. 18. After the adjusted priority rank of the port is compared with the maximum (MAX) number of simultaneous speakers to be heard on the bridge as shown in block 1402 of FIG. 14, the adjusted priority rank is compared again with a minimum (MIN) number of ports to be enabled on the bridge as depicted in block 1801 of FIG. 18. If the adjusted priority rank (apr) is greater than the minimum number such as, for example, two, there are enough ports to provide background noise to each conferee, and the subroutine is exited. When the apr is less than or equal to MIN, a check is made to determine whether the port is in either of the holdover states as shown in block 1802. If not, the subroutine is exited, and the port is enabled on the bridge. Otherwise, the state count (i) of the port and an entry in an array of constants NFRZ(apr) are compared (block 1803). The size of the array is the value of MIN. By way of example, if MIN equals two, there are two constants (NFRZ(1), NFRZ(2)) in the array. These constants represent the maximum value that the state count (i) is allowed to reach when the apr of the port is less than MIN. However, in this case, where the port is to remain in the holdover state to provide background noise, the state count is set to the constant NFRZ(apr) as shown in block 1804, and the port continues to remain enabled on the port. Thereafter, the port will stay in the holdover state until some other port becomes active. Then normal incrementing of the state count will cause the port to go either to the idle or the wait state. 
     After this conference has been processed, the program will continue to process any other conferences during each base cycle of the program. 
     In summary, the conference processing program rank orders the adjusted priority level of each port to determine which conferee ports in a conference are enabled on the bridge. To ensure the stability of the bridge, only a limited number of simultaneous speakers are heard by the conferees. The priority level of each port is a function of several pluralities or sets of states, such as, for example, the levels of speech on the port, the history of activity on the port as well as the number of base cycles the port has remained in the present activity, and an assigned port priority. As suggested, two or more other sets of states devised by one skilled in the art may be used. 
     In accordance with one feature, two port activities designated as holdover states are provided to improve the quality of communication on the bridge. One holdover state having a short holdover period is used to return to the idle state those ports with annoying extraneous noise such as, for example, breathing, rustling of papers, etc. Another holdover state with a much longer holdover period is utilized to prevent speech clipping between the words of a speaker. 
     In this illustrative embodiment, the presence, absence, and levels of speech are determined by a speech detector for each port. The conference processing program then uses the presence of speech to update the present activity or &#34;activity state&#34; of each port. Each activity state is assigned a different priority level of each port. In addition, the state count--the number of base cycles a port remains in a given activity state--is used to adjust the port priority level. Another factor in adjusting the port priority level is the port priority constant assigned by the NSC processor. All of these weighted factors are combined to form an overall priority level for each port. After the conference processing program determines the overall priority level for each port, the levels are sorted to establish a rank order. The ports with the highest rank order are then enabled on the bridge for that base cycle. 
     Another feature of this invention ensures that the conferees are provided with a minimum amount of background noise to eliminate the feeling that a conferee has been cut off from the conference. This is accomplished by the conference processing program always enabling a minimum number of ports on the bridge, particularly those in the holdover states. The ports in the holdover states are typically the last ones to have speakers thereon and are the most likely to become active again. 
     It is to be understood that the above-described method and apparatus is merely an illustrative embodiment of the principles of this invention and that numerous other methods and arrangements may be devised by those skilled in the art without departing from the spirit and scope of the invention. In particular, one skilled in the art may provide additional holdover states with varying holdover periods to discriminate between different types of information samples on a port and may vary the number of minimum ports enabled on the bridge. Furthermore, ports in states other than holdover states may be also enabled on the bridge to satisfy the minimum enabled ports requirement.