С помощью Google Cloud Speech-to-text, почему я получаю разные результаты для одного и того же аудиофайла, в зависимости от того, в какую корзину я его помещаю? - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь использовать Google Cloud Speech-to-text, используя клиентские библиотеки, из среды node.js, и вижу то, чего не понимаю: я получаю другой результат для того же примера аудиофайла, и та же конфигурация, в зависимости от того, использую ли я ее из исходного набора образцов или из собственного набора.

Есть запросы и ответы:

Базовая линия - это собственные тестовые данные Google файл, доступный здесь: https://storage.googleapis.com/cloud-samples-tests/speech/brooklyn.flac

Запрос:

{
  "config": {
    "encoding": "FLAC",
    "languageCode": "en-US",
    "sampleRateHertz": 16000,
    "enableAutomaticPunctuation": true
  },
  "audio": {
    "uri": "gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

Ответ:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "How old is the Brooklyn Bridge?",
          "confidence": 0.9831430315971375
        }
      ]
    }
  ]
}

Пока все хорошо. Но если я скачаю этот аудиофайл, повторно загрузу его в свое собственное ведро и сделаю то же самое, то:

Запрос:

{
  "config": {
    "encoding": "FLAC",
    "languageCode": "en-US",
    "sampleRateHertz": 16000,
    "enableAutomaticPunctuation": true
  },
  "audio": {
    "uri": "gs://goe-transcript-creation/brooklyn.flac"
  }
}

Ответ:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is",
          "confidence": 0.8902621865272522
        }
      ]
    }
  ]
}

Как видите, это тот же запрос. Повторно загруженные аудиоданные находятся здесь: https://storage.googleapis.com/goe-transcript-creation/brooklyn.flac

Это тот же файл, что и в первом примере ... нет разницы. Тем не менее, результаты разные; Я получаю только половину предложения.

Что мне здесь не хватает? Спасибо.

Обновление 1:

То же самое происходит и с инструментом CLI:

$ gcloud ml speech recognize gs://cloud-samples-tests/speech/brooklyn.flac --language-code=en-US
{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.98314303,
          "transcript": "how old is the Brooklyn Bridge"
        }
      ]
    }
  ]
}

$ gcloud ml speech recognize gs://goe-transcript-creation/brooklyn.flac --language-code=en-US
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Invalid recognition 'config': bad encoding..

$ gcloud ml speech recognize gs://goe-transcript-creation/brooklyn.flac --language-code=en-US --encoding=FLAC
ERROR: (gcloud.ml.speech.recognize) INVALID_ARGUMENT: Invalid recognition 'config': bad sample rate hertz.

$ gcloud ml speech recognize gs://goe-transcript-creation/brooklyn.flac --language-code=en-US --encoding=FLAC --sample-rate=16000
{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.8902483,
          "transcript": "how old is"
        }
      ]
    }
  ]
}

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

Обновление 2:

Если я не использую Google Cloud Storage, но загружаю данные непосредственно в текстовом запросе, он работает как положено:

$ gcloud ml speech recognize brooklyn.flac  --language-code=en-US 
{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.98314303,
          "transcript": "how old is the Brooklyn Bridge"
        }
      ]
    }
  ]
}

Так что проблема не решается Кажется, не с самого распознавания, но с доступом к аудиоданным. Очевидное предположение состоит в том, что, возможно, это ошибка загрузки, и данные каким-то образом повреждены по пути?

Мы можем проверить это, извлекая данные из облака и сравнивая с оригиналом . Кажется, он не сломан.

Так, может быть, это проблема, когда служба STT обращается к службе хранения? Но почему только с одним ведром? Или это проблема метаданных файла?

...