shithub: opus

Download patch

ref: 6ea726d4016ae46853fd9f0a0ff6751db5f061dd
parent: 4f2caa35f090fd88e195321ba7b28db61f229b9f
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Sat Jul 24 14:25:39 EDT 2021

Avoiding feature copies

--- a/dnn/training_tf2/train_lpcnet.py
+++ b/dnn/training_tf2/train_lpcnet.py
@@ -112,15 +112,14 @@
 # u for unquantised, load 16 bit PCM samples and convert to mu-law
 
 data = np.memmap(pcm_file, dtype='uint8', mode='r')
-nb_frames = len(data)//(4*pcm_chunk_size)//batch_size*batch_size
+nb_frames = (len(data)//(4*pcm_chunk_size)-1)//batch_size*batch_size
 
 features = np.memmap(feature_file, dtype='float32', mode='r')
 
 # limit to discrete number of frames
+data = data[4*2*frame_size:]
 data = data[:nb_frames*4*pcm_chunk_size]
-features = features[:nb_frames*feature_chunk_size*nb_features].copy()
 
-features = np.reshape(features, (nb_frames*feature_chunk_size, nb_features))
 
 data = np.reshape(data, (nb_frames, pcm_chunk_size, 4))
 in_data = data[:,:,:3]
@@ -128,12 +127,10 @@
 
 print("ulaw std = ", np.std(out_exc))
 
-features = np.reshape(features, (nb_frames, feature_chunk_size, nb_features))
+sizeof = features.strides[-1]
+features = np.lib.stride_tricks.as_strided(features, shape=(nb_frames, feature_chunk_size+4, nb_features),
+                                           strides=(feature_chunk_size*nb_features*sizeof, nb_features*sizeof, sizeof))
 features = features[:, :, :nb_used_features]
-
-fpad1 = np.concatenate([features[0:1, 0:2, :], features[:-1, -2:, :]], axis=0)
-fpad2 = np.concatenate([features[1:, :2, :], features[0:1, -2:, :]], axis=0)
-features = np.concatenate([fpad1, features, fpad2], axis=1)
 
 
 periods = (.1 + 50*features[:,:,18:19]+100).astype('int16')
--