Как выполнить коды Python из кода Java в Android Studio? - PullRequest
0 голосов
/ 04 февраля 2019

Я создаю Android-приложение в Android-студии с Java.Я хочу использовать «Речь в текст» и «Текст в речь» и некоторые программы на Python, основанные на машинном обучении, которые я уже написал.Можно ли сделать это?Какой технологический стек мне нужен для этого?

Я сталкивался с различными решениями, такими как использование sl4A, Jython, QPython и запуск кода python на сервере. Я также прошел через следующее, но у меня нет 'пока не нашел решения

Выполнение скрипта Python из Android-приложения в Java

Как выполнить скрипт Python из кода Java в Android

Выполнение скрипта Python из Android-приложения на Java

Пожалуйста, объясните на примере.Например, если я хочу использовать следующий код Python (преобразование речи в текст с использованием API распознавания речи Google) для запуска в моем приложении для 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 ?

1 Ответ

0 голосов
/ 04 февраля 2019

Я использовал JEP в качестве моста между Java и Python, я никогда не пробовал это на приложениях для Android, только веб-приложения.(в часто задаваемых вопросах проекта говорится, что он может работать)

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;
}

А вот и питон:

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

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

Поиском я нашел this , у них даже есть примеры проектов приложения со смешанным исходным кодом (и python, и java).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...