java - 如何在Android Studio中从Java代码执行Python代码?

标签 java python azure android-studio

我正在 Android studio 中使用 Java 构建 Android 应用程序。我想使用语音转文本和文本转语音以及一些我已经编写的基于机器学习的 python 程序。 是否有可能做到这一点?完成此任务需要什么技术堆栈?

我遇到了各种解决方案,例如使用 sl4A、Jython、QPython 以及在服务器上运行 python 代码。我也经历过以下操作,但尚未找到解决方案

Execute python script from android App in Java

How to execute Python script from Java code in Android

Execute python script from android App in Java

请举例说明。举个例子,如果我想使用以下 python 代码(使用 Google 语音识别 API 进行语音到文本转换)在我的 Android 应用程序中运行:

import speech_recognition as sr
r = sr.Recognizer()

with sr.Microphone() as src:
    print("speak....")
    audio = r.listen(src, 2)
    print("over")
try:
    print("you said: "+r.recognize_google(audio))
except:
    print("cannot recognize")

我应该遵循哪些步骤?实现这一目标的最佳方法是什么? 预先感谢您。

编辑1:可以使用azure服务来实现吗?

最佳答案

我一直在使用JEP作为java和python之间的桥梁,我从来没有在android应用程序上真正尝试过这个,只在web应用程序上尝试过。 (在项目的常见问题解答中,他们声明它可以工作)

private RunOutputModel run(RunInputModel model, String path) throws Exception {

    RunOutputModel retVal = new RunOutputModel();

    try (SharedInterpreter jep = new SharedInterpreter()) {
        jep.eval("import sys");
        jep.eval("sys.path.append('" + path + "')");
        jep.eval("import master_main");
        jep.set("well", model.getWell());
        jep.set("startDate", model.getStartDate());
        jep.set("endDate", model.getEndDate());
        //other vars
        jep.eval("objClass = master_main.master()");
        jep.eval("x = objClass.main(path, well, startDate, endDate,/*vars*/)");
        Object result1 = jep.getValue("x");
        //manager result
        }
    } catch (Exception e) {
        retVal.setStatus(e.getMessage());
        Utils.log("error", e.getMessage(), path);
    }
    return retVal;
}

这是Python:

class master:
def __init__(self):
    self.SETVARIABLES = ''

def main(self, path, well, startDate, endDate):
    #stuff

通过搜索我发现this ,他们甚至还有混合源代码应用程序的项目示例(Python 和 Java)。

关于java - 如何在Android Studio中从Java代码执行Python代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54518738/

相关文章:

python - 为什么我的 launch.json 上会出现 “Property pythonPath is not allowed”?

azure - 如果浏览器选项卡处于非事件状态,则 SignalR 连接超时

java - codehaus 消失后 maven-rpm-plugin 文档在哪里

python - FFmpeg 和 Jupyter 笔记本

java - 使用 Jersey 异步流式传输大量响应

python - pandas 使用 LIKE 运算符加入条件

sql-server - Azure SQL 数据库 - 对 Azure VM SQL 实例的弹性查询 - SSL 错误

azure - 插槽算作 Azure 中的 VM 吗?

java - 在JPA中的persistence.xml中建立ms sql连接

java - 为什么 JPA 实体中的属性不允许使用 "public"?