将“ .wav”文件读入java android作为“ .tflite”模型的输入文件

时间:2019-08-21 19:40:18

标签: java python android wav tensorflow-lite

我在Classification中遇到一个Machine Learning问题。我使用Keras中的Python用模型训练了我的音频文件。我对数据做了一些预处理(分为多个相等的段,然后分别对其进行重新采样),然后读取它的左声道(我的数据是立体声的,而我使用了wavfile中的scipy.io库。 用1D Convolutional Neural Network训练后,我将模型另存为.h5文件。之后,我将模型转换为Tensorflow Lite模型(.tflite)。

在我的android项目中,我将labels.txtMymodel.tflite放入了assets文件夹中,并且根据 TensorFlow Lite 文档,我尝试运行{{1} }。

这是我的问题:

  

我如何准备与我想训练模型时使用的python库兼容的解释器的输入数据?

这是我的Python和Java代码:

在这段代码中,我分割了我的音频文件:

TensorFlow Lite Interpreter

然后,这是我读取from pydub import AudioSegment from pydub.utils import make_chunks song = AudioSegment.from_wav("audio.wav") chunk_length_ms = 10 * 1000 # pydub calculates in millisec chunks = make_chunks(song, chunk_length_ms) # Make chunks of ten sec for j, chunk in enumerate(chunks): chunk = chunk.set_frame_rate(16000) chunk.export(chunk_name, format="wav") 文件的代码的一部分:

wav

将keras模型转换为tflite模型:

fs, data_s = wavfile.read(file_path)       
data = data_s[:, 0]

最后是Java代码:

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_keras_model_file('mymodel.h5')
tflite_model = converter.convert()
open("Mymodel.tflite", "wb").write(tflite_model)

主要问题是为try (Interpreter interpreter = new Interpreter(loadModelFile(MainActivity.this))) { interpreter.run(audioBytes, loadLabelList(MainActivity.this)); } catch (IOException e) { e.printStackTrace(); } 方法的输入生成audioBytes。如果您对此问题有任何经验,请与我分享。在此先感谢!

0 个答案:

没有答案