1. A method of segmenting an input signal into a plurality of segments, the method comprising: deriving a feature-space sequence of feature vectors from the input signal; and applying dynamic program techniques to the sequence of feature vectors to identify clusters of feature vectors and boundaries between clusters, wherein the boundaries between the clusters indicate the segment boundaries.