LINUX.ORG.RU

Применение ScaleTempo при конвертации файлов

 , , ,


0

1

Здравствуйте. Есть проблема. Нужно применить фильтр ScaleTempo к более чем 100k файлам с ключом

--speed=0.4 --af=scaletempo=stride=10:overlap=0.8
Файлы меньше секунды, 8 bit, mono. Образец. На выходе нужен такой же wav файл. Трудности начинаются с того, что программы, где используется этот фильтр не могут корректно переконвертировать мой файл. Даже без применения этого фильтра. Wav в wav.
mpv in.wav --oac=pcm_u8 -o out.wav
дает файл на секунду больше, если оригинал меньше секунды. Лог.

mencoder in.wav -o out.wav -of lavf -oac lavc -lavcopts acodec=pcm_u8

не работает вообще. Лог.

В Gstreamer я не знаю, как правильно сформулировать команду.

Из-того, что mpv на файлах больше секунды не прибавляет дополнительную секунду тишины, то решение с пост-обработкой и отрезанием тишины кажется еще более трудоемким.

P.S. Я протестировал альтернативы и пришел к заключению, что для голоса это самый лучший вариант. Sox, Audacity, Rubber Band, FFmpeg дают результат существенно хуже. Rubber Band сглаживает лучше, но металлический окрас делает общее восприятие хуже. Наткнулся на это решение случайно, в дополнение для Anki. С ним голос замедляется не хуже, чем это делает YouTube. Другие настройки дают результат на уровне вышеприведенных альтернатив. Интересный момент, что самый частый совет в интернете, это

--af=scaletempo=stride=30:overlap=.50
Но на мой слух он хуже, чем 10/0.8.

Буду рад, если подскажите качественные проприетарные решения для замедления речи.

P.S.S. В GoldenDict можно изменить плеер для воспроизведения звукового контента в словарях.

mplayer -speed 0.4 -af scaletempo=stride=10:overlap=0.8