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

原文 标签 java python azure android-studio

我正在使用Java在Android Studio中构建一个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应用程序(只有webapps)上尝试过此操作。 (他们在该项目的常见问题解答中声明可以使用)

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/

相关文章:

java - 如何从 CLASSPATH 引用 XSD 以验证我的 XML?

java - 当无法到达主机时,c3p0不超时

java - 正则表达式 : some groups missing

Azure 缓存(预览版)OutputCache - 高 CPU - 慢

运行旧代码的Azure WebJob

java - 带有 JButton 数组的空指针

python - 意外从 Debian Squeeze 上的/usr/include/python2.7 中删除了 pyconfig.h 文件

python - 在Python中使用Matplotlib制作4-D散点图

python - 删除重音和特殊字符

azure - 无法重命名 Azure 存储中的 blob 文件