Облачная платформа Google: преобразование речи в текст больших медиафайлов - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь извлечь текст из медиа-файла mp4, загруженного с YouTube.Поскольку я использую облачную платформу Google, я подумал, что стоит попробовать облачную речь Google.

После всех установок и настроек я скопировал следующий фрагмент кода, чтобы начать работу с:

with io.open(file_name, 'rb') as audio_file:
    content = audio_file.read()
    audio = types.RecognitionAudio(content=content)

config = types.RecognitionConfig(encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16, sample_rate_hertz=16000, language_code='en-US')   

response = client.long_running_recognize(config, audio)

Но я получил следующую ошибку относительно размера файла:

InvalidArgument: 400 Встроенное аудио превышает ограничение длительности.Пожалуйста, используйте GCS URI.

Затем я прочитал, что я должен использовать потоки для больших медиа-файлов.Итак, я попробовал следующий фрагмент кода:

with io.open(file_name, 'rb') as audio_file:
    content = audio_file.read()

#In practice, stream should be a generator yielding chunks of audio data.

stream = [content]
requests = (types.StreamingRecognizeRequest(audio_content=chunk)for chunk in stream)

config = types.RecognitionConfig(encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,sample_rate_hertz=16000,language_code='en-US')

streaming_config = types.StreamingRecognitionConfig(config=config)

responses = client.streaming_recognize(streaming_config, requests)

Но все же я получил следующую ошибку:

InvalidArgument: 400 Неверный аудиоконтент: слишком длинный.

Итак, кто-нибудь может предложить способ расшифровки файла mp4 и извлечения текста.У меня нет сложных требований к очень большому медиафайлу.Медиа-файл может быть максимум 10-15 минут.Спасибо

1 Ответ

0 голосов
/ 15 ноября 2018

Сообщение об ошибке означает, что файл слишком велик, и вам необходимо сначала скопировать файл мультимедиа в Google Cloud Storage, а затем указать URI облачного хранилища, например gs: //bucket/path/mediafile.

Ключ к использованию URI облачного хранилища:

RecognitionAudio audio = RecognitionAudio.newBuilder (). SetUri (gcsUri) .build ();

Следующий кодпокажет вам, как указать GCS URI для ввода.У Google есть полный пример на github.

  public static void syncRecognizeGcs(String gcsUri) throws Exception {
    // Instantiates a client with GOOGLE_APPLICATION_CREDENTIALS
    try (SpeechClient speech = SpeechClient.create()) {
      // Builds the request for remote FLAC file
      RecognitionConfig config =
          RecognitionConfig.newBuilder()
              .setEncoding(AudioEncoding.FLAC)
              .setLanguageCode("en-US")
              .setSampleRateHertz(16000)
              .build();
      RecognitionAudio audio = RecognitionAudio.newBuilder().setUri(gcsUri).build();

      // Use blocking call for getting audio transcript
      RecognizeResponse response = speech.recognize(config, audio);
      List<SpeechRecognitionResult> results = response.getResultsList();

      for (SpeechRecognitionResult result : results) {
        // There can be several alternative transcripts for a given chunk of speech. Just use the
        // first (most likely) one here.
        SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
        System.out.printf("Transcription: %s%n", alternative.getTranscript());
      }
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...