我正在 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/