If using pulseaudio, the following can be placed in your ~/.config/pulse/default.pa file to create a loopback device that fixes the volume levels, so that 0-100% in a desktop environment's volume bar will correspond to the audio level heard in the spaker.
-----
.include /etc/pulse/default.pa
load-module module-null-sink sink_name=corrected_speakers sink_properties=device.description=corrected_speakers
load-module module-loopback source=corrected_speakers.monitor sink=alsa_output.platform-sound.stereo-fallback remix=false
set-sink-volume alsa_output.platform-sound.stereo-fallback 6553
set-default-sink corrected_speakers
-----