Длинные файлы транскрибируются дважды (работают две операции) - ошибка - PullRequest
0 голосов
/ 20 апреля 2019

кажется, что любой длинный звук (> 4 мин) каким-то образом заставляет API порождать две операции вместо одной.Что бы я ни делал (используя шаблон генератора событий или обещания), это всегда так.

В результате в моей базе данных есть две транскрипции вместо одной (я даже не понимаю, как можно иметь в виду, что модель мангусты ломается при попадании второго текста в бэкэнд)

Пожалуйста,помогите мне решить эту проблему, я борюсь с этой проблемой около двух месяцев.

2019-04-20_21-18-54

Подробности среды
  • ОС: MacOS 10.14.4 (18E226)
  • Версия Node.js: 11.2.0
  • версия npm:
  • @google-cloud/speech версия: 2.3.0
Действия по воспроизведению

Код запуска:

async function transcribe(gcsuri, progressCB) {
  const reducerforSingleAlternative = (obj, item, index, array) => {
    item.alternatives[0].words.map(word => obj.words.push(word));
    obj.confidence += item.alternatives[0].confidence;
    obj.transcript += item.alternatives[0].transcript;
    if (index === (array.length - 1)) {
      obj.confidence /= array.length;
    }
    return obj;
  };

  process.env.GOOGLE_APPLICATION_CREDENTIALS = process.env.SPEECH_KEY;
  const speech = require('@google-cloud/speech').v1p1beta1;
  const client = new speech.SpeechClient();
  const audio = {
    uri: gcsuri,
  };
  const request = {
    audio,
    config: {
      encoding: 'OGG_OPUS',
      sampleRateHertz: 24000,
      languageCode: 'ru',
      enableSpeakerDiarization: true,
      enableWordConfidence: true,
      maxAlternatives: 1,
      enableWordTimeOffsets: true,
    },
  };

  const [operation] = await client.longRunningRecognize(request);

  operation.on('progress', (metadata, apiResponse) => {
    console.log('metadata', apiResponse);
    progressCB(metadata.progressPercent);
  });

  const [results] = await operation.promise();
  console.log('promise', typeof results, results);

  return results.results.reduce(reducerforSingleAlternative, { words: [], confidence: 0, transcript: '' });

1 Ответ

0 голосов
/ 21 апреля 2019

Проблема была с моим сервером Apollo.Каким-то образом это заставило API выполнить две операции (возможно, что-то связанное с таймаутами).Я попробовал чистый пример Node, и все в порядке.

...