In Robert Gallager's lecture notes for 6.450 Principles of Digital Communications I, Exercise 2.1 asks an interesting conceptual question:

Voice waveforms could be converted to binary data by sampling at 8000 times per second and quantizing to 8 bits per sample, yielding 64kb/s. [...] Modern speech coders can yield telephone-quality speech at 6-16 kb/s. If your objective were simply to reproduce the words in speech recognizably without concern for speaker recognition, intonation, etc., make an estimate of how many kb/s would be required. [...] (Note: There is clearly no “correct answer” here; the question is too vague for that. The point of the question is to get used to questioning objectives and approaches.)

My first instinct was to look up number of words used today in English language (~170,000), calculate how many bits would be required to brutely encode each word (~18), and look up, on average, how fast we speak in terms of words per second (~2), and come up with 36 bits per second as my crude answer. I'm not sure if not concerning with the speech waveform itself, and all the signal processing that would entail, is a reasonable way of thinking about the problem. I'm here for feedback and other ways of thinking about this problem.

(This is not a homework assignment. I was studying the notes myself and I'm curious.)

  • $\begingroup$ That would certainly establish a minimum. You could go up from there (volume, pitch, intonation). Consider the difference between "You're going to lunch!" and "You're going to lunch?", and how that is conveyed over the phone. $\endgroup$ – TimWescott Dec 13 '19 at 21:04
  • $\begingroup$ @TimWescott the question already ignores the intonation and recognition issues... $\endgroup$ – Fat32 Dec 13 '19 at 21:17
  • $\begingroup$ I missed that -- but I don't think you could ignore that in practice! $\endgroup$ – TimWescott Dec 13 '19 at 21:19
  • $\begingroup$ @TimWescott in practice voice coders are used and the minimum is about 1 Kb/s... $\endgroup$ – Fat32 Dec 13 '19 at 21:23
  • $\begingroup$ Your computation is right and inded it's even smaller. Because instead of using a FLC (fixed length code) of 18 bits per average word, you can simply use entropy encodeders to reduce the average codeword length. I remember English alphabet (26 letters and space) had an Nth-order Shannon entropy limit of (apprx) 1.5 bits per letter, which would yield 1.5 (bits/letter) x (5 letters/word) x (2 word/second)= (apprx) 15 bits per second on the average. HOWEVER this assumes that both sides are using ideal speech recognition and text to speech engines; making the solution technically hard to achieve. $\endgroup$ – Fat32 Dec 13 '19 at 21:35

This all depends how you interpret the requirements and what is "good enough".

For example, a really bandwidth efficient method would to simply encode with a speech to text system, send the text and re-encode with a text to speech system. That would be about 0.075 kb/s (150 words per minute, 6 letters per word, 5 bits per letter).

That would make a pretty terrible speech coding system but whether that meets the "rules" or not is more a semantics than a technical question.


In practice, most speakers seems quite predictable.

If you could do speech-to-text followed by a per-speaker prediction based on his/her precious speeches, I assume that the truely unpredictable/novel part of anything I say is going to be quite miniscule. Some machine learning ought to be able to generate something resembling my response to any topic based on my history, using a few bits for seed and residual correction.

Then there is the trivial part of mapping that compact set of bits to an «audio avatar» that sounds like me given some text input.

If everything is known before hand and large models can be distributed by pigeons prior to the communication taking place, I doubt that you would need many bits to replace me :-)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.