%%capture
!wget https://wolnelektury.pl/katalog/zip/mp3/z-wichrow-i-hal-z-tatr-krzak-dzikiej-rozy-w-ciemnych-smreczy.zip
%%capture
!unzip z-wichrow-i-hal-z-tatr-krzak-dzikiej-rozy-w-ciemnych-smreczy.zip
%%capture
!ffmpeg -i z-wichrow-i-hal-z-tatr-krzak-dzikiej-rozy-w-ciemnych-smreczy_000.mp3  -acodec pcm_s16le -ac 1 -ar 16000  test.wav
import torch

model, utils = torch.hub.load(repo_or_dir='snakers4/silero-vad', model='silero_vad', force_reload=True)
%%capture
%pip install pydub
start = int(5.32 * 1000)
end = int(9.1 * 1000)
from pydub import AudioSegment
audio = AudioSegment.from_wav("test.wav")
seg = audio[start:end]
import IPython.display as ipd
len(seg.raw_data)
120960
assert seg.sample_width == 2
seg.export("seg.wav", format="wav")
<_io.BufferedRandom name='seg.wav'>
(get_speech_timestamps, save_audio, read_audio, VADIterator, collect_chunks) = utils
wav = read_audio("seg.wav")
!ffprobe -i seg.wav
ffprobe version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2007-2021 the FFmpeg developers
  built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
  configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Input #0, wav, from 'seg.wav':
  Duration: 00:00:03.78, bitrate: 256 kb/s
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, 1 channels, s16, 256 kb/s
seg.channels
1
import io
import soundfile as sf

data, samplerate = sf.read(io.BytesIO(seg.raw_data), format="RAW", subtype="PCM_16", samplerate=16000, channels=1)
sf.write("seg2.wav", data, 16000)
ipd.Audio("seg2.wav")
try2 = read_audio('test.wav', sampling_rate=16000)
speech_timestamps = get_speech_timestamps(try2, model, sampling_rate=16_000)
speech_timestamps
[{'start': 9248, 'end': 27104},
 {'start': 33312, 'end': 66528},
 {'start': 78368, 'end': 97248},
 {'start': 139296, 'end': 180192},
 {'start': 183328, 'end': 213472},
 {'start': 218144, 'end': 282592},
 {'start': 295968, 'end': 334304},
 {'start': 340512, 'end': 375776},
 {'start': 386592, 'end': 442848},
 {'start': 455200, 'end': 467936},
 {'start': 477216, 'end': 490464},
 {'start': 496160, 'end': 510944},
 {'start': 517664, 'end': 585184},
 {'start': 604704, 'end': 613856},
 {'start': 628256, 'end': 653280},
 {'start': 663072, 'end': 721888},
 {'start': 744480, 'end': 782304},
 {'start': 786464, 'end': 819168},
 {'start': 823840, 'end': 857056},
 {'start': 859680, 'end': 892896},
 {'start': 913952, 'end': 950240},
 {'start': 953888, 'end': 988128},
 {'start': 990752, 'end': 1012192},
 {'start': 1015328, 'end': 1033184},
 {'start': 1034784, 'end': 1070048},
 {'start': 1082400, 'end': 1102816},
 {'start': 1108512, 'end': 1127904},
 {'start': 1133088, 'end': 1189856},
 {'start': 1195552, 'end': 1219040},
 {'start': 1229856, 'end': 1263584},
 {'start': 1273376, 'end': 1307104},
 {'start': 1312288, 'end': 1322464},
 {'start': 1326624, 'end': 1353696},
 {'start': 1372192, 'end': 1447392},
 {'start': 1455648, 'end': 1461728},
 {'start': 1466400, 'end': 1540064},
 {'start': 1553952, 'end': 1571808},
 {'start': 1575456, 'end': 1626080},
 {'start': 1631264, 'end': 1668064},
 {'start': 1673760, 'end': 1721824},
 {'start': 1724960, 'end': 1798112},
 {'start': 1818656, 'end': 1848800},
 {'start': 1851936, 'end': 1919968},
 {'start': 1949728, 'end': 1966048},
 {'start': 1970720, 'end': 2020320},
 {'start': 2024480, 'end': 2075616},
 {'start': 2078752, 'end': 2092512},
 {'start': 2101280, 'end': 2131936},
 {'start': 2136608, 'end': 2183648},
 {'start': 2185248, 'end': 2230752},
 {'start': 2235936, 'end': 2265056},
 {'start': 2270240, 'end': 2330080},
 {'start': 2352160, 'end': 2403296},
 {'start': 2411040, 'end': 2439648},
 {'start': 2444832, 'end': 2468832}]
def get_raw_data(raw_data):
    return sf.read(io.BytesIO(raw_data), format="RAW", subtype="PCM_16", samplerate=16000, channels=1)
def get_start_end(audio, start, end):
    if type(start) == float:
        st = int(start * 1000)
    else:
        st = start
    if type(end) == float:
        et = int(end * 1000)
    else:
        et = end
    seg = audio[st:et]
    raw, _ = sf.read(io.BytesIO(seg.raw_data), format="RAW", subtype="PCM_16", samplerate=16000, channels=1)
    return raw
ipd.Audio(get_start_end(audio, 606, 1657), rate=16000)
!ffmpeg -i test.wav -af silencedetect=d=0.1 -f null -
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
  configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Guessed Channel Layout for Input Stream #0.0 : mono
Input #0, wav, from 'test.wav':
  Metadata:
    artist          : Weronika Maja Lewandowska
    comment         : Audiobook nagrany w ramach projektu Czytamy słuchając.
                    : 
                    : Przekaż 1% podatku na rozwój Wolnych Lektur:
                    : Fundacja Nowoczesna Polska
                    : KRS 0000070056
                    : http://nowoczesnapolska.org.pl/wesprzyj_nas/
                    : 
    copyright       : 2008 Fundacja Nowoczesna Polska. Licensed to the public under http://creativecommons.org/licenses/by-sa/3.0/deed.pl verify at http://wolnelektury.pl/katalog/lektura/z-wichrow-i-hal-z-tatr-krzak-dzikiej-rozy-w-ciemnych-smreczy/
    date            : 2008-10-09
    genre           : Speech
    title           : Jan Kasprowicz, "Krzak dzikiej róży w Ciemnych Smreczynach"
    album           : Wolne Lektury
    encoder         : Lavf58.76.100
    encoded_by      : Pro Tools
  Duration: 00:02:36.45, bitrate: 256 kb/s
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, mono, s16, 256 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[silencedetect @ 0x5d3557a3f9c0] silence_start: 0
Output #0, null, to 'pipe:':
  Metadata:
    artist          : Weronika Maja Lewandowska
    comment         : Audiobook nagrany w ramach projektu Czytamy słuchając.
                    : 
                    : Przekaż 1% podatku na rozwój Wolnych Lektur:
                    : Fundacja Nowoczesna Polska
                    : KRS 0000070056
                    : http://nowoczesnapolska.org.pl/wesprzyj_nas/
                    : 
    copyright       : 2008 Fundacja Nowoczesna Polska. Licensed to the public under http://creativecommons.org/licenses/by-sa/3.0/deed.pl verify at http://wolnelektury.pl/katalog/lektura/z-wichrow-i-hal-z-tatr-krzak-dzikiej-rozy-w-ciemnych-smreczy/
    date            : 2008-10-09
    genre           : Speech
    title           : Jan Kasprowicz, "Krzak dzikiej róży w Ciemnych Smreczynach"
    album           : Wolne Lektury
    encoded_by      : Pro Tools
    encoder         : Lavf58.76.100
  Stream #0:0: Audio: pcm_s16le, 16000 Hz, mono, s16, 256 kb/s
    Metadata:
      encoder         : Lavc58.134.100 pcm_s16le
[silencedetect @ 0x5d3557a3f9c0] silence_end: 0.6 | silence_duration: 0.6
[silencedetect @ 0x5d3557a3f9c0] silence_start: 1.7885
[silencedetect @ 0x5d3557a3f9c0] silence_end: 1.99206 | silence_duration: 0.203563
[silencedetect @ 0x5d3557a3f9c0] silence_start: 4.296
[silencedetect @ 0x5d3557a3f9c0] silence_end: 4.93438 | silence_duration: 0.638375
[silencedetect @ 0x5d3557a3f9c0] silence_start: 6.18888
[silencedetect @ 0x5d3557a3f9c0] silence_end: 8.57919 | silence_duration: 2.39031
[silencedetect @ 0x5d3557a3f9c0] silence_start: 13.3041
[silencedetect @ 0x5d3557a3f9c0] silence_end: 13.5559 | silence_duration: 0.251812
[silencedetect @ 0x5d3557a3f9c0] silence_start: 17.6932
[silencedetect @ 0x5d3557a3f9c0] silence_end: 18.5263 | silence_duration: 0.833063
[silencedetect @ 0x5d3557a3f9c0] silence_start: 20.9295
[silencedetect @ 0x5d3557a3f9c0] silence_end: 21.3281 | silence_duration: 0.398625
[silencedetect @ 0x5d3557a3f9c0] silence_start: 23.4729
[silencedetect @ 0x5d3557a3f9c0] silence_end: 24.1454 | silence_duration: 0.672438
[silencedetect @ 0x5d3557a3f9c0] silence_start: 27.7411
[silencedetect @ 0x5d3557a3f9c0] silence_end: 28.4314 | silence_duration: 0.69025
[silencedetect @ 0x5d3557a3f9c0] silence_start: 29.4552
[silencedetect @ 0x5d3557a3f9c0] silence_end: 29.8041 | silence_duration: 0.348875
[silencedetect @ 0x5d3557a3f9c0] silence_start: 30.7521
[silencedetect @ 0x5d3557a3f9c0] silence_end: 31.0426 | silence_duration: 0.290438
[silencedetect @ 0x5d3557a3f9c0] silence_start: 32.0508
[silencedetect @ 0x5d3557a3f9c0] silence_end: 32.3477 | silence_duration: 0.296938
[silencedetect @ 0x5d3557a3f9c0] silence_start: 36.7022
[silencedetect @ 0x5d3557a3f9c0] silence_end: 37.7842 | silence_duration: 1.082
[silencedetect @ 0x5d3557a3f9c0] silence_start: 38.5389
[silencedetect @ 0x5d3557a3f9c0] silence_end: 39.3023 | silence_duration: 0.763437
[silencedetect @ 0x5d3557a3f9c0] silence_start: 40.8439
[silencedetect @ 0x5d3557a3f9c0] silence_end: 41.4742 | silence_duration: 0.630313
[silencedetect @ 0x5d3557a3f9c0] silence_start: 45.1687
[silencedetect @ 0x5d3557a3f9c0] silence_end: 46.5056 | silence_duration: 1.33694
[silencedetect @ 0x5d3557a3f9c0] silence_start: 55.8503
[silencedetect @ 0x5d3557a3f9c0] silence_end: 57.0885 | silence_duration: 1.23825
[silencedetect @ 0x5d3557a3f9c0] silence_start: 67.0278
[silencedetect @ 0x5d3557a3f9c0] silence_end: 67.6243 | silence_duration: 0.596438
[silencedetect @ 0x5d3557a3f9c0] silence_start: 68.9902
[silencedetect @ 0x5d3557a3f9c0] silence_end: 69.2287 | silence_duration: 0.2385
[silencedetect @ 0x5d3557a3f9c0] silence_start: 74.4809
[silencedetect @ 0x5d3557a3f9c0] silence_end: 74.6525 | silence_duration: 0.171625
[silencedetect @ 0x5d3557a3f9c0] silence_start: 76.2504
[silencedetect @ 0x5d3557a3f9c0] silence_end: 76.8503 | silence_duration: 0.599875
[silencedetect @ 0x5d3557a3f9c0] silence_start: 79.0434
[silencedetect @ 0x5d3557a3f9c0] silence_end: 79.5743 | silence_duration: 0.530938
[silencedetect @ 0x5d3557a3f9c0] silence_start: 81.6858
[silencedetect @ 0x5d3557a3f9c0] silence_end: 82.0438 | silence_duration: 0.358
[silencedetect @ 0x5d3557a3f9c0] silence_start: 84.7228
[silencedetect @ 0x5d3557a3f9c0] silence_end: 85.7906 | silence_duration: 1.06781
[silencedetect @ 0x5d3557a3f9c0] silence_start: 90.4548
[silencedetect @ 0x5d3557a3f9c0] silence_end: 90.881 | silence_duration: 0.42625
[silencedetect @ 0x5d3557a3f9c0] silence_start: 91.3281
[silencedetect @ 0x5d3557a3f9c0] silence_end: 91.6683 | silence_duration: 0.340188
[silencedetect @ 0x5d3557a3f9c0] silence_start: 96.2913
[silencedetect @ 0x5d3557a3f9c0] silence_end: 97.1491 | silence_duration: 0.85775
[silencedetect @ 0x5d3557a3f9c0] silence_start: 104.281
[silencedetect @ 0x5d3557a3f9c0] silence_end: 104.611 | silence_duration: 0.329188
[silencedetect @ 0x5d3557a3f9c0] silence_start: 112.448
[silencedetect @ 0x5d3557a3f9c0] silence_end: 113.669 | silence_duration: 1.22069
[silencedetect @ 0x5d3557a3f9c0] silence_start: 120.046
[silencedetect @ 0x5d3557a3f9c0] silence_end: 121.845 | silence_duration: 1.79906
[silencedetect @ 0x5d3557a3f9c0] silence_start: 126.457
[silencedetect @ 0x5d3557a3f9c0] silence_end: 126.57 | silence_duration: 0.113125
[silencedetect @ 0x5d3557a3f9c0] silence_start: 130.799
[silencedetect @ 0x5d3557a3f9c0] silence_end: 131.36 | silence_duration: 0.561125
[silencedetect @ 0x5d3557a3f9c0] silence_start: 145.664
[silencedetect @ 0x5d3557a3f9c0] silence_end: 147.024 | silence_duration: 1.35987
[silencedetect @ 0x5d3557a3f9c0] silence_start: 150.508
[silencedetect @ 0x5d3557a3f9c0] silence_end: 150.685 | silence_duration: 0.17675
[silencedetect @ 0x5d3557a3f9c0] silence_start: 152.631
[silencedetect @ 0x5d3557a3f9c0] silence_end: 152.791 | silence_duration: 0.160125
[silencedetect @ 0x5d3557a3f9c0] silence_start: 154.365
size=N/A time=00:02:36.41 bitrate=N/A speed=1.92e+03x    
video:0kB audio:4889kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[silencedetect @ 0x5d3557a3f9c0] silence_end: 156.447 | silence_duration: 2.082
from pydub.silence import detect_nonsilent
detect_nonsilent(audio, 100, -60)
[[606, 1657],
 [1996, 4202],
 [4941, 6122],
 [8591, 13294],
 [13563, 17656],
 [18526, 20881],
 [21331, 23463],
 [24146, 27685],
 [28433, 29333],
 [29818, 30695],
 [31046, 31922],
 [32350, 36642],
 [37787, 38505],
 [39304, 40813],
 [41475, 45115],
 [46510, 48989],
 [49154, 51374],
 [51512, 55811],
 [57094, 59500],
 [59616, 61865],
 [61965, 66976],
 [67635, 68925],
 [69283, 74355],
 [74652, 76205],
 [76853, 79017],
 [79579, 81668],
 [82048, 82815],
 [82926, 84650],
 [85794, 90434],
 [90895, 91324],
 [91672, 96264],
 [97153, 101788],
 [101939, 104243],
 [104610, 106715],
 [106830, 107673],
 [107829, 112365],
 [113674, 119994],
 [121850, 126396],
 [126574, 130759],
 [131363, 133436],
 [133591, 136491],
 [136600, 145650],
 [147024, 150408],
 [150691, 152486],
 [152793, 154310]]