我在Classification
中遇到一个Machine Learning
问题。我使用Keras
中的Python
用模型训练了我的音频文件。我对数据做了一些预处理(分为多个相等的段,然后分别对其进行重新采样),然后读取它的左声道(我的数据是立体声的,而我使用了wavfile
中的scipy.io
库。
用1D Convolutional Neural Network
训练后,我将模型另存为.h5
文件。之后,我将模型转换为Tensorflow Lite
模型(.tflite
)。
在我的android项目中,我将labels.txt
和Mymodel.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
。如果您对此问题有任何经验,请与我分享。在此先感谢!