【问题标题】:Acoustic training using SAPI 5.3 Speech API使用 SAPI 5.3 Speech API 进行声学训练
【发布时间】:2008-11-18 19:12:20
【问题描述】:

在 Vista 上使用 Microsoft 的 SAPI 5.3 Speech API,您如何以编程方式对 RecoProfile 进行声学模型训练?更具体地说,如果您有一个文本文件和一个用户说出该文本的音频文件,您将使用该文本和音频进行什么 SAPI 调用序列来训练用户的个人资料?

更新:

关于这个问题的更多信息我还没有解决: 您在“开始”调用 ISpRecognizer2.SetTrainingState( TRUE, TRUE ),在“结束”调用 ISpRecognizer2.SetTrainingState( FALSE, TRUE )。但目前还不清楚这些动作相对于其他动作何时必须发生。

例如,您必须进行各种调用以使用与您的音频匹配的文本来设置语法,并进行其他调用以连接音频,以及对各种对象进行其他调用以说“你现在可以开始了。”但是什么是相互依存关系——在发生什么之前必须发生什么?如果您使用音频文件而不是系统麦克风进行输入,这是否会使相对时间变得不那么宽容,因为识别器不会一直坐在那里听直到说话者正确?

【问题讨论】:

  • 一旦您开始弄脏代码,Linked 是所有与 SAPI 培训相关的知识的良好来源:请参阅链接的问题。培训必须用 C++ 编写。 C# 接口没有完成此任务所需的一切:stackoverflow.com/questions/9760262/…

标签: speech-recognition sapi speech


【解决方案1】:

实施 SAPI 培训相对困难,文档并没有真正告诉您需要了解什么。

ISpRecognizer2::SetTrainingState 将识别器切换到训练模式或退出训练模式。

当您进入训练模式时,真正发生的只是识别器为用户提供了更多的识别余地。因此,如果您尝试识别一个短语,那么引擎对识别的严格程度就会大大降低。

在您离开训练模式并且您设置了 fAdaptFromTrainingData 标志之前,引擎不会真正进行任何适应。

当引擎适应时,它会扫描存储在配置文件数据下的训练音频。将新的音频文件放在引擎可以找到的地方进行调整是训练代码的责任。

这些文件也必须被标记,以便引擎知道所说的内容。

那么你是怎么做到的呢?您需要使用三个鲜为人知的 SAPI API。特别是,您需要使用ISpRecognizer::GetObjectTokenSpObjectToken::GetStorageFileName 获取配置文件令牌才能正确定位文件。

最后,您还需要使用ISpTranscript 来生成正确标记的音频文件。

要将它们放在一起,您需要执行以下操作(伪代码):

创建一个 inproc 识别器并绑定适当的音频输入。

确保您保留音频以供识别;以后会用到的。

创建一个包含要训练的文本的语法。

设置语法的状态以在识别发生时暂停识别器。 (这也有助于从音频文件进行训练。)

当识别发生时:

获取识别的文本和保留的音频。

使用 CoCreateInstance(CLSID_SpStream) 创建一个流对象。

使用 ISpRecognizer::GetObjectTokenISpObjectToken::GetStorageFileName 创建训练音频文件,并将其绑定到流(使用 ISpStream::BindToFile)。

将保留的音频复制到流对象中。

QIISpTranscript 接口的流对象,并使用ISpTranscript::AppendTranscript 将识别的文本添加到流中。

为下一个话语更新语法,恢复识别器,然后重复直到训练文本结束。

【讨论】:

  • 很遗憾,没有;当我发布受版权保护的代码时,微软不喜欢它。 :)
  • @EricBrown 我正在执行您在 C#/VB 世界中的步骤,但我找不到 ispTranscript 或者您如何从 isptream 中获取它是 msdn.microsoft.com/en-us/library/ee125250(v=vs.85).aspx 您谈论的流对象吗?这个成绩单界面在哪里有什么想法吗?
  • @darbid - 这些接口只能通过本机 (C++) 接口使用,并且似乎不会导出到自动化。
  • 只是想巩固一下这个帖子的相关知识:stackoverflow.com/questions/24609898/…
猜你喜欢
  • 2014-04-09
  • 1970-01-01
  • 2018-04-12
  • 2020-01-12
  • 2016-01-03
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 2018-03-03
相关资源
最近更新 更多