ref: d749351ae573de0c87751af31866d9eb726e2180
parent: 8e2b539338510a5c5a49ec05e581aa6519ee331c
author: Jean-Marc Valin <jmvalin@amazon.com>
date: Mon Jun 5 10:13:37 EDT 2023
Add lpcnet_compute_single_frame_features_float()
--- a/dnn/include/lpcnet.h
+++ b/dnn/include/lpcnet.h
@@ -145,6 +145,15 @@
*/
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 <tt>LPCNetDecState*</tt>: Encoder state
+ * @param [in] pcm <tt>float *</tt>: Input speech to be analyzed
+ * @param [out] features <tt>float[NB_TOTAL_FEATURES]</tt>: 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 <code>LPCNetState</code> structure.
* @returns The size in bytes.
*/
--- a/dnn/lpcnet_enc.c
+++ b/dnn/lpcnet_enc.c
@@ -894,13 +894,26 @@
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<FRAME_SIZE;i++) x[i] = pcm[i];
+static int lpcnet_compute_single_frame_features_impl(LPCNetEncState *st, float *x, float features[NB_TOTAL_FEATURES]) {
preemphasis(x, &st->mem_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<FRAME_SIZE;i++) x[i] = pcm[i];
+ lpcnet_compute_single_frame_features_impl(st, x, features);
+ return 0;
+}
+
+int lpcnet_compute_single_frame_features_float(LPCNetEncState *st, const float *pcm, float features[NB_TOTAL_FEATURES]) {
+ int i;
+ float x[FRAME_SIZE];
+ for (i=0;i<FRAME_SIZE;i++) x[i] = pcm[i];
+ lpcnet_compute_single_frame_features_impl(st, x, features);
return 0;
}
--
⑨