diff --git a/dnn/include/lpcnet.h b/dnn/include/lpcnet.h
index c094aec6..fd12044c 100644
--- a/dnn/include/lpcnet.h
+++ b/dnn/include/lpcnet.h
@@ -145,6 +145,15 @@ LPCNET_EXPORT int lpcnet_compute_features(LPCNetEncState *st, const short *pcm,
*/
LPCNET_EXPORT int lpcnet_compute_single_frame_features(LPCNetEncState *st, const short *pcm, float features[NB_TOTAL_FEATURES]);
+
+/** Compute features on LPCNET_FRAME_SIZE speech samples (currently 160) and output features for one 10-ms frame.
+ * @param [in] st LPCNetDecState*: Encoder state
+ * @param [in] pcm float *: Input speech to be analyzed
+ * @param [out] features float[NB_TOTAL_FEATURES]: Four feature vectors
+ * @retval 0 Success
+ */
+LPCNET_EXPORT int lpcnet_compute_single_frame_features_float(LPCNetEncState *st, const float *pcm, float features[NB_TOTAL_FEATURES]);
+
/** Gets the size of an LPCNetState
structure.
* @returns The size in bytes.
*/
diff --git a/dnn/lpcnet_enc.c b/dnn/lpcnet_enc.c
index 054c9b1c..e46be370 100644
--- a/dnn/lpcnet_enc.c
+++ b/dnn/lpcnet_enc.c
@@ -894,13 +894,26 @@ LPCNET_EXPORT int lpcnet_compute_features(LPCNetEncState *st, const short *pcm,
return 0;
}
-int lpcnet_compute_single_frame_features(LPCNetEncState *st, const short *pcm, float features[NB_TOTAL_FEATURES]) {
- int i;
- float x[FRAME_SIZE];
- for (i=0;imem_preemph, x, PREEMPHASIS, FRAME_SIZE);
compute_frame_features(st, x);
process_single_frame(st, NULL);
RNN_COPY(features, &st->features[0][0], NB_TOTAL_FEATURES);
return 0;
}
+
+int lpcnet_compute_single_frame_features(LPCNetEncState *st, const short *pcm, float features[NB_TOTAL_FEATURES]) {
+ int i;
+ float x[FRAME_SIZE];
+ for (i=0;i