Skocz do zawartości

Przetwarzanie dzwieku przez Raspberry za pomocą ALSA


Kemer

Pomocna odpowiedź

Cześć,

Piszę taki projekt w którym potrzebuje przeliczyć dźwięki otoczenia na częstotliwości. Chcę to zrobić w ten sposób że zbieram dane mikrofonem i za pomocą API Alsa zaciągam dane do programu. Następnie przeliczam transformatą Fouriera na częstotliwości. Korzystając z poradników stworzyłem program, który nagrywa dźwięki do pliku .pcm i wszystko śmiga. Dalej chce z tego samego buffora przed zapisaniem zaciągnąć dane do funkcji. Wyświetlając zawartość buffora w konsoli widzę albo puste miejsce(wyświetlając char) albo 0( atof(buffer)). W zwiazku z tym do FFT nie wchodzą mi żadne dane.
 

Odczyt danych zaimplementowałem:
snd_pcm_readi (capture_handle, buffer, buffer_frames);
cout<<buffer[a];
sample[a]=atof(buffer);
cout<<sample[a];

Czy robię gdzieś błąd? Może jest jakiś inny sposób żeby zbierać te częstotliwości?

Pozdrawiam i wszystkiego dobrego!

Link do komentarza
Share on other sites

@Kemer a co powiesz na Pythona i numpy? Jakimś wielkim znawcą tematu nie jestem, ale tam może to być dość proste. Pierwszy lepszy wynik googla na hasło "numpy sound fft" i coś jest 🙂 

# fourier transform and frequency domain
#
Y_k = np.fft.fft(y)[0:int(N/2)]/N # FFT function from numpy
Y_k[1:] = 2*Y_k[1:] # need to take the single-sided spectrum only
Pxx = np.abs(Y_k) # be sure to get rid of imaginary part

f = Fs*np.arange((N/2))/N; # frequency vector

# plotting
fig,ax = plt.subplots()
plt.plot(f,Pxx,linewidth=5)
ax.set_xscale('log')
ax.set_yscale('log')
plt.ylabel('Amplitude')
plt.xlabel('Frequency [Hz]')
plt.show()

 

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.