Vosk扬声器识别



我目前正在应用程序中实现Vosk语音识别。具体来看说话人识别,我已经从示例中实现了testrongpeaker.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可以用来识别音频文件中扬声器的另一种解决方案吗?如果没有,你还建议其他语音转文本选项?(我已经玩过谷歌的(

提前感谢

我最近也在使用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向量
  • 将每个测试x矢量与每个";基线";带有余弦函数的x向量
  • 对cosine_dist返回的扬声器距离求平均值,得到扬声器的平均距离

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

最新更新