Basically I'm looking for the reverse of this question - I have voice recordings coming from a phone and I can immediately see from the spectrum that only frequencies up to 3khz have been preserved.

frequency spectrum recorded MP3

I'd like to, if there's a reasonable setup possible on Linux, to simulate the playback from the phone, so that the voice is more understandable (my problem is that I don't even really know what terms to search for, thus, this question) - what do I have to look for?

For more context: The recordings are from a messenger (think Signal, WhatsApp). Actually, what confuses me is that even with earphones the playback is fine on the phone, I'm reasonably sure though that the files played back there are the same as when taken from the web version of the messenger (which are simply mp3 files). The goal in the end would be to script this whole thing of course, so I don't have to grab the phone and switch headphones while on the web chat.

Edit: Okay, for some more thoughts, I've recorded the phone playback through a mic, which doesn't sound that dull, due to the awful speaker of course.

spectrum phone speaker recording

So, with a preference for the phone speaker emulation, how could I get the original recording more spread out / emulate the phone speaker? Assuming for example that I can record a profile of sorts of how the speaker plays any recorded input - not simply tweaking the equalizer settings of the existing recording.

1 Answer 1


I think that what you are looking for is something like SOX, through which you will be able to script a solution.

The solution will be to simply apply an EQ curve to the recordings to emulate the scenario where you are playing back the file through the phone. It might just be that your current playback solution isn't quite cutting it so some EQ might help with this, however with only a 6kHz sampling rate you're not going to be able to re-create any of the missing voice frequencies unfortunately. That option isn't open to you. So your best bet I think is EQ.

Sox is available here: http://sox.sourceforge.net/sox.html

A more complex option would be to use convolution to re-create the signal path through the phone. The way this is normally achieved is to send a sweep tone through the signal path to be analyzed and then record the result. The source sweep and the recorded sweep are passed through a de-convolution tool (inverse convolution) in order to create an impulse response that represents the signal path just analyzed. You can then use a convolution reverb to then apply this signal path to an incoming source audio signal.

This is an article I wrote that explains the process using sequoia.


  • Do you require any further assistance on this?
    – Mark
    Mar 11, 2019 at 0:16
  • Thanks, SOX is good to automate the EQ approach and that's what I'll do in the meantime. However I'm not very happy with what sound I get from that. In fact I'd really prefer to find a way to emulate the (awful) more high pitched phone sound, that's why I kept the question open.
    – ferada
    Mar 17, 2019 at 22:51
  • 1
    Ok there is another option for you which is more complex but I will edit my answer to explain.
    – Mark
    Mar 17, 2019 at 22:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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