У меня был много -гигабайтный файл, и я не был уверен, сжат ли он, поэтому я протестировал -сжатие первых 10 МБ байтов:
head -c 10000000 large_file.bin | gzip | wc -c
Это не идеально, но мне помогло.
Я нашел более простое решение. Для этого есть программа, называется EasyEffects (раньше назывались PulseEffects ). Функция AutoGain делает именно то, что мне нужно.
Страница EasyEffects на github
Устанавливается в Ubuntu с помощью команды
sudo apt install pulseeffects
Используемая здесь звуковая концепция представляет собой сжатие . Поэтому нам нужно установить плагин сжатия на аудиовыход. Следующее работает в Ubuntu 20.04. Мне нужно было установитьpulse audio first
:
Verbatim from Is there a way of leveling/compressing the sound system-wide?
У меня был успех с примером, показанным в этом ответе .
Установите Плагины LADSPA Стива Харриса
sudo apt install swh-plugins
Запустите pacmd
, а затем эту команду:
load-module module-ladspa-sink sink_name=compressor plugin=sc4m_1916 label=sc4m control=1,1.5,401,-30,20,5,12
set-default-sink compressor
Этот ответ объясняет, как постоянно загружать плагин.
Параметры (части control=1,1.5,401,-30,20,5,12
выше )для этого компрессора описаны в Стива Харриса в документации по подключаемым модулям LADSPA:
- RMS/peak: The balance between the RMS and peak envelope followers.RMS is generally better for subtle, musical compression and peak is better for heavier, fast compression and percussion.
- Attack time (ms): The attack time in milliseconds.
- Release time (ms): The release time in milliseconds.
- Threshold level (dB): The point at which the compressor will start to kick in.
- Ratio (1:n): The gain reduction ratio used when the signal level exceeds the threshold.
- Knee radius (dB): The distance from the threshold where the knee curve starts.
- Makeup gain (dB): Controls the gain of the makeup input signal in dB's.
- Amplitude (dB): The level of the input signal, in decibels.
- Gain reduction (dB): The degree of gain reduction applied to the input signal, in decibels.
Из-за ограничения PulseAudio невозможно настроить их в режиме реального времени.
Чтобы поэкспериментировать с различными параметрами, я также загрузил компрессор как реальный -регулируемый по времени подключаемый модуль ALSA через Alsaequal , создав следующий~/.asoundrc
:
ctl.compressor {
type equal;
library "/usr/lib/ladspa/sc4m_1916.so";
module "sc4m";
}
pcm.plugcompressor {
type equal;
slave.pcm "plug:pulse";
library "/usr/lib/ladspa/sc4m_1916.so";
module "sc4m";
}
pcm.compressor {
type plug;
slave.pcm plugcompressor;
}
Образец файла MP3 можно воспроизвести с помощью компрессора, используя mpg321 ,
mpg321 -a hw:compressor "04 - Love Song for Yoshimi.mp3"
, а alsamixer -D compressor
можно использовать для настройки параметров в -реальном времени.
End verbatim
Я записал простой голос сначала громко, а затем очень тихо. Играя с параметрами, показанными в приведенной выше команде, разница была выдающейся по сравнению с отсутствием плагина.
Кроме того, в интерфейсе PulseAudio я мог выбрать, какое приложение должно использовать вывод плагина: