Мы отправляем аудиофайлы в Google речь в текстовый API.Эти аудиофайлы могут длиться 10 секунд, но также и несколько минут.Мы используем облачные функции Firebase для выполнения этих запросов.Мы запускаем несколько экземпляров этих функций одновременно.Если у нас много аудиофайлов, мы получаем следующее сообщение об ошибке:
Error: 8 RESOURCE_EXHAUSTED: Quota exceeded for quota metric speech.googleapis.com/default_requests and limit DefaultRequestsPerMinutePerProject of service speech.googleapis.com
Вопрос в том, как изменить настройки, чтобы сделать меньше запросов для одного файла с продолжительной операцией?
Надеюськто-то может помочь!
Я знаю, что для API существует 300 запросов в минуту.Это будет превышено, если одновременно отправлено много аудиофайлов.Как уже говорилось, мы используем длительную операцию для получения результатов.Если мы отправим 1 аудиофайл, мы ожидаем сделать 1 запрос к API, но если мы проверим страницу квот, мы увидим гораздо больше.(Вроде 20-50 запросов).Мы думаем, это связано с операцией проверки ответа?Таким образом, он отправляет новый запрос к API, чтобы узнать, есть ли уже результат?
Вопрос в том, можем ли мы установить эти значения для менее регулярной проверки, и как мы это делаем?
Мы думали, что это как-то связано с:
export interface BackoffSettings {
maxRetries?: number;
initialRetryDelayMillis: number;
retryDelayMultiplier: number;
maxRetryDelayMillis: number;
initialRpcTimeoutMillis?: number | null;
maxRpcTimeoutMillis?: number | null;
totalTimeoutMillis?: number | null;
rpcTimeoutMultiplier?: number | null;
}
Здесь мы попытались установить initialRetryDelayMillis в гораздо более высокое значение.Мы думали, что это используется для проверки результата, и если мы установим его на более высокое значение, он будет делать меньше запросов для проверки результата.Похоже, что это не так.
const audioConfig = {
sampleRateHertz: wavOptions.sampleRate,
encoding: 'LINEAR16',
languageCode: speechLanguage,
enableSpeakerDiarization: false,
enableWordTimeOffsets: true,
enableWordConfidence: true,
};
const request = {
config: audioConfig,
audio: { uri: 'gs://' + AUDIO_BUCKET_NAME + '/' + filePath },
};
const callOptions = {
longrunning: {
backoffSettings: {
initialRetryDelayMillis: 100,
maxRetryDelayMillis: 60000,
retryDelayMultiplier: 1.3,
initialRpcTimeoutMillis: null,
rpcTimeoutMultiplier: null,
maxRpcTimeoutMillis: null,
totalTimeoutMillis: null
}
}
}
callOptions: эти значения, представленные выше, являются значениями по умолчанию.Если мы увеличим initialRetryDelayMillis или retryDelayMultiplier, мы даже получим больше запросов вместо меньших.
const [operation] = await speechClient.longRunningRecognize(request, callOptions);
Ожидается, что число запросов будет уменьшено при увеличении initialDelayMillis или retryDelayMultiplier, но в противном случае.