FFMPEG обнаружение тишины команда выполняется правильно, но не дает длительности тишины - PullRequest
0 голосов
/ 06 января 2020

У меня есть аудиофайл .wav, и мне нужно извлечь длительность паузы / тишины в этом файле. Я использую ffmpeg с фильтром обнаружения молчания, но я не могу понять, почему он не дает длительности молчания с этим файлом, в то время как он дает результат с другими файлами. Может ли кто-нибудь помочь мне понять приведенный ниже, почему он не показывает обнаруженные молчания.

Команда ввода:

ffmpeg -i "input.wav" -af silencedetect=noise=-30dB:d=0.5 -f null -

OutPut

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190807
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --    enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-
libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable- 
libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-
libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --
enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --
enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid -- 
 enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --    enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt

libavutil      56. 31.100 / 56. 31.100
libavcodec     58. 54.100 / 58. 54.100
libavformat    58. 29.100 / 58. 29.100
libavdevice    58.  8.100 / 58.  8.100
libavfilter     7. 57.100 /  7. 57.100
libswscale      5.  5.100 /  5.  5.100
libswresample   3.  5.100 /  3.  5.100
libpostproc    55.  5.100 / 55.  5.100

Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from 'D:\Research\PhD\Carolina\AD\wav\media.io_Wakeman_Rhyne_001_01.wav':
Duration: 00:17:38.04, bitrate: 1411 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, null, to 'pipe:':

1 Ответ

1 голос
/ 07 января 2020

Отрегулируйте значения noise и / или d. Из документации silencedetect :

Фильтр принимает следующие параметры:

  • noise, n - установка помехоустойчивости , Может быть указано в дБ (в случае добавления «дБ» к указанному значению) или в амплитудном соотношении. По умолчанию установлено значение -60 дБ или 0,001.

  • duration, d - установка продолжительности молчания до уведомления (по умолчанию 2 секунды).

«Тишина» часто не на 100% молчит. Там может быть фоновый шум. В этом случае вам нужно будет отрегулировать значение noise до тех пор, пока оно не обнаружит, что вы хотите молчать. Например, если вы используете noise=-15dB, то все, что равно или тише -15 дБ, будет определено как тишина.

enter image description here

Этот снимок экрана с Audacity показывает «тихую» область, которая выделена. Он звучит тихо по сравнению с остальным звуком, но если вы будете внимательно слушать, вы услышите вентилятор и другие фоновые шумы. Измеритель громкости в Audacity показывает, что на самом деле он громче -34 дБ, поэтому вам придется использовать по крайней мере noise=-34dB.

Кроме того, вам может потребоваться настроить d, чтобы указать минимальную длину сегмент тишины должен быть перед тем, как он будет обнаружен как тишина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...