Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 语音识别的不同模型_Android_Tensorflow_Keras_Speech - Fatal编程技术网

Android 语音识别的不同模型

Android 语音识别的不同模型,android,tensorflow,keras,speech,Android,Tensorflow,Keras,Speech,我花了很多时间来运行这个示例项目,最后使用export direcory中的convert_keras_lite.py生成了这个tflite模型。但是,我在这个android项目的assets目录中检查了tflite模型。我发现tflite模型与第一个不同 我试图将android目录中的tflite模型替换为第一个tflite模型,但应用程序突然崩溃,android Studio logcat中出现以下错误代码: 2019-12-22 16:45:22.262 795-795/org.tenso

我花了很多时间来运行这个示例项目,最后使用export direcory中的convert_keras_lite.py生成了这个tflite模型。但是,我在这个android项目的assets目录中检查了tflite模型。我发现tflite模型与第一个不同

我试图将android目录中的tflite模型替换为第一个tflite模型,但应用程序突然崩溃,android Studio logcat中出现以下错误代码:

2019-12-22 16:45:22.262 795-795/org.tensorflow.lite.examples.speech E/AndroidRuntime: FATAL EXCEPTION: main
    Process: org.tensorflow.lite.examples.speech, PID: 795
    java.lang.RuntimeException: Unable to start activity ComponentInfo{org.tensorflow.lite.examples.speech/org.tensorflow.lite.examples.speech.SpeechActivity}: java.lang.IllegalArgumentException: Input error: Can not resize 1-th input for a model having 1 inputs.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3139)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3282)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1970)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7156)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
     Caused by: java.lang.IllegalArgumentException: Input error: Can not resize 1-th input for a model having 1 inputs.
        at org.tensorflow.lite.NativeInterpreterWrapper.resizeInput(Native Method)
        at org.tensorflow.lite.NativeInterpreterWrapper.resizeInput(NativeInterpreterWrapper.java:194)
        at org.tensorflow.lite.Interpreter.resizeInput(Interpreter.java:285)
        at org.tensorflow.lite.examples.speech.SpeechActivity.onCreate(SpeechActivity.java:190)
        at android.app.Activity.performCreate(Activity.java:7335)
        at android.app.Activity.performCreate(Activity.java:7326)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3119)**

感谢您的帮助。

好的,我还没有解决问题,但我想我发现了一些可能有用的东西:

首先,TensorFlow repo本身(不是专用示例repo)中的语音命令示例还有其他代码:

它不像您正在使用的那样使用keras,并且没有关于tflite转换的信息,所以我猜这个示例是在tflite出现之前创建的。 在查看了那里使用的模型之后,我发现它与android项目中预先打包的tflite模型的架构相同,并且它与您发布的第二个imgur链接相匹配

因此,android项目中的tflite模型看起来就像是旧示例中模型的转换。由于输入不同,因此产生的模型与android代码完全不兼容

这一点也不奇怪,因为android代码基本上是从中复制粘贴的,并对tflite的使用进行了一些调整

所以我想最好的方法是处理旧的ml代码,并将生成的冻结pb图转换为tflite

更新

我做到了!!! 下面是它的工作原理:

  • 从下载冻结的图形
  • 在python中运行以下命令

如果您使用netron查看模型,您将看到它与android示例附带的模型相同。

我也有同样的问题!发现正确地构建和转换模型确实很难。你找到解决办法了吗?还没有。我仍然在努力尝试。希望这个问题能解决。我今晚或明天再试试。如果我有最新消息,我会告诉你。你能告诉我用于图形可视化的工具的名称吗?用这个来可视化你创建的模型。谢谢你的建议。您使用的python和tensorflow版本是什么?我试过Python3.7.6和tensorflow 2.0,但没有你的版本,是的,我有完全相同的版本。什么东西对您不起作用?当我尝试
tflite\u model=converter.convert()
时,错误代码突然出现如下所示。我无法继续运行下一个代码。您确定使用的是正确的
tf.compat.v1.lite.TFLiteConverter
?是。我一步一步地遵循您的代码,因为
converter=tf.compat.v1.lite.TFLiteConverter.from\u freezed\u graph(“/conv\u actions\u freezed.pb”),input\u array=['decoded\u sample\u data','decoded\u sample\u data:1',output\u array=['labels\u softmax'])
包含
tf compat.v1.lite.TFLiteConverter
。当我执行这段代码时,没有错误消息,直到我在尝试tflite_model=converter.convert()时执行这段代码,突然收到错误消息。
import tensorflow as tf

converter = tf.compat.v1.lite.TFLiteConverter.from_frozen_graph("./conv_actions_frozen.pb", input_arrays=['decoded_sample_data', 'decoded_sample_data:1'], output_arrays=['labels_softmax'])
converter.allow_custom_ops=True
tflite_model = converter.convert()
open("model.tflite", "wb").write(model)