Показать сообщение отдельно
Старый 30.07.2026, 14:52   #33
Дмитрий
Администратор
 
Аватар для Дмитрий
 
Турниров выиграно: 1

Регистрация: 12.12.2008
Адрес: Москва прошлого тысячелетия.
Сообщений: 216,980
Сказал(а) спасибо: 46,161
Поблагодарили 275,151 раз(а) в 104,507 сообщениях
Дмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспорима
По умолчанию

С аудио, с любыми конвертациями звука и его улучшением всё значительно проще. Не надо пытаться делать сложную обработку звука внутри AviSynth. Он для видео. Для улучшения звука (шумоподавление, нормализация, разделение дорожек) FFmpeg и Python-экосистема на голову выше.

Видео обрабатывает AviSynth, а аудио обрабатывается отдельно через FFmpeg/Python, и в конце они склеиваются (ремукаются).

Современные версии FFmpeg имеют встроенные мощные аудиофильтры.

Пример команды (все в одной строке):

Код:
ffmpeg -i input.mkv -c:v copy -af "loudnorm=I=-16:TP=-1.5:LRA=11, afftdn=nf=-25" -c:a aac -b:a 192k output.mkv
Что здесь происходит:
-c:v copy - видео копируется без перекодирования (мгновенно).
loudnorm - профессиональная нормализация громкости по стандарту EBU R128 (делает звук равномерным, как на ТВ/стриминге).
afftdn=nf=-25 - встроенный в FFmpeg спектральный шумодав (чем меньше число, тем агрессивнее подавление).
-c:a aac -b:a 192k - конвертация аудио в качественный AAC.

Продвинутое улучшение через Python + ML (Для архивов и реставрации):
Если звук старый, с шипением, гулом или нужно выделить голос (например, для реставрации старого фильма), FFmpeg-фильтров может не хватить. Здесь на помощь приходит Python.
...
Извлечение звука: ffmpeg -i input.mkv -vn -c:a pcm_s16le temp_audio.wav

Обработка в Python:
Для удаления шума: библиотека noisereduce или RNNoise (очень легкая нейросеть, отлично чистит речь).
Для разделения голоса и музыки/шума: библиотека demucs (от Meta) или spleeter. Она может вытащить чистый диалог из старой записи с фоновым гулом проектора.

Сборка: ffmpeg -i video_from_avisynth.mkv -i cleaned_audio.wav -c:v copy -c:a flac final_output.mkv

import soundfile as sf
import noisereduce as nr

# 1. Загружаем аудио
data, rate = sf.read("temp_audio.wav")

# 2. Применяем шумоподавление (предполагаем, что это речь)
reduced_noise = nr.reduce_noise(y=data, sr=rate, prop_decrease=0.8)

# 3. Сохраняем очищенный звук
sf.write("cleaned_audio.wav", reduced_noise, rate)

Кратко о параметрах:
prop_decrease=0.8 - степень подавления шума (от 0 до 1), 0.8 - сильное, но не искажающее речь подавление.
stationary=True/False - если шум постоянный (например, вентилятор), лучше stationary=True. Если меняется - оставьте False.

Третий уровень это Идеальный гибридный пайплайн (AviSynth + FFmpeg)

Batch-скрипт (Windows) для автоматизации:

set INPUT_VIDEO=input.mkv
set AVS_SCRIPT=script.avs
set TEMP_AUDIO=temp_audio.wav
set FINAL_AUDIO=final_audio.flac
set OUTPUT=final_result.mkv

[1/4] Извлекаем исходный звук без потерь...
ffmpeg -y -i "%INPUT_VIDEO%" -vn -c:a pcm_s16le "%TEMP_AUDIO%"

[2/4] Улучшаем звук (нормализация + легкий шумодав)...
ffmpeg -y -i "%TEMP_AUDIO%" -af "loudnorm=I=-16:TP=-1.5, afftdn=nf=-20" -c:a flac "%FINAL_AUDIO%"

[3/4] Обрабатываем видео через AviSynth (без звука, чтобы сэкономить ресурсы)...
:: Важно: в самом .avs скрипте используйте KillAudio(), если звук там не нужен
ffmpeg -y -i "%AVS_SCRIPT%" -c:v libx264 -crf 18 -preset slow -an temp_video.mkv

[4/4] Склеиваем обработанное видео и улучшенный звук...
ffmpeg -y -i temp_video.mkv -i "%FINAL_AUDIO%" -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 "%OUTPUT%"

Готово Результат в "%OUTPUT%"
__________________
О нас думают плохо лишь те, кто хуже нас. А те, кто лучше нас, им просто не до нас.
--Омар Хайям

Обновления по запросу — на Я.Ди. «Мэйл-облако» для тех, кто помогает нашему интернет-проекту, и для тех, кто хотел бы это делать, но пока не знает, как.

Помогая форуму ВТО, вы прежде всего помогаете себе! А не делаете что-то абстрактное для «других», совершенно незнакомых и безразличных вам людей.
Дмитрий вне форума   Ответить с цитированием