#c# #.net #ffmpeg #naudio #resampling
Вопрос:
У меня есть приложение WPF, которое выполняет следующее:
- Импортирует видеофайлы.
- Извлекает аудио из файла с помощью FFmpeg.
- Выполняет повторную выборку звука с помощью NAudio в соответствии с механизмом преобразования речи в текст (16 кГц/16 бит/Моно).
- Воспроизводит видео для пользователей с наложенными субтитрами.
- Позволяет пользователям исправлять ошибки, которые мог совершить движок STT.
Простая повторная выборка с помощью NAudio:
using (var reader = new WaveFileReader(fileAudioTemp.FullName))
{
var outFormat = new WaveFormat(16000, 16, 1);
//var outFormat = WaveFormat.CreateIeeeFloatWaveFormat(16000, 1);
using (var resampler = new MediaFoundationResampler(reader, outFormat))
{
resampler.ResamplerQuality = 60; // Highest Quality in MF.
WaveFileWriter.CreateWaveFile(fileAudio.FullName, resampler);
}
}
Проблема в том, что эти видео имеют крайне плохое качество звука. Звук приглушенный, басовитый, и из-за него очень трудно разобрать имена людей, мест и т. Д. Это затрудняет и отнимает у пользователей много времени для проверки текста. Пожалуйста, обратите внимание, что двигатель STT не имеет с этим проблем и на удивление точен, учитывая качество.
То, что я хотел бы сделать, — это применить к этому звуку выравнивание. Я обнаружил, что встроенная SKA
предустановка в VLC, похоже, немного облегчает пользователям понимание того, что говорится.
Есть ли способ использовать FFmpeg (Xabe) или предпочтительно NAudio для применения такого фильтра? Это так как же? Я видел много примеров манипуляций со звуковыми буферами, но искал более простой способ, такой как предустановленный файл или параметры, которые можно было бы передать в повторители.
Любые указания будут оценены по достоинству.
Комментарии:
1. ffmpeg имеет несколько фильтров эквалайзера: ffmpeg.org/ffmpeg-filters.html