google-text-to-speech - Google 文字转语音 - Google::Cloud::InternalError(13:遇到内部错误。):
问题描述
我在我的应用程序中启动并运行了 Google Text to Speech。大多数情况下,API 都能完美运行,而且我收到的音频文件响应播放良好。
有时虽然我收到以下错误:
Google::Cloud::InternalError (13:Internal error encountered.):
我有适当的保护措施来防止我的应用程序遇到使用配额,所以我不认为是这样。此外,在我实施这些保护措施之前,如果我确实超出了配额,错误消息会说您超出了配额。
有谁知道这个消息是什么意思?
或者,如果有人知道优雅地处理此错误的好方法(它是一个 Rails 应用程序)。
谢谢
解决方案
好的,所以除了某种内部错误之外,我不知道 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
基本上现在当我从谷歌收到那个错误时,我会重试合成语音呼叫。
谷歌在这个 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
推荐阅读
- javascript - 如何在多个页面上使用相同的覆盖 div
- javascript - 使用 date-fns 进行德语日期验证
- wordpress - 自定义 Wordpress 表格和 API
- rx-java2 -
- node.js - 如何优雅地关闭猫鼬的连接池?
- vb.net - 如何在不考虑空行的情况下自定义带有空行的datagridview并设置数据源?
- ios - 没有 onNext 的observer.onComplete() 如何在平面图链中工作?- 它必须跳过所有以下平面图,对吗?
- html - 如何使用 Angular 在 HTML 中移动元素
- excel - 尝试在一系列名称中查找名称 - 出现错误 13 类型不匹配
- ruby-on-rails - 有没有办法使用 transform_keys 方法只转换 Rails 中的一些键?