Google Speecht-to-Text diarization python SDK

# #python #speech-recognition #speech-to-text #google-api-python-client #google-cloud-speech

Вопрос:

Я пытаюсь создать приложение на Python для транскрипции аудиозаписей с помощью API преобразования речи в текст Google Cloud. Поскольку это касается разговоров между несколькими ораторами, я хотел бы реализовать диаризацию динамиков. Однако, похоже, что STT предлагает диаризацию только на уровне слов:

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

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

 # Handling audio stream happens before this

transcript = ''

tag = 1
speaker = ''

for word_info in words_info:
    if word_info.speaker_tag == tag:
        speaker = speaker   ' '   word_info.word
    else:
        transcript  = 'speaker {}: {}'.format(tag, speaker)   'n'
        tag = word_info.speaker_tag
        speaker = ' '   word_info.word

transcript  = 'speaker {}: {}'.format(tag, speaker)
 

Однако такой подход затрудняет определение того, когда один оратор заканчивает, а другой начинает. Единственный способ определить это основан на изменении между динамиками. Это может привести к некоторым проблемам в будущем. Это также затрудняет использование некоторых функций SDK, таких как автоматическое добавление знаков препинания.

Есть ли лучший способ подойти к этому?