Как получить полную стенограмму с помощью google.cloud.speech_v1p1beta1?

Используя Google-Speech-to-Text, я получаю только частичную транскрипцию. Входной файл: из образца аудиофайла Google

Ссылка на местоположение репозитория Google Commercial_mono .wav

Вот мой код:

def transcribe_gcs(gcs_uri):
from google.cloud import speech_v1p1beta1 as speech
from google.cloud.speech_v1p1beta1 import enums
from google.cloud.speech_v1p1beta1 import types
client = speech.SpeechClient()
audio = types.RecognitionAudio(uri = gcs_uri)
config = speech.types.RecognitionConfig( language_code = 'en-US',enable_speaker_diarization=True, diarization_speaker_count=2)
operation = client.long_running_recognize(config, audio)


print('Waiting for operation to complete...')
response = operation.result(timeout=5000)
result = response.results[-1]

words_info = result.alternatives[0].words

tag=1
speaker=" "

for word_info in words_info:
    if word_info.speaker_tag==tag:
        speaker=speaker+" "+word_info.word

    else:
        print("speaker {}: {}".format(tag,speaker))
        tag=word_info.speaker_tag
        speaker=" "+word_info.word

Вот как я называю сценарий:

transcribe_gcs('gs://mybucket0000t/commercial_mono.wav')

Я получаю только частичную транскрипцию всего аудиофайла

(venv3) ➜  g-transcribe git:(master) ✗ python gtranscribeWithDiarization.py
Waiting for operation to complete...
speaker 1:   I'm here
speaker 2:  hi I'd like to buy a Chrome Cast and I was wondering whether you 
could help me

Это все, что я получаю

Если я выполню код несколько раз, после 5 или 6 раз, я не получу никакой транскрипции.

Вот результат после нескольких попыток:

(venv3) ➜  g-transcribe git:(master) ✗ python gtranscribeWithDiarization.py

Waiting for operation to complete...
speaker 1:  

(venv3) ➜  g-transcribe git:(master) ✗ 

Env: Использование python3

  • Использование учетной записи службы Google и никаких проблем с подключением.
  • Также скопировал файл в хранилище Google и подтвердил, что могу играть
  • Пытался конвертировать файл из wav в flac, но результаты такие же
  • использовал ffprobe, чтобы убедиться, что есть только один канал

Я пытаюсь получить всю транскрипцию с отметкой времени, когда меняются динамики.

Желаемый результат

Speaker 1: Start Time 0.0001: Hello transcription starts
Speaker 2: Start Time 0.0009: Here starts with the transcription of the 2nd speaker and so on to the end of file.

Надеюсь, ты сможешь помочь.




Ответы (1)


У меня пока не было проблем с v1p1beta.

Предложение №1: Возможно, это очевидное предложение, но позволяет ли ваш проект «регистрировать данные»? Это необходимо для использования более продвинутых функций / моделей. Может попробовать? Вы можете отключить его после тестирования, если это не меняет результат.

Ссылка на регистрацию данных: https://cloud.google.com/speech-to-text/docs/data-logging

Предложение №2: попробуйте использовать следующую строку:

client = speech_v1p1beta1.SpeechClient()

Предложение № 3: попробуйте добавить частоту дискретизации в свою конфигурацию.

sample_rate_hertz = 44100
person MarketerInCoderClothes    schedule 25.02.2019
comment
Вы пробовали код со ссылкой в ​​моем вопросе? и да, у меня уже включена регистрация данных. - person Stryker; 25.02.2019
comment
Нет, я этого не делал, просто он работал с моими собственными файлами. Вы случайно не пробовали Предложение №2? - person MarketerInCoderClothes; 26.02.2019
comment
Да, я это сделал, но если вы внимательно посмотрите, это то же самое, что я сделал в импорте речи_v1p1beta1 из google.cloud в качестве речи, но я попытался. Вы используете long_running_recognize? Насколько велик ваш аудиофайл? 30 или 60 минут? - person Stryker; 26.02.2019
comment
Да, долгое время, от 15 до 35. - person MarketerInCoderClothes; 26.02.2019