0

我目前正在将 Vosk 语音识别实施到应用程序中。具体来看说话人识别,我已经从示例中实现了 test_speaker.py 并且它是功能性的。作为新手,我如何识别和/或创建参考说话人签名?使用提供的那个,用我的音频示例计算的距离列表并没有描述所涉及的两个扬声器:

[1.0182311997728735, 0.8679279016022726, 0.8552687907177629, 1.0258941854519696, 0.8666933753723253, 0.9291881495586336, 1.0316585805917928, 1.0227699471036409, 0.8442800102809634, 0.9093189414477789, 0.9153723223264221, 0.9705387223260904, 0.9077720598812595, 0.9524431272217568, 0.9179475137290445]

如果没有一种有效的方法可以从正在分析的音频中计算参考扬声器,您是否知道可以与 Vosk 一起使用来识别音频文件中的扬声器的另一种解决方案?如果没有,您会建议其他什么语音转文本选项?(我已经玩过谷歌的)

提前致谢

4

1 回答 1

0

我最近也一直在使用 Vosk,创建新参考扬声器的方法是从识别器中提取 X-Vector 输出。

这是来自 python 示例的代码,我将每个话语的 X-Vector 放入一个名为“vectorList”的列表中。

    if recognizer.AcceptWaveform(data):
        res = json.loads(recognizer.Result())
        # print("Text:", res['text'])
        # Checks that X-Vector ('spk') is in the data file, res
        if 'spk' in res:
            # Append X-Vector to baseline list
            vectorList.append(res['spk'])

然后在我的程序中,我使用向量列表中的这些向量作为参考说话者,与 cosine_dist 函数中的其他 x 向量进行比较。cosine_dist 函数返回一个“说话者距离”,告诉您两个 x 向量的不同之处。

总之,我正在开发的程序执行以下操作:

  • 通过识别器运行一些“基线”音频文件以获取 x 向量
  • 将 x 向量存储在列表中
  • 通过识别器运行一些测试音频文件以获取要测试的 x 向量
  • 使用 cosine_dist 函数针对每个“基线”x 向量运行每个测试 x 向量
  • 平均从 cosine_dist 返回的扬声器距离以获得平均扬声器距离

我应该提到,我不是 Vosk 的专家,而且完全有可能有更好的方法来解决这个问题。这正是我发现的方法,基于 python 目录中的示例问题。

于 2021-10-22T15:30:19.300 回答