Match a determiner with F0
Towards picking the most prominent using mean F0
import librosa
import numpy as np
WAVFILE = "/content/spkslt_98.wav"
audio, sr = librosa.load(WAVFILE)
f0, voiced_flag, voiced_probs = librosa.pyin(y=audio,
fmin=librosa.note_to_hz('C2'),
fmax=librosa.note_to_hz('C7'),
pad_mode='constant',
n_thresholds = 10,
max_transition_rate = 100,
sr=sr)
onsets = librosa.onset.onset_detect(y=audio, sr=sr)
def load_tsv(filename):
output = []
with open(filename) as inf:
for line in inf.readlines():
parts = line.strip().split("\t")
output.append((float(parts[0]), float(parts[1]), parts[2]))
return output
def get_detdem(tsvish):
determiners = ["this", "that", "these", "those"]
output = []
for part in tsvish:
if part[2] in determiners:
output.append(part)
return output
tsvcontent = load_tsv("/content/spkslt_98.tsv")
get_detdem(tsvcontent)
detdem = get_detdem(tsvcontent)
starts = np.array([x[0] for x in detdem])
ends = np.array([x[1] for x in detdem])
detdem
!ffprobe -i {WAVFILE} 2>&1|grep Duration
librosa.time_to_frames(np.array([0.0, 24.62, 27.44]), sr=sr)
len(f0)
frstarts = librosa.time_to_frames(starts, sr=sr)
frends = librosa.time_to_frames(ends, sr=sr)
frstarts, frends
for z in zip(frstarts, frends):
print(np.nanmean(f0[z[0]:z[1]]))