Преобразование текста в речь Google - Google :: Cloud :: InternalError (13: обнаружена внутренняя ошибка.): - PullRequest
0 голосов
/ 25 мая 2020

У меня есть Google Text to Speech, работающий в моем приложении. В большинстве случаев API работает безупречно, и я получаю ответы аудиофайлов, которые воспроизводятся нормально.

Иногда, хотя я получаю следующую ошибку:

Google::Cloud::InternalError (13:Internal error encountered.):

У меня есть меры предосторожности, чтобы запретить моему приложению работать с квотами использования, поэтому я не думаю, что это так. Кроме того, до того, как у меня были эти меры предосторожности, если я превышал квоту на go, в сообщениях об ошибках говорилось, что вы превысили свою квоту.

Кто-нибудь знает, что означает это сообщение?

В качестве альтернативы, если кто-то знает хороший способ изящно обработать эту ошибку (это приложение Rails).

Спасибо

1 Ответ

0 голосов
/ 25 мая 2020

Хорошо, поэтому я не знаю, что именно не так на стороне Google, кроме какой-то внутренней ошибки. Тем не менее, я нашел решение для устранения ошибки и позволило мне продолжить работу по преобразованию текста в речь.

Вот как выглядит мой код для тех, кто заинтересован:

def convert_to_audio(text, gender)
    client = Google::Cloud::TextToSpeech.text_to_speech

    input_text = { text: text }

    # Note: the voice can also be specified by name.
    # Names of voices can be retrieved with client.list_voices
    # https://cloud.google.com/text-to-speech/docs/voices
    if gender == 'MALE'
      name = 'en-US-Standard-D'
    else
      name = 'en-US-Standard-E'
    end
    voice = {
      language_code: "en-US",
      name: name,
      ssml_gender:   gender
    }

    audio_config = { audio_encoding: "MP3" }

    begin
      retries ||= 0
      response = client.synthesize_speech(
        input: input_text,
        voice: voice,
        audio_config: audio_config
      )
    rescue Google::Cloud::InternalError
      puts "The Google error occurred"
      retry if (retries += 1) < 3
    end

В основном теперь, когда я получаю эту ошибку от Google, я повторяю вызов синтезатора речи.

У Google довольно жесткие квоты, установленные для этого API, и я предполагаю, что это связано с тем, что более крупные и более частые запросы чаще вызывают ошибки. часто, поэтому они пытаются провести контроль качества.

Я также нашел это отображение ошибок для заинтересованных:

namespace error {
// These values must match error codes defined in google/rpc/code.proto.
enum Code {
  OK = 0,
  CANCELLED = 1,
  UNKNOWN = 2,
  INVALID_ARGUMENT = 3,
  DEADLINE_EXCEEDED = 4,
  NOT_FOUND = 5,
  ALREADY_EXISTS = 6,
  PERMISSION_DENIED = 7,
  UNAUTHENTICATED = 16,
  RESOURCE_EXHAUSTED = 8,
  FAILED_PRECONDITION = 9,
  ABORTED = 10,
  OUT_OF_RANGE = 11,
  UNIMPLEMENTED = 12,
  INTERNAL = 13,
  UNAVAILABLE = 14,
  DATA_LOSS = 15,
};
}  // namespace error
...