этот код иша модификации на примере adaptfilt2.0 эхоподавителяPython adaptfilt эхо-компенсатора пример с двумя .wav файлов
u(n) ------->->------+----------->->-----------
| |
+-----------------+ +------------------+
+->-| Adaptive filter | | John's Room |
| +-----------------+ +------------------+
| | -y(n) |
| | d(n) |
e(n) ---+---<-<------+-----------<-<----------+----<-<---- v(n)
мне нужно прочитать две волны звуковых файлов audio1.wav как сигнал Emily и AUDIO2 .wav, как сигнал Джона, дело в том, что код использует только audio1.wav и не читает audio2.wav в этом процессе, поэтому, когда во время запуска кода используется только audio1.wav для u (n) и v (n), а не присваивает переменной audio2.wav переменную v (n).
import numpy as np
import matplotlib.pyplot as plt
import adaptfilt as adf
import pyaudio
import wave
np.seterr(all='raise')
p = pyaudio.PyAudio()
stream = p.open(format = p.get_format_from_width(2),
channels = 1,
rate = 44100,
input = True,
output = True,
# stream_callback =callback
)
#Read U
wf1 = wave.open("audio1.wav", 'r')
data= wf1.readframes(1024)
u = np.fromstring(data, np.int16)
u = np.float64(u)
#read V
wf2= wave.open("audio2.wav", 'r')
data2= wf2.readframes(1024)
v= np.fromstring(data2, np.int16)
v = np.float64(u)
#both signals
d = u+v
# Apply adaptive filter
M = 100 # Number of filter taps in adaptive filter
step = 0.1 # Step size
y, e, w = adf.nlms(u, d, M, step, returnCoeffs=True)
plt.figure()
plt.title('Em u(n)')
plt.plot(u)
plt.grid()
plt.xlabel('Samples')
plt.figure()
plt.title('john v(n)')
plt.plot(v)
plt.grid()
plt.xlabel('Samples')
plt.show()
изображения показывает моя проблема
Что плохого в коде, который не делает меня использовать оба сигнала?
где вы показываете/использовать результат 'у, е, ш = adf.nlms (и, d, M, шаг, returnCoeffs = True) '? –
Я не использовал результаты, потому что не нуждался в этом, но в основном это примерно так: plt.figure() plt.title ('Выход фильтра y (n)') plt.plot (y) plt .grid() plt.xlabel ('Образцы') –