рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдкреЛрд▓рд┐рд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЯреЛрдореЗрдХ рд░реЗрдХреЗрд╡реЗрдХ рд╣реИрдВ, рдЬреЛ рдПрдбреЛрдм рдХреЗ рд▓рд┐рдП рдЕрдкрд╛рдЪреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдлрд╛рдЙрдВрдбреЗрд╢рди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреИрдХрдмрдмрд┐рдЯ рдУрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ 24 рдлрд░рд╡рд░реА, 2016 рдХреЛ рд▓реЗрдЦрдХ рдХреЗ рдирд┐рдЬреА рдмреНрд▓реЙрдЧ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рдерд╛редрдкреЛрд▓рд┐рд╢ "рд░реЗрдбрд┐рдпреЛ -3" (рддрдерд╛рдХрдерд┐рдд "рдЯреНрд░реЛрдЗрдХрд╛") рдЕрдЪреНрдЫреЗ рд╕рдВрдЧреАрдд рдФрд░ рдмреБрджреНрдзрд┐рдорд╛рди рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рд╣реИред рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдкреНрд░рд╕рд╛рд░рдг рдореЗрдВ рдЬреЛрд░ рд╕реЗ рдФрд░ рдХрд╖реНрдЯрдкреНрд░рдж рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕ рдпрд╛ рдЪрд┐рдХрд┐рддреНрд╕рд╛ рдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЯреНрд░реЛрдЗрдХрд╛ рдХреЛ рд▓рдЧрднрдЧ рд▓рдЧрд╛рддрд╛рд░ рдХрд╛рдо рдкрд░ рдФрд░ рдШрд░ рдкрд░ рд╕реБрдирддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЛрдЪрд╛: рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓реЗрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред
рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ
рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХреЛ рдореНрдпреВрдЯ рдХрд░рддрд╛ рд╣реИред рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдмреНрд▓реЙрдХ рдЬрд┐рдВрдЧрд▓реНрд╕ рдХреЗ
рд╕рд╛рде рд╢реБрд░реВ рдФрд░
рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдзреНрд╡рдирд┐рдпреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреА рдЖрд╡рд╛рдЬрд╝ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЧрдгрд┐рдд / рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ
рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреАрдПрд╕рдкреА рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдЬрд╛рджреВ рд▓рдЧрддрд╛ рдерд╛ред рдЦреИрд░, рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдиреЗ рдХрд╛ рд╢рд╛рдирджрд╛рд░ рдореМрдХрд╛ред рдореИрдВрдиреЗ рдПрдХ рдпрд╛ рджреЛ рджрд┐рди рдмрд┐рддрд╛рдП рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП: рдпрд╣
рдХреНрд░реЙрд╕-рд╕рд╣рд╕рдВрдмрдВрдз рдпрд╛ рдХреНрд░реЙрд╕-рд╕рд╣рд╕рдВрдмрдВрдз (рдХреНрд░реЙрд╕-рд╕рд╣рд╕рдВрдмрдВрдз) рд╣реИред
рд╕рдкреНрдЯрдХ
рдЖрдорддреМрд░ рдкрд░ рд╣рд░ рдХреЛрдИ MATLAB рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди MATLAB рдПрдХ рдорд╣рдВрдЧрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ рдЬреЛ рдбреАрдПрд╕рдкреА рд╕рд╣рд┐рдд рдЬрдЯрд┐рд▓ рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ,
рдСрдХреНрдЯреЗрд╡ рдирд╛рдордХ рдПрдХ рдореБрдлреНрдд рд╡рд┐рдХрд▓реНрдк рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдХреНрдЯреЗрд╡ рдореЗрдВ рджреЛ рдСрдбрд┐рдпреЛ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдХреНрд░реЙрд╕-рд╕рд╣рд╕рдВрдмрдВрдз рдЪрд▓рд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдХреЗрд╡рд▓ рдирд┐рдореНрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
pkg load signal jingle = wavread('jingle.wav')(:,1); audio = wavread ('audio.wav')(:,1); [R, lag] = xcorr(jingle, audio); plot(R);
рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд╛рд░реНрдЯ рдорд┐рд▓реЗрдЧрд╛:

рдПрдХ рдЪреЛрдЯреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ рдЬреЛ
jingle.wav
рдореЗрдВ
audio.wav
рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди
audio.wav
ред рдореБрдЭреЗ рдЬреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рд╡рд╣ рд╡рд┐рдзрд┐ рдХреА рд╕рд░рд▓рддрд╛ рдереА:
xcorr()
рд╕рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдХреА рдХреЛрдб рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдореИрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕рдорд╛рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдХрд░рдг рд╣реЛрдЧрд╛:
- рдорд╛рдирдХ рдЗрдирдкреБрдЯ рд╕реЗ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдкрдврд╝рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ffmpeg рд╕реЗ),
- рдЬрд┐рдВрдЧрд▓реНрд╕ рдХреА рдЦреЛрдЬ рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ,
- рдПрдХ рд╣реА рдзрд╛рд░рд╛ рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдФрд░ / рдпрд╛ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред
рд╕реНрдЯрдбрд┐рди рдФрд░ рд╕реНрдЯрдбрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдирдП
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдСрдбрд┐рдпреЛ рдкреНрд░рд╕рд╛рд░рдг рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдкреНрд▓реЗрдмреИрдХ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХреЗрдВрдЧреЗред
рдзреНрд╡рдирд┐ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрдврд╝рдирд╛
рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдкрд╣рд▓реА рдЪреАрдЬ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдПрдХ рдЬрд┐рдВрдЧрд▓ (
.wav
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреА рдЧрдИ) рд╣реИред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдЬреИрд╕реЗ рд╣реЗрдбрд░, рдореЗрдЯрд╛рдбреЗрдЯрд╛, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдзреНрд╡рдирд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рд╛рд░реВрдк рдХреЛ PCM рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдзреНрд╡рдирд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдХрдиреНрд╡рд░реНрдЯ WAV рдХреЛ PCM рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
ffmpeg -i input.wav -f s16le -acodec pcm_s16le output.raw
рдпрд╣рд╛рдВ, рдкреНрд░рддреНрдпреЗрдХ рдирдореВрдиреЗ рдХреЛ рд░рд┐рд╡рд░реНрд╕ рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░ (рдереЛрдбрд╝рд╛ рдПрдВрдбрд┐рдпрди) рдХреЗ рд╕рд╛рде 16-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдореЗрдВ, рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЛ
short
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
short
рдорд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП
ByteBuffer
рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
ByteBuffer buf = ByteBuffer.allocate(4); buf.order(ByteOrder.LITTLE_ENDIAN); buf.put(bytes); short leftChannel = buf.readShort();
Xcorr рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ
рдЬрд╛рд╡рд╛ рдореЗрдВ
xcorr()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдСрдХреНрдЯреЗрд╡
рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ред рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛, рдореИрдВ xcorr () рдХреЙрд▓ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ - рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
N = length(audio); M = 2 ^ nextpow2(2 * N - 1); pre = fft(postpad(prepad(jingle(:), length(jingle) + N - 1), M)); post = fft(postpad(audio(:), M)); cor = ifft(pre .* conj(post)); R = real(cor(1:2 * N));
рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдлрд╝рдВрдХреНрд╢рди рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рддреБрдЪреНрдЫ рд╕рдВрдЪрд╛рд▓рди рд╣реИрдВред рдХреНрд░реЙрд╕-рд╕рд╣рд╕рдВрдмрдВрдз рдПрдХ рдзреНрд╡рдирд┐ рдирдореВрдирд╛ рдкрд░
рддреЗрдЬреА рд╕реЗ рдлреВрд░рд┐рдпрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдЖрд╡реЗрджрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдлрд╛рд╕реНрдЯ рдлреВрд░рд┐рдпрд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо
рдПрдХ рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд┐рд╕реЗ рдбреАрдПрд╕рдкреА рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл рдПрдлрдПрдлрдЯреА рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рдзреНрд╡рдирд┐ рдирдореВрдиреЗ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд▓реЗрддрд╛ рд╣реИ - рдФрд░ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИрдВред рдЗрд╕ рдиреНрдпреВрдирддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛: рдореИрдВрдиреЗ
JTransforms рдкреИрдХреЗрдЬ рд╕реЗ рдПрдлрдПрдлрдЯреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдСрдХреНрдЯреЗрд╡ рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ
рдХрд╛рд░реНрдЧреЛ рдкрдВрде рд╣реИ , рд▓реЗрдХрд┐рди рд▓рд╛рдирдд рд╣реИ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдПрдХ рдзрд╛рдЧреЗ рдкрд░ xcorr рдЪрд▓ рд░рд╣рд╛ рд╣реИ
рдКрдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдорд╛рдирддрд╛ рд╣реИ рдХрд┐
audio
рд╡рд╣ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо
jingle
рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдзреНрд╡рдирд┐ рдХреА рдПрдХ рд╕рддрдд рдзрд╛рд░рд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬрд┐рдВрдЧрд▓ рдХреА рдЕрд╡рдзрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдХреНрд░реАрдп рдмрдлрд░ рдмрдирд╛рдпрд╛ред рдЖрдиреЗ рд╡рд╛рд▓реА рдзрд╛рд░рд╛ рдмрдлрд░ рдХреЛ рднрд░рддреА рд╣реИ, рдФрд░ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рдкреВрд░реА рд╣реЛрддреА рд╣реИ, рдХреНрд░реЙрд╕-рд╕рд╣рд╕рдВрдмрдВрдз рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреБрдЫ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рдмрдлрд░ рдХрд╛ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдФрд░ рдлрд┐рд░ рд╕реЗ рд╣рдо рдЗрд╕реЗ рднрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдмрдлрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛, рдЬреЛ рдмрдлрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ 1.5 рдЧреБрдирд╛ рдЬрд┐рдВрдЧрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдерд╛ред
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛
рдкреАрд╕реАрдПрдо рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдзрд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдЙрдкрд░реЛрдХреНрдд
ffmpeg
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рджреА рдЧрдИ рдХрдорд╛рдВрдб рд╕реНрдЯреНрд░реАрдо рдХреЛ рдорд╛рдирдХ
java
рдЗрдирдкреБрдЯ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рддрдм рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдкреИрдЯрд░реНрди рдорд┐рд▓рдиреЗ рдкрд░
Got jingle 0
рдпрд╛
Got jingle 1
рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
ffmpeg -loglevel -8 \ -i http://stream3.polskieradio.pl:8904/\;stream \ -f s16le -acodec pcm_s16le - \ | java -jar target/analyzer-1.0.0-SNAPSHOT-jar-with-dependencies.jar \ 2 \ src/test/resources/commercial-start-44.1k.raw 500 \ src/test/resources/commercial-end-44.1k.raw 700
рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╕рдВрд╕реНрдХрд░рдг
рдореИрдВрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдПрдХ рд╕рд░рд▓ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рд╕рдВрд╕реНрдХрд░рдг рднреА рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рдЬреЛ рд╕реНрд╡рдпрдВ рдЯреНрд░реЛрдЗрдХрд╛ рд╕реНрдЯреНрд░реАрдо (рдмрд╛рд╣рд░реА
ffmpeg
рдмрд┐рдирд╛) рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░
javax.sound
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА JAR рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реНрдЯрд╛рд░ рдФрд░ рд╕реНрдЯреЙрдк рдмрдЯрди рдХреЗ рд╕рд╛рде рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ
рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ JAR рдХреЛ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рдЪрд▓рд╛рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ (рдЬреЛ рдХрд┐ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИ), рддреЛ рд╕рднреА рд╕реНрд░реЛрдд
GitHub рдкрд░ рд╣реИрдВред

рд▓рдЧрддрд╛ рд╣реИ
рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП :)
рдЖрдЧреЗ рдХрд╛ рдХрд╛рдо
рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп рдПрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдореНрдкрд▓реАрдлрд╛рдпрд░ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИ, рдПрдХ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдПрдлрдПрдо рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдФрд░ рдХреБрдЫ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реНрдЯреНрд░реАрдо рдирд╣реАрдВред рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдЕрдкрдбреЗрдЯ (рдЬреВрди 2018)
рд╣реИрдХрд░ рд╕рдорд╛рдЪрд╛рд░ рдкрд░ рдЪрд░реНрдЪрд╛рд╡рд╛рдпрдХреЛрдк рдкрд░ рдЪрд░реНрдЪрд╛рд░реЗрдбрд┐рдЯ рдкрд░ рдЪрд░реНрдЪрд╛