Я не могу сделать запрос с помощью клиентской библиотеки Google TTS на java. Каждый раз выдает кучу исключений.
Я просто пытаюсь получить список доступных голосов.
GoogleCredentials creds = null;
TextToSpeechClient textToSpeechClient = null;
try {
creds = GoogleCredentials.fromStream(new FileInputStream(credsFile));
TextToSpeechSettings settings = TextToSpeechSettings.newBuilder().setCredentialsProvider(FixedCredentialsProvider.create(creds)).build();
textToSpeechClient = TextToSpeechClient.create(settings);
} catch (IOException e) {
e.printStackTrace();
System.exit(-2);
}
if (cmd.hasOption('l')) {
ListVoicesRequest request = ListVoicesRequest.getDefaultInstance();
ListVoicesResponse response = textToSpeechClient.listVoices(request);
List<Voice> voices = response.getVoicesList();
System.out.println("Available voices :");
for (Voice v : voices) {
System.out.printf(" - %s, [%d]: %s/%s", v.getName(), v.getLanguageCodesCount(), v.getLanguageCodes(0), v.getSsmlGender());
}
textToSpeechClient.close();
System.exit(0);
}
Сначала я подумал, что это произошло из файла учетных данных. Но это не так, файл расположен правильно.
И я понял это.
avr. 02, 2019 11:36:46 PM io.grpc.internal.ManagedChannelImpl$1 uncaughtException
SEVERE: [Channel<1>: (texttospeech.googleapis.com:443)] Uncaught exception in the SynchronizationContext. Panic!
java.lang.IllegalStateException: Could not find policy 'pick_first'. Make sure its implementation is either registered to LoadBalancerRegistry or included in META-INF/services/io.grpc.LoadBalancerProvider from your jar files.
at io.grpc.internal.AutoConfiguredLoadBalancerFactory$AutoConfiguredLoadBalancer.<init>(AutoConfiguredLoadBalancerFactory.java:93)
at io.grpc.internal.AutoConfiguredLoadBalancerFactory.newLoadBalancer(AutoConfiguredLoadBalancerFactory.java:64)
at io.grpc.internal.ManagedChannelImpl.exitIdleMode(ManagedChannelImpl.java:357)
at io.grpc.internal.ManagedChannelImpl$ChannelTransportProvider$1ExitIdleModeForTransport.run(ManagedChannelImpl.java:455)
at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:101)
at io.grpc.SynchronizationContext.execute(SynchronizationContext.java:130)
at io.grpc.internal.ManagedChannelImpl$ChannelTransportProvider.get(ManagedChannelImpl.java:459)
(...) a whole bunch of other lines
Как исправить эту ошибку?
Обратите внимание, что я использую последнюю версию библиотеки google-cloud-texttospeech (версия 0.85.0-beta).
Caused by: io.grpc.StatusRuntimeException: INTERNAL: Panic! This is a bug!
. Это мало помогает. Однако я думаю, что это связано с балансировкой нагрузки серверов Google. В этом контексте «pick_first» будет означать выбор первого доступного сервера. Но похоже, что клиент не знает, как использовать эту стратегию. - person Gui-Yôm   schedule 04.04.2019Could not find policy 'pick_first'
- person Abra   schedule 04.04.2019textToSpeechClient.listVoices(request);
- person Gui-Yôm   schedule 04.04.2019