# beamform! stft.analysis(audio) stft.process() # Send audio back to the browser audio[:, 0] = np.sum(stft.synthesis(), axis=1) audio[:, 1] = audio[:, 0] audio[:, 2:] = 0 browserinterface.send_audio(audio) else: # continue estimating covariance matrix bf.estimate_cov(audio) """Interface features""" browserinterface.register_when_new_config(init) browserinterface.register_handle_data(beamform_audio) polar_chart = browserinterface.add_handler(name="Beam pattern", type='base:polar:line', parameters={ 'title': 'Beam pattern', 'series': ['Intensity'], 'numPoints': num_angles }) """START""" browserinterface.start() browserinterface.change_config(buffer_frames=buffer_size, channels=num_channels, rate=sampling_freq, volume=80) browserinterface.loop_callbacks()
buffer_size) / float(sampling_freq) s1 = {'x': [0, 0], 'y': [0, 0]} s2 = {'x': t[::under].tolist(), 'y': sig[::under].tolist()} if decision: # first is voiced, second is unvoiced chart.send_data({'add': [s2, s1]}) if led_ring: led_ring.lightify_mono(rgb=[0, 255, 0], realtime=True) else: chart.send_data({'add': [s1, s2]}) if led_ring: led_ring.lightify_mono(rgb=[255, 0, 0], realtime=True) frame_num += 1 """Interface features""" browserinterface.register_when_new_config(when_config) browserinterface.register_handle_data(apply_vad) chart = browserinterface.add_handler( "Speech Detection", 'base:graph:line', { 'xName': 'Duration', 'min': -10000, 'max': 10000, 'xLimitNb': (sampling_freq / under * num_sec), 'series': [{ 'name': 'Voice', 'color': 'green' }, { 'name': 'Unvoiced',