Częstotliwość podstawowa
Częstotliwość podstawowa to inaczej wysokość dźwięku. Wysokość dźwięku to wartość częstotliwości z jaką wibrują elementy instrumentu muzycznego np. struny w gitarze, powietrze w piszczałce lub struny głosowe u człowieka. Istnieje bardzo wiele technik służących wykrywaniu częstotliwości podstawowej (F0). Najprostszym z nich jest szukanie pierwszego pierwszego lub najwyższego wierzchołka w widmie sygnału. W ramach dzisiejszych zajęć będziemy ze skutecznością prostej funkcji wykorzystującej autokorelację sygnału w celu jej wyznaczenia.
def get_F0_autocorr(frame, fs):
= np.correlate(frame, frame, mode='full')
corr = corr[corr.size//2:]
corr = np.diff(corr)
d = np.nonzero(d > 0)[0][0]
start = np.argmax(corr[start:]) + start
peak return fs / peak
Formanty
Formanty są jednym ze sposobów opisu rezonansów występujących między innymi w trakcie głosowym. Opisują one jakie częstotliwości powstające na strunach głosowych ( i poniżej nich) zostaną wzmocnione bądź stłumione. Zależne są one między innymi od położenia języka lub stopnia otwarcia ust. Można na ich podstawie oszacowywać rodzaj samogłoski, jaką wybrzmiewa.
import librosa
from scipy.signal import lfilter
def get_Formants(frame,fs):
= np.ceil(2 + fs / 1000).astype(int)
ncoeff = lfilter([1], [1., 0.63], frame)
x1 = librosa.lpc(x1, int(ncoeff))
A = np.roots(A)
rts = [r for r in rts if np.imag(r) >= 0]
rts = np.arctan2(np.imag(rts), np.real(rts))
angz = sorted(angz * (fs / (2 * np.pi)))
frqs if frqs[0]<1:
for i in range(0,len(frqs)):
if frqs[i]>=1:
break
return frqs[i:]
return frqs