dominpiano Posted January 10, 2023 Posted January 10, 2023 (edited) Hejka, ostatnio miałem sytuację, gdzie rozmawiałem przez centralkę i nagle dyżurny z sąsiedniej stacji (ten drugi, nie ten z którym rozmawiałem) odezwał się na radiu, co kompletnie zagłuszyło mi centralkę. Oczywiście ja go słyszałem, ale ten dyżurny, z którym rozmawiałem nie słyszał, bo było to już za daleko. Proponuję więc, aby dodać efekt takiego kolejowego radia, + wykrycie czy ktoś gada na centralce i wtedy ściszenie radia. Oto kod w Matlabie (strona nie zezwala plików .m XD), który napisałem aby taki efekt dodać - wystarczy go przerobić na język w którym to piszecie (Dołączam również prezentację jak to działa) GŁÓWNY PROGRAM: %Read signal [signal, fs] = audioread('signal.mp3'); %Store original signal originalSignal = signal; %To resample, choose sampling rate and calculate some stuff newFs = 10000; signal = resample(signal, newFs, fs); Ts = 1/newFs; n = length(signal); %Add some noise and high-freq sines t = (0:n-1)*Ts; highSine = sin(2*pi*4700*t') + sin(2*pi*4240*t'); noise = randn(n, 1); %Mix it up... mixedSignal = signal + noise*0.005 + highSine*0.005; %High-pass the signal, gain it and add it to make it more crispy myHighFilter = highPassFilter(); highSignal = filter(myHighFilter, mixedSignal)*5; outputSignal = mixedSignal + highSignal; lowCutFilter = lowcut(); outputSignal = filter(lowCutFilter, outputSignal); sound(outputSignal, newFs); FUNKCJA highPassFilter.m: function filtrHigh = highPassFilter Fs = 10000; N = 40; Fc1 = 1500; Fc2 = 3500; flag = 'scale'; window = blackman(N+1); b = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', window, flag); filtrHigh = dfilt.dffir(b); FUNKCJA lowcut.m: function filtrLow= lowcut Fs = 10000; N = 50; Fc = 600; flag = 'scale'; win = nuttallwin(N+1); b = fir1(N, Fc/(Fs/2), 'high', win, flag); filtrLow = dfilt.dffir(b); radio.mp4 Edited January 10, 2023 by dominpiano 4
Recommended Posts