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