it will be appreciated from the introduction that multipulse coders and sparse vector celp coders have in common the features that the exciation employed is in both cases a frame containing a number of pulses significantly smaller than the number of allowable positions within the frame . the coder now to be described is similar to celp in that it employs a sparse vector codebook which is , however much smaller than that conventionally used ; perhaps 32 or 64 entries . each entry represents one excitation from which can be derived other members of a set of excitations which differ from the one excitation -- and from each other -- only by a cyclic shift . three such members of the set are shown in fig1 a , 1b and 1c for a 32 position frame with five pulses , where it is seen that 1b can be formed from 1a by cyclically shifting the entry to the left , and likewise 1c from 1a . the amount of shift is indicated in the figure by a double - headed arrow . cyclic shifting means that pulses shifted out of the left - hand end wrap around and reenter from the right . the entry representing the set is stored with the largest pulse in position 1 , i . e . as shown in fig1 d . the magnitude of the largest pulse need not be stored if the others are normalised by it . if the number of codebook entries is 32 , then the excitation selected can be represented by a 5 - bit codeword identifying the entry and a further 5 bits giving the number of shifts from the stored position ( if all 32 possible shifts are allowed ). fig2 is a block diagram of a speech coder . speech signals received at an input 1 are converted into samples by a sampler 2 and then into digital form in an analogue - to - digital converter 3 . an analysis unit 4 computes , for each successive group of samples , the coefficients of a synthesis filter having a response corresponding to the spectral content of the speech . derivation of lpc coefficients is well known and will not be described further here . the coefficients are supplied to an output multiplexer 5 , andd also to a local synthesis filter 6 . the filter update rate may typically be once every 20 ms . the coder has also a codebook store 7 containing the thirty - two codebook entries discussed above . the manner in which the entries are stored is not material to the present invention but it is assumed that each entry ( for a five pulse excitation in a 32 sample period frame ) contains the positions within the frame and the amplitudes of the four pulses after the first . this information , when read from the store is supplied to an excitation generator 8 which produces an actual excitation frame -- i . e ., 32 values ( of which 27 are zero , of course ). its output is supplied via a controllable shifting unit 9 to the input of the synthesis filter 6 . the filter output is compared by a subtractor 10 with the input speech samples supplied via a buffer 11 ( so that a number of comparisons can be made between one 32 - sample speech frame and different filtered excitations ). in order to ascertain the appropriate shift value , certain techniques are borrowed from multipulse coding . in multipulse coding , a ccommon method of deriving the pulse positions and amplitudes is an iterative one , in which one pulse is calculated which minimises the error between the synthetic and actual speech . a further pulse is then found which , in combination with the first , minimises the error and so on . analysis of the statistics of mp - lpc pulses show that the first pulse to be derived usually has the largest amplitude . this embodiment of the invention makes use of this by carrying out a multipulse search to find the location of this first pulse only . any of the known methods for this may be employed , for example that described in b . s . atal and j . r . remde , ` a new model of lpc excitation for producing natural sounding speech at low bit rates ,` proc . ieee int . conf . assp , paris , 1982 , p . 614 . a search unit 12 is shown in fig2 for this purpose its output feeds the shifter 9 to determine the rotational shift applied to the excitation generated by the generator 8 . effectively this selects , from 1024 excitations , allowed by the codebook , a particular class of excitations , namely those with the largest pulse occupying the particular position determined by the search unit 13 . the output of the subtractor 10 feeds a control unit 13 which also supplies addresses to the store 7 and sift values to the shifting unit 9 . the purpose of the control unit is to ascertain which of the 32 possible excitations represented by the selected class gives the smallest subtractor output ( usually the mean square value of the differences , over a frame ). the finally determined entry and shift are output in the form of a codeword c and shift value s to the output multiplexer 5 . the entry determination by the control unit for a given frame of speech available at the output of the buffer 11 is as follows : ( i ) apply successive code ( codebook addresses ) to the store 7 ( ii ) apply to each codebook entry a shift such as to move the largest pulse to the position indicated by the ` multipulse ` search . ( iii ) monitor the output of the subtractor 10 for all 32 entries to ascertain which gives rise to the lowest mean square difference . compared with a conventional celp coder using a 1024 entry codebook , there is a small reduction in the signal - to - noise ratio obtained due to the constraints placed on the excitation ( i . e . that they fall into 32 mutually shiftable classes ). however there is a reduction in the codebook size and hence the storage requirement for the store 7 . moreover , the amount of computation to be carried out by the control unit 13 is significantly reduced since only 32 tests rather than 1024 need to be carried out . to allow for the sub - optimal selection , inherent in the ` multipulse search `, the above process may also include excitations which are shifted a few positions before and after the position found by the search . this could be achieved by the control unit adding / subtracting appropriate values from the shift value suplied to the shifting unit 9 , as indicated by the dotted line connection . however , since the filtered output of a time shifted version of a given excitation is a time shifted version of the filter &# 39 ; s response to the given excitation , these shifts could instead be performed by a second shifter 14 placed after the synthesis filter 6 . once wrap - around occurs , however , the result is no longer correct : this problem may be accommodated by ( a ) not performing shifts which cause wrap around ( b ) performing the shift but allowing pulses to be lost rather than wrapped around ( and informing the decoder ) or ( c ) permitting wraparound but performing a correction to account for the error . the generation of the codebook remains to be mentioned . this can be generated by gaussian noise techniques , in the manner already proposed in &# 34 ; scholastic coding of speech signals at very low bit rates &# 34 ;. b . s . atal & amp ; m . r . schroeder , proc ieee int conf on communications , 1984 , pp 1610 - 1613 . a further advantage can be gained however by generating the codebook by statistical anaylsis of the results produced by a multipulse coder . this can remove the approximation involved in the assumption that the first pulse derived by the &# 34 ; multipusle search ` is the largest , since the codebook entries can then be stored with the first obtained pulse in a standard position , and shifted such that this this pulse is brought to the position derived by the unit . although the various function elements shown in fig2 are indicated separately , in practice some or all of them might be performed by the same hardware . one of the commercially available digital signal processing ( dsp ) integrated circuits , suitably programmed , might be employed , for example . although the ` multipulse search ` option has been described in the context of shifted codebook entries , it can also be applied to other situations where the allowed excitations can be divided into classes within which all the excitations have the largest , or most significant , pulse in a particular position within the frame . the position of the derived pulse is then used to select the appropriate class and only the codebook entries in that class need to be tested . fig3 shows a decoder for reproducing signals encoded by the apparatus of fig2 . an input 30 supplies a demultiplexer 31 which ( a ) supplies filter coefficients to a synthesis filter 32 ; ( b ) supplies codewords to the address input of a codebook store 33 ; ( c ) supplies shift values to a shifter 34 which conveys the output of an exccitation generator 35 connected to the store 33 to the input of the synthesis filter 32 . speech output from the filter 32 is supplied via a digital - to - analogue converter 36 to an output 37 .