微软语音识别器。如何识别问题?

时间:2014-03-01 21:14:34

标签: speech-recognition

我正在使用Microsoft.Speech识别引擎,我需要一种方法来了解用户输入是否是一个问题。有没有办法分析语音语调?

我读过“POS标记”和“旋律轮廓识别”。 “POS标记”似乎是一个非常困难的搜索区域,我甚至不知道是否有办法让没有第三方的声音“上升”和“下降”。

3 个答案:

答案 0 :(得分:0)

Microsoft.Speech.Recognizer引擎仅支持基于语法的识别,并且不支持听写,因此您可tag使用data进行各种制作,以表明它是否是一个问题。

System.Speech.Recognizer引擎支持听写,但不通过API传递任何语音语调数据。

答案 1 :(得分:0)

我不相信Microsoft语音识别支持此功能,但您很幸运,因为您可以使用英语语法为您完成大量工作。

首先,寻找以什么,何地,何时,为何等等开始的短语

您可以使用的第二个有效的方法是对句子中每个单词的词性进行分类。英语倾向于几乎完全将动词置于主题面前而只是问题!因此,如果一个句子以动词开头,那几乎总是一个问题。

实施例

You are a good programmer. - statement

相反
Are you a good programmer? - question

因此,只需使用字典API来获取每个单词的词性,并查看您的短语是否以动词开头。您可以通过查找语音中的暂停或通过解析各个命令本身来描述短语。

或者,你可以做我在程序中所做的事情并使用一个关键短语,例如“查找:”,它触发了对Wolfram Alpha的搜索。因此,该声明将“查看帝国大厦的高度,它会。”我不确定您的用例,但如果您想将该短语传递给Wolfram Alpha或其他一些自然语言搜索引擎,那么这似乎是一种有效的解决方案。

我希望其中一些有帮助。

答案 2 :(得分:0)

Microsoft语音识别器支持SRGS语法。您可以创建可以识别问题的生成语法模板。为此,我建议您在ABNF编辑器中编写它,而不是将其转换为SRGS。由于您只需要识别,如果句子构成问题,您可以对用户填充的插槽使用$ GARBAGE规则。

我写了一个非常基本的ABNF语法,可能会给你更具体的想法,你可以用编辑器将这段代码转换成SRGS。

#ABNF 1.0 UTF-8;

language en-US;
mode voice;
tag-format <semantics/1.0>;

root $IsQuestion;

public $IsQuestion = $WHWords [$GARBAGE] $AuxVerbs [$GARBAGE] {out="yes"};


public $AuxVerbs= (am|is|are|was|were);

public $WHWords=(what|which|where);