首页 > 解决方案 > 如何在 Java 中实现简单音频识别 Tensorflow 教程中的三层网络

问题描述

我正在尝试在 Android 应用程序中使用使用简单音频识别 Tensorlow 教程训练的模型,但我想实现三个第一层,而不是在网络中,而是在 CPU 端。基本上我使用了 Tensorflow 教程中的训练(没有改变任何东西),但是在没有解码样本数据、计算频谱图和 mfcc 的情况下冻结了模型:

wav_data_placeholder

Tensor("wav_data:0, shape=(), dtype=string)

解码样本数据

DecodeWav(audio=(tf.Tensor 'decoded_sample_data:0' shape=(16000, 1) dtype=flat32), sample_rate(tf.Tensor 'decoded_sample_data:1' shape=() dtype=int32))

频谱图

Tensor("AudioSpectrogram:0, shape=(1, 98, 257), dtype=float32)

指纹输入

Tensor("Mfcc:0, shape=(1, 98, 40), dtype=float32)

因此,我的冻结模型具有输入形状 (1, 98, 40),并采用 mfcc 方法计算的值,该方法具有来自频谱图输出的输入值,该输入值来自解码的样本数据。

我在 java 中尝试了 librosa mfcc 实现,但不幸的是,它没有提供相同的结果。

如何在 Android 应用程序中计算我的 .wav 文件以成功满足我的模型输入以获得正确的预测?

标签: javaandroidtensorflowneural-networkspeech-recognition

解决方案


推荐阅读