5

My child is hearing impaired and

  • can not hear frequencies above 1kHz, and
  • from 500Hz to 1kHz the hearing is degrading from 50% to 0,
  • under 500 Hz it is stable at 50%.

I would like to mimic that on my computer so that I can better support and assist my child when learning to speak. Is there a simple way to do that with Linux?

Either within the system or with separate software? I am using Ubuntu, but am as well willing to trying another flavour if that makes it easier.

New contributor
Samuel Frey is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
2
  • 1
    horseguy, your edit made it nearly impossible to understand what Samuel was saying there! You cannot just add punctuation in the wrong places! Commented yesterday
  • The punctuation are in the right places for the most part, but the first paragraph was kind of tricky to edit, so whoops. Commented yesterday

2 Answers 2

7

What you describe is a filter, something that has different attenuation at different frequencies.

You want that filter to be adjustable in different areas, so to be able to adjust it to be similar to what your child hears.

You probably have seen such adjustable filters in real life, already! On audio equipment, they're typically called equalizers (namely, because they're used, in the presence of all the audio equipment and the room it's in, to make the loudness equal on all relevant frequencies. You kind of do the opposite!)

Most operating systems bring a graphical equalizer with them. For example, on my fedora I've installed the easyeffects, and lsp-plugin-lv2 packages (and they're called the same on Ubuntu 25.04, on which I've checked), opened easyeffects, clicked on "effects" and then "Equalizer"; and this is what it looks like:

screenshot

I set the number of Bands from 16 to 32. Then, clicked on "calculate frequencies" and "Sort Bands".

I don't know what "hearing of 50%" really means – a reduction of 50% in sound power is just -3 dB in an equalizer (a reduction to 1/10 is -10 dB), I suspect it's much more, because the human hearing apparatus massively corrects "automatically" for reductions in input volume.

I'd do something like pulling all the sliders above 1.1 kHz to maximum attenuation (-36 dB?), and in between ca 500 Hz to 1.1 kHz just make a nice linear ramp (in dB).

I promise you that you that the result will sound terrible "muddy" for you – don't assume it "feels" as bad for your child, though! You're used to hearing up to 8, 10, 12, maybe even 16 kHz quite well, but your child isn't, and its brain doesn't "care" that there's "crispiness" above 1 kHz. Generally, being able to hear between 300 to 800 Hz is pretty helpful – that's really where most of voice happens.

If you have headphones and a microphone, you can use qpwgraph to "patch" your microphone into the input of the "easyeffects sink", and listen to someone speaking into the microphone on your headphones. (note that this will not quite work for yourself speaking into the microphone, because there's body conduction for your own voice)

0
2

I am using Ubuntu, but am as well willing to trying another flavour if that makes it easier.

As a media guy, I've settled on Ubuntu Studio:

https://ubuntustudio.org/

It's still Ubuntu, so all of that still applies, and it comes with a TON of media-related apps preinstalled and working so you don't have to mess with that. You just have to sort through a mountain to find the one thing that you want to use...

And, as part of a recent church sound booth install that needed some intentional de-sync for some lyric videos (whoever made those videos did NOT understand actually singing along!), I put this in a script on their UStudio machine to run at login:

#!/bin/bash

# called from System Settings -> Startup and Shutdown -> Autostart -> Login Scripts



# Settle down

sleep 30



# Audio Setup

pactl   load-module     module-null-sink    sink_name=Audio_Delay   format=float32  rate=48000  channels=2  channel_map=front-left,front-right

# (from pactl get-default-[sink|source])
pactl   set-default-sink    "Audio_Delay"

carla ~/Scripts/Audio-Delay.carxp &

Essentially it:

  • Creates a new virtual audio device and makes that the default instead of any sound card, then
  • Opens a plugin host, with a session file that loads (in my case) a delay plugin, and makes the connections from the virtual device to the delay and then to the physical device.

To make it do what you need instead:

  • Comment out the last line since the session file doesn't exist yet.
  • Reboot, and see that your default audio device has changed, and is effectively a black hole at this point.
  • Open Carla and poke through the list of plugins. There's something for everyone in there, but I like the LSP series because it's meant to be transparent and VERY well-featured, as if to build a studio mixing console from. A lot of the others are aimed more at musicians to create a sound before mixing, so they have more "artsy" designs and descriptions that don't make a whole lot of sense technically.
  • Find a plugin that will produce the response that you need - likely the "LSP Parametric Equalizer x8 Stereo" - and add it to the rack.
  • Use the Patchbay tab to drag things around so you can see them, and then drag from the edge of one to the edge of another to create a connection. Get enough connections, and your audio will work again, with the signal path that you just set up.
    • The machine that I'm posting from doesn't have that script, so I just grabbed what I had. You'll see the name that the script gives it, so you can use that. (and of course, change the name as you need)

Patchbay

  • At this point, you can save the session. And now that the file exists, you can uncomment the last line in the script so that it comes back up every time. And of course, re-save as you go so you don't lose your settings.
  • Back to the Rack tab, click the gear icon on the plugin you just added, to open the settings. Adjust as needed.

Settings

  • can not hear frequencies above 1kHz, and
  • from 500Hz to 1kHz the hearing is degrading from 50% to 0,

To approximate that, I would start with band 7 (the highest one) as a gentle-as-possible lowpass filter at 500Hz, as shown in the screenshot above. Work with the audiologist and use all 8 bands if needed (swap out the x8 for the x16 or x32 if you really have to) to approximate the curve that the audiologist measured.

You don't have to keep the bands in order of frequency, but it does make it easier to find the correct one quickly if you need to tweak it. Double-click a knob to return it to its default value. Double-click a number to type a new value instead of dragging the knob.

  • under 500 Hz it is stable at 50%.

That line in particular doesn't make a whole lot of sense to me because it's essentially just a volume reduction across the board. "Grab a physical knob and turn it down," is what that says to me. The plugin does have Input and Output knobs at the top right, that both do that, but considering what this plugin is and where it is, I rarely see the point. For everything else, knock yourself out!

1
  • oh super nice! Didn't know of that (+1) and such a nice answer involving matching the filter frequency response to what was actually measured! (if I could I'd upvote twice!) Commented 15 hours ago

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.