谷歌语音分类标签一直在变化

问题描述

我正在构建一个使用 Google Speech-To-Text 并启用 speaker diarization 来转录实时音频流的应用程序(有关背景信息,请参阅之前的问题:12、{ {3}})。理想情况下,输出应如下所示:

00:00,speaker 1: 'Hello Peter,how old are you?'
00:08,speaker 2: 'Hello Mary,I am 20 years old.'
00:14,speaker 1: 'Where do you live?'
00:19,speaker 2: 'I live in New York.'

虽然我当前的 Google STT 设置相对较好地转录了输入音频,但扬声器分类并没有像我预期的那样工作。 Google 会在每个回复中发送完整的成绩单,但每次演讲者标签演讲者 1 和演讲者 2)都会针对先前识别的文本进行更改。我已经实现了 Google 的示例 Python 脚本:

    # google speech client is configured and instantiated before this

    response = client.recognize(config=config,audio=audio)
        
        result = response.results[-1]
        
        words_info = result.alternatives[0].words
        
        for word_info in words_info:
            print(
                u"word: '{}',speaker_tag: {}".format(word_info.word,word_info.speaker_tag)
            )

这是第一个响应的示例输出

word: 'hey',speaker_tag: 1
word: 'Peter',speaker_tag: 1
word: 'hello',speaker_tag: 2
word: 'Mary',speaker_tag: 2

但下一个回复给出:

word: 'hey',speaker_tag: 1
word: 'Mary',speaker_tag: 1
word: 'how',speaker_tag: 2
word: 'are',speaker_tag: 2
word: 'you',speaker_tag: 2
word: 'doing',speaker_tag: 2

当新音频作为输入到达时,模型是否不断更新?如果是这样,在一个音频流中创建具有多个扬声器的转录服务的好方法是什么?

我不指望有灵丹妙药,但希望有人能指出我正确的方向。

解决方法

你应该添加这个 ::: enable_word_time_offsets=True

    encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,sample_rate_hertz=44100,language_code="en-US",enable_speaker_diarization=True,enable_word_time_offsets=True,diarization_speaker_count=2,)

for word_info in words_info:
    print(
        u"word: '{}',speaker_tag: '{}',start_time: '{}','end_time: '{}'".format(word_info.word,word_info.speaker_tag,word_info.start_time,word_info.end_time)
    )

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...