Исключение в потоке "main" com.google.api.gax.rpc.DeadlineExceededException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED - PullRequest
0 голосов
/ 15 мая 2018

Я столкнулся с этой проблемой при подключении к облачному API-интерфейсу Google Cloud для преобразования текста в корпоративный прокси-сервер:

io.grpc.internal.ManagedChannelImpl $ NameResolverListenerImpl onError ВНИМАНИЕ: [io.grpc.internal.ManagedChannelImpl-1] не удалось разрешить название. status = Status {code = UNAVAILABLE, description = null, reason = java.net.UnknownHostException: обычно это временная ошибка во время разрешения имени хоста и означает, что локальный сервер не получить ответ от авторитетного сервера (Speech.googleapis.com).

Вот мой код

/*try {
    Credentials creds = GoogleCredentials.getApplicationDefault();
    System.out.println(" "+creds);
} catch (IOException e2) {
    e2.printStackTrace();
}*/
System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "3128");
System.setProperty("https.proxyHost", "x.x.x.x");
System.setProperty("https.proxyPort", "3128");

/*String encoded = new String(Base64.encodeBase64(new String("username:password").getBytes()));
String base64encodedCredentials = "Basic " + encoded;*/

SpeechClient speech = null;
try {
    speech = SpeechClient.create();
} catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
//speech.getRequestFactory().setPrivateHeader("Proxy-Authorization", base64encodedCredentials);

// The path to the audio file to transcribe
String fileName = "D:\\RecordAudio1.flac";//D:\\Voice\\RecordAudio.wav
System.out.println("path "+fileName);

// Reads the audio file into memory
Path path = Paths.get(fileName);
byte[] data = null;
try {
    data = Files.readAllBytes(path);
} catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
ByteString audioBytes = ByteString.copyFrom(data);

// Builds the sync recognize request
RecognitionConfig config = RecognitionConfig.newBuilder()
    .setEncoding(AudioEncoding.FLAC)
    .setSampleRateHertz(16000)
    .setLanguageCode("en-US")
    .build();
RecognitionAudio audio = RecognitionAudio.newBuilder()
    .setContent(audioBytes)
    //.setUri(("gs://cloud-samples-tests/speech/brooklyn.flac"))
    .build();

// Performs speech recognition on the audio file
RecognizeResponse response = speech.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();
System.out.println("came to line 69 "+results.size());
try
{
  for (SpeechRecognitionResult result: results) {
    // There can be several alternative transcripts for a given chunk of speech. Just use the
    // first (most likely) one here.
    SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
    System.out.printf("Transcription: %s%n", alternative.getTranscript());
  }
    speech.close();
} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

Я попытался установить GRPC_PROXY_EXP="http.proxyHost:port" переменную окружения в системных переменных, но она по-прежнему выдает ту же ошибку.

Пожалуйста, помогите ..

1 Ответ

0 голосов
/ 04 июля 2018

Вы получаете эту ошибку, используя Speech API, потому что этот API пытается разрешить, что означает, что локальный сервер не получил ответ от сервера авторизации (speech.googleapis.com).Таким образом, я бы сказал, что проблема связана с локальной конфигурацией DNS клиента.

...