Google Cloud - получено недопустимое содержимое JSON.Неизвестное имя «кодировка» в «config»: поле Proto не повторяется, не может начать список - PullRequest
0 голосов
/ 12 февраля 2019

Когда я пытаюсь вызвать Google Cloud Speech to Text Api для длительного распознавания со следующей конфигурацией:

config = dict(
            languageCode='de',
            maxAlternatives=1,
            enableWordTimeOffsets=True,
            enableAutomaticPunctuation=True,
            model='default',
            encoding='ENCODING_UNSPECIFIED'
          )

Я получаю эту ошибку

Получена недопустимая полезная нагрузка JSON.Неизвестное имя «кодировка» в «config»: поле Proto не повторяется, список запуска не может

Как это исправить?

1 Ответ

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

Не могли бы вы дать нам больше информации ... например, какой язык и версию библиотеки вы используете для этой части вашего проекта?

Если вы используете Python , вы можете найти другой официальный способ подключения к Google Cloud Речь к тексту Api здесь: https://cloud.google.com/speech-to-text/docs/basics

Я привык использовать только пакет phyton googleapiclient вместе со структурой данных JSON вместо словарных данных.

import base64
import googleapiclient.discovery

with open(speech_file, 'rb') as speech:
    # Base64 encode the binary audio file for inclusion in the JSON
    # request.
    speech_content = base64.b64encode(speech.read())

# Construct the request
service = googleapiclient.discovery.build('speech', 'v1')
service_request = service.speech().recognize(
    body={
        "config": {
            "encoding": "LINEAR16",  # raw 16-bit signed LE samples
            "sampleRateHertz": 16000,  # 16 khz
            "languageCode": "en-US",  # a BCP-47 language tag
        },
        "audio": {
            "content": speech_content
            }
        })

Если вы этого не сделаете, обратитесь к этой официальной статьезнать, как установить пакеты Python: https://packaging.python.org/tutorials/installing-packages/#id13

Для запросов LongRunning, пожалуйста, обратитесь к: https://cloud.google.com/speech-to-text/docs/reference/rest/v1/speech/longrunningrecognize

Структура конфигурации JSON в этом случае будет:

{
  "config": {
    object(RecognitionConfig)
  },
  "audio": {
    object(RecognitionAudio)
  }
}

Где RecognitionConfig - это объект JSON вида:

{
  "encoding": enum(AudioEncoding),
  "sampleRateHertz": number,
  "languageCode": string,
  "maxAlternatives": number,
  "profanityFilter": boolean,
  "speechContexts": [
    {
      object(SpeechContext)
    }
  ],
  "enableWordTimeOffsets": boolean
}

И RecognitionAudio имеет вид:

{
  // Union field audio_source can be only one of the following:
  "content": string,
  "uri": string
  // End of list of possible types for union field audio_source.
}

ДляПри долгом распознавании вы также можете обратиться по этой ссылке: https://developers.google.com/resources/api-libraries/documentation/speech/v1/java/latest/com/google/api/services/speech/v1/Speech.SpeechOperations.html

В ней показано, как использовать пакет Phyton googleapiclient.discovery для длительных запросов, который просто с помощью следующего метода в вашем классе Phyton:

...
service_request = service.speech().longrunningrecognize(
        body= {
            "config": {
                "encoding": "FLAC",
                "languageCode": "en-US",
                "enableWordTimeOffsets": True
            },
            "audio": {
                "uri": str('gs://speech-clips/'+self.audio_fqid)
            }
        }
    )
...
...