Я пытаюсь реализовать одну из лучших услуг преобразования текста в речь (TTS) там, в приложении для Android, над которым я работаю в Android Студия.Как запросить облако речи IVONA от Android-приложения в Android Studio
ТТС сервис, который я хотел бы реализовать в Android является IVONA Speech Cloud, который бесплатно и дает доступ к 53 голосам (в настоящее время).
Я знаю, что есть SDK для Android, но проблема в том, что она стоит 1500 € для получения лицензии в целях развития (наконец-то я говорил с человеком продаж от IVONA), который я не собираюсь платить ,
Кроме того, я знаю, что могу просто загрузить движок IVONA TTS с ограниченным количеством голосов и реализовать их в своем приложении Android, которое я сделал некоторое время назад. Это также бесплатно, но я бы предпочел получить доступ ко всем 53 голосам, а не только 13 (в настоящее время). Кроме того, если пользователю понравятся все доступные голоса, этот человек должен будет загрузить их все, что может занимать много места для некоторых пользователей.
Положите это очень просто; я считаю, что это может быть самый лучший и простой способ иметь приложение, которое отправляет запросы TTS и принимает речевую речь (как в отношении речевых файлов, так и речевых URL) из веб-службы, такой как IVONA Speech Cloud. Тогда пользователю не нужно было устанавливать речевой движок IVONA TTS, включая несколько голосов.
На данный момент существует Java SDK с открытым исходным кодом, который реализует облако речи IVONA. Для меня не проблема запускать это, например. Затмение. Проблема в том, что я не могу сделать эту работу с моим Android-приложением.
Поэтому я хотел бы спросить вас, если это возможно реализовать, что Java SDK в Android приложение (в Android Studio)? Если да, то как?
Если не указано выше, как бы реализована реализация в Android Studio с использованием HTTP GET for API requests? Вы также можете вернуться в ссылку, см. Ссылку API.
Моя репутация точки (на данный момент) только позволяют мне размещать 2 ссылки!
Я был бы очень благодарен, если кто-то мог бы описать для меня (с кодом) как реализовать IVONA Speech Cloud в Android Studio от Java SDK или HTTP GET API запросы.
Update # 1
@BenJakuben предполагает, что я могу преобразовать зависимость Maven в Gradle. На самом деле я пробовал это раньше, не повезло. Это можно сделать двумя способами; первый из них описан как @BenJakuben.Второй способ сделать это путем:
- Выбор файла вкладку меню в Android Studio
- Выбор структуры Project
- Выбор зависимостями вкладку
- нажав на + (добавить) внизу и выбор 1 Зависимость от библиотеки
- Typing в IVONA и нажать на значок поиска и выбора первого варианта: com.ivona: Ivona-speechcloud-СДК-Java: 0.3.0
- Нажатие на кнопку OK
процесс синхронизации сообщает следующее:
Gradle build finished with 4 warnings(s) in 2 sec
4 предупреждений являются F ollows:
Warning:Dependency commons-logging:commons-logging:1.1.1 is ignored for debug as it may be conflicting with the internal version provided by Android.
Warning:Dependency org.apache.httpcomponents:httpclient:4.2 is ignored for debug as it may be conflicting with the internal version provided by Android.
Warning:Dependency commons-logging:commons-logging:1.1.1 is ignored for release as it may be conflicting with the internal version provided by Android.
Warning:Dependency org.apache.httpcomponents:httpclient:4.2 is ignored for release as it may be conflicting with the internal version provided by Android.
Затем я попытался скопировать SampleIvonaSpeechCloudGetCreateSpeechURL.java, а также IvonaCredentials.properties Файл с моей Accesskey и SecretKey я получил за БЕСПЛАТНО при регистрации на IVONA речи Облако. Эти 2 файла находятся в том же пакете, что и MainActivity.
SampleIvonaSpeechCloudGetCreateSpeechURL.Java выглядит следующим образом:
package IvonaSpeechCloudVoiceList;
import com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider;
import com.ivona.services.tts.IvonaSpeechCloudClient;
import com.ivona.services.tts.model.ListVoicesRequest;
import com.ivona.services.tts.model.Voice;
/**
* Class that generates singed URL for IVONA SpeechCloud ListVoices operation. This URL can be safely passed to
* client application to final invocation.
*/
public class SampleIvonaSpeechCloudGetVoiceListURL {
static IvonaSpeechCloudClient speechCloud;
private static void init() {
speechCloud = new IvonaSpeechCloudClient(
new ClasspathPropertiesFileCredentialsProvider("resources/IvonaCredentials.properties"));
speechCloud.setEndpoint("https://tts.eu-west-1.ivonacloud.com");
}
public static void main(String[] args) throws Exception {
init();
ListVoicesRequest allVoicesRequest = new ListVoicesRequest();
System.out.println("Request for all voices URL: " + speechCloud.getListVoicesUrl(allVoicesRequest));
ListVoicesRequest enUsVoicesRequest = new ListVoicesRequest();
Voice voice = new Voice();
voice.setLanguage("en-US");
enUsVoicesRequest.setVoice(voice);
System.out.println("Request for en-US voices URL: " + speechCloud.getListVoicesUrl(enUsVoicesRequest));
}
}
Теперь, так как есть некоторые чисто Java синтаксис пару мест, я изменил его на следующее:
1) от:
public static void main(String[] args) throws Exception {
1) конструктору без входных параметров:
public SampleIvonaSpeechCloudGetCreateSpeechURL() throws Exception {
2) от:
System.out.println("Request for en-US voices URL: " + speechCloud.getListVoicesUrl(enUsVoicesRequest));
2) на информационное сообщение (с возвращаемой URL из IVONA Speech Cloud) в журнале, что я могу читать, когда приложение выполняется:
Log.i("TAG","Requested URL: " + speechCloud.getCreateSpeechUrl(createSpeechRequest));
Теперь в моем MainActivity Я просто объявить и создать экземпляр объекта из SampleIvonaSpeechCloudGetCreateSpeechURL.java Класс:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
SampleIvonaSpeechCloudGetCreateSpeechURL sampleSpeechURL = new SampleIvonaSpeechCloudGetCreateSpeechURL();
} catch (Exception e) {
e.printStackTrace();
}
}
Когда я пытаюсь запустить приложение (на моем Android телефона) Я получаю это:
Gradle build finished with 1 error(s) and 4 warning(s) in 1 min 25 sec.
Error:Execution failed for task ':app:preDexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/bin/java'' finished with non-zero exit value 3
Update # 2
В файле Gradle я добавил следующие строки c оды, которые забирали 4 предупреждения в адрес Update # 1:
configurations {
all*.exclude group: 'org.apache.httpcomponents'
all*.exclude group: 'org.apache.commons'
all*.exclude group: 'commons-logging', module: 'commons-logging'
}
Когда я хочу запустить мое приложение я все еще получаю сообщение erros. Вот она, включая всю информацию:
Information:Gradle tasks [:app:assembleDebug]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:compileDebugNdk UP-TO-DATE
:app:checkDebugManifest
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:compileDebugJava
:app:preDexDebug
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.BitSet.initWords(BitSet.java:164)
at java.util.BitSet.<init>(BitSet.java:159)
at com.android.dx.ssa.SsaBasicBlock.<init>(SsaBasicBlock.java:127)
at com.android.dx.ssa.SsaMethod.makeExitBlock(SsaMethod.java:200)
at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:58)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:98)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:72)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:297)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:137)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:93)
at com.android.dx.command.dexer.Main.processClass(Main.java:729)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
at com.android.dx.command.dexer.Main.access$300(Main.java:83)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:632)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
Error:Execution failed for task ':app:preDexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/bin/java'' finished with non-zero exit value 3
Information:BUILD FAILED
Information:Total time: 1 mins 16.967 secs
Information:1 error
Information:0 warnings
Information:See complete output in console
любой прогресс помощник? – ChaturaM
Нет, к сожалению. – poltexious
Это работает? – user1163234