【问题标题】:how to detect who is speaking如何检测谁在说话
【发布时间】:2013-03-19 20:46:47
【问题描述】:

我正在为我们的工作场所开发一个项目,以操纵我们的环境,如灯光、咖啡机、打印机等,但我不知道如何检测谁在与我们的系统说话。

我正在使用 Speech.Recognition 库使用 C# 构建项目。

到目前为止,我已经设法捕获命令并执行简单的事情,但我想更进一步并检测到这个人,所以如果一个人例如“John”正在说话,那么当他说“Hi system”时,系统记录说话的人并回复“嗨,约翰!”然后它只识别“约翰”的语音命令并忽略不同的声音。

【问题讨论】:

  • 如果我这样做,我可能会建立一个“用户名”库,这样人们就会说出他们的名字,并将其与用户列表进行比较,然后只关注该用户的讲话模式
  • 不要忘记添加某种超时,以便其他人可以在“john”完成时使用它。
  • @wjhguitarman 您的解决方案的问题是,任何人都可以说“约翰”,如果我开始实施更严肃的工作场所解决方案,我想确切地知道是谁在说话。
  • 正如@sircapsalot 回答的那样,理想情况下,它会将他们的音高、速度等与 John 的匹配标识符相匹配,因此其他人说 John 不会触发匹配,他可以通过使用诸如“结束会话”之类的关键短语或其他一些不常用的标识符,以触发不必要的退出。
  • @wjhguitarman 所以我必须分析进来的音频样本,还是它内置在某个地方?

标签: c# speech-recognition voice-recognition sapi


【解决方案1】:

你想做的事情叫做Voice Biometrics,这是一个难题,由像 Nuance (http://www.nuance.com/for-business/by-solution/customer-service-solutions/solutions-services/inbound-solutions/voice-authentication-biometrics/index.htm) 这样的公司解决。不过,我确信有开源/研究解决方案。

一个好的项目(Java)例如: http://sourceforge.net/projects/marf/

【讨论】:

    【解决方案2】:

    您要求进行语音识别或语音验证,这是语音分析的众多用途之一。请注意,语音识别远非完美

    您首先需要训练数据和算法,从中为您的演讲者推导出统计模型。稍后,在识别/验证阶段,您将尝试根据您的统计模型拟合输入数据并确定阈值,该阈值决定说话者是否已知。 Mel 频率倒谱系数、高斯混合模型和隐马尔可夫模型

    一个有趣的工具可能是 Praat。它不能直接作为库使用,但 ICSI 的人们编写了一个名为 praatlib 的包装器。它提取语音特征,例如共振峰频率、音高等。 ICSI 使用它来区分录音中的说话者(这称为 diarization)。

    有相当多的免费工具可用,但都需要深入了解统计、语音分析和大量时间才能理解通常记录不足的学术代码。您应该看看一些有趣的项目是 Sphinx (Java) 和 SHoUT (C++)。 Sphinx 有很好的文档,如果你发现自己对理论细节有疑问,可以阅读 SHoUT 的论文。

    【讨论】:

      【解决方案3】:

      您需要让每个用户都独一无二。

      您可以通过拥有一个用户池并使用您的识别库来做到这一点...将他们独特的语音属性(音高、电平等)存储到所述池中,然后让您的软件识别这些属性并相应地执行。

      【讨论】:

      • 我现在正在检查这个,你知道有什么来源尝试过这样的事情吗?
      猜你喜欢
      • 2021-08-27
      • 2015-01-27
      • 2018-12-13
      • 1970-01-01
      • 2018-05-27
      • 2017-08-02
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多