6、STOP method可以支持对IN-PROGRESS 状态(活动的状态)或PENDING(队列中的)请求执行停止。如果在STOP请求中忽略了Active-Request-Id-List 头的话,说明活动状态的请求已经停止,在队列中的识别请求已经被移除。如果STOP请求成功结束了一个或多个活动的识别请求或队列中的识别请求,返回到客户端的响应消息是200 Success,并且包含一个Active-Request-Id-List 头,这个头值中包含了停止的请求ID列表。注意,这里服务器端也不会发送RECOGNITION-COMPLETE 事件。如果没有结束的识别请求,同样,客户端也会收到200 Success,但是会忽略掉Active-Request-Id-List 头。有时,我们可以在STOP method的Active-Request-Id-List 头中指定一个请求ID来停止这个识别请求,这个识别请求可能是在当前IN-PROGRESS状态或PENDING队列中的识别请求。如果当前活动的识别请求被停止后,则可以处理下一个在PENDING队列中请求。以下是一个STOP 示例图:

b80803c23751660374702046ef52c6a2.png

以下是相应的消息流程:

65706043dd89cdd25886f5c1d3eadad5.png

7、INTERPRET method 的使用方式和RECOGNIZE 的method 非常相似,不同之处在于,RECOGNIZE是支持语音输入的,但是这里的输入是完全基于文本格式的形式,通过Interpret-Text 头来设定这个文本格式。其返回的解析结果包含在INTERPRETATION-COMPLETE的事件消息体中。这里,读者一定要注意,不像RECONGIZE method,它的请求不能支持队列设置。如果有一个INTERPRET在处理状态时,再次发起另外一个INTERPRET会导致返回一个402 Method not valid in this state。所以,读者一定要注意此method的使用方式。以下是一个INTERPRET的图例:

6bce9894a1d15e3fefa1e93694059f10.png

INTERPRET的消息处理流程如下:

e198c0f21156ddef3188aab61bb1753b.png

89236d8261aab149160d4891a148d9d2.png

8、在本部分的介绍中,笔者将介绍关于Voice enrolment 的几个method方式。

这里,我们首先介绍一下START-PHRASE-ENROLLMENT。

START-PHRASE-ENROLLMENT 的目的是支持MRCP客户端启动一个注册会话(这里,翻译成enrolment session,也可能有其他作者的翻译名称)。注册会话的功能在于对每个独立的说话人添加一个特别的短语,形成一个个人的语法。在注册会话的生命周期内,MRCP客户端会调用RECOGNIZE 请求,并且携带了Enroll-Utterance,这里,此头值设置为true。每一次对RECOGINE调用都会捕捉单个的短语例句,并且执行注册流程,最后以NLSML的文件格式通过RECOGNITION-COMPLETE进行传输。一般情况下,识别资源需要重复多次来训练短语。MRCP 客户端通过调用END-PHRASE-ENROLLMENT来结束此注册会话。如果要配置一个注册会话,在START-PHRASE-ENROLLMENT的请求中需要设定多个头域。这些头域包括Personal-Grammar-URI(独立说话人的个人语法设置),Phrase-ID(短语唯一的ID)和Phrase-NL(短语支持的自然语言或语义结果)。以下图例说明了START-PHRASE-ENROLLMENT的流程:

3fb14d37b45cd257c9d116798db47eb5.png

以下是相应的消息流程:

ab1ae59c31929389419e92776988661c.png 

53ec650e8fb995928f1a5988f29337fe.png

f826406b397b61d68b831774ea2d2585.png

第二个介绍的请求是ENROLLMENT-ROLLBACK。MRCP客户端发起一个ENROLLMENT-ROLLBACK 请求回滚到上一个请求。此功能可以对句中不适合部分进行处理排除。这里要求丢弃上一次RECOGNIZE请求中捕获的语音。以下是一个ENROLLMENT-ROLLBACK图例:

5d37fbf00b3627bf365124cc59f7a448.png

具体的消息流程如下:

F1(client→speechrecog):

MRCP/2.0 83 ENROLLMENT-ROLLBACK 70000

Channel-Identifier:23af1e13@speechrecog

F2(speechrecog→client):

MRCP/2.0 76 70000 200 COMPLETE

Channel-Identifier:23af1e13@speechrecog

这里,我们继续讨论第三个请求方式。END-PHRASE-ENROLLMENT是由MRCP客户端发起,用来结束注册会话的一个method,可以对接受的注册短语进行确认或丢弃短语。这个method通常是识别资源返回的RECOGNITION-COMPLETE事件中包含NLSML,并且携带了重复数量设置,然后MRCP客户端发起END-PHRASE-ENROLLMENT来结束注册会话。如果要中断短语注册的话,在END-PHRASE-ENROLLMENT的请求中设置Abort-Phrase-Enrollment置为true。如果在START-PHRASE-ENROLLMENT请求中出现了Save-Best-Waveform 头,并且此头设置为true,那么在返回的END-PHRASE-ENROLLMENT事件中会包含一个Waveform-URI来表示一个经过训练的短语录音存放路径。这些文件可以支持MRCP客户端选择类型,用户可以根据相应的个人的语法读出短语。因为END-PHRASE-ENROLLMENT 的消息流程也比较简单,我们这里不再做过多解释,用户可以参考说明的例子来学习。

修改短语是第四个请求方式。MODIFY-PHRASE用来支持对个人语法中已注册的短语中的某些参数属性进行修改。可修改的属性包括:Phrase-ID,Phrase-NL,和Weight。可修改的短语通过其Phrase-ID来确认它的唯一性,通过头域值设置修改Phrase-NL或Weight。如果是ID被修改的话,客户端会生成一个新的New-Phrase-ID头来表示这是新的短语ID。以下图例表示了MODIFY-PHRASE 流程:

190080edb45108881a2ae5cb5cbbe180.png

具体的MODIFY-PHRASE消息流程如下:

F1(client→speechrecog):

MRCP/2.0 133 MODIFY-PHRASE 90000

Channel-Identifier:23af1e13@speechrecog

Phrase-ID:Name01

New-Phrase-ID:Name03

Weight:0.5

F2(speechrecog→client):

MRCP/2.0 76 90000 200 COMPLETE

Channel-Identifier:23af1e13@speechrecog

删除短语是第五个请求方式。DELETE-PHRASE method是客户端用来从个人语法中删除一个短语ID,通过Phrase-ID来表示,个人语法的设定通过Personal-Grammar-URI来表示。以下是一个删除短语的图例:

c2015d48d5c2acaf7fd6888edfe26386.png

其具体的删除短语的消息流程如下:

F1(client→speechrecog):

MRCP/2.0 162 DELETE-PHRASE100000

Channel-Identifier:23af1e13@speechrecog

Personal-Grammar-URI:http://enrolledgrammars/user01gram02.dat

Phrase-ID:Name01

F2(speechrecog→client):

MRCP/2.0 77 100000 200 COMPLETE

Channel-Identifier:23af1e13@speechrecog

回顾本章节的内容,我们首先介绍了语音识别资源的请求处理方式,事件和headers,并且列出了它们的使用方式和属性设置。然后,笔者重点介绍了语音识别资源的六大methods和语法注册时使用的五个methods。因为篇幅的关系,笔者把语法注册的methods 归纳在一个话题中,以便方便读者能够结合这些相关的method充分了解注册语法的这些请求处理方式。笔者相信,通过本章节关于语音识别资源的请求处理的概念介绍结合图例和消息流程,读者会进一步了解语音识别的消息流程处理。

在下一个章节中,我们重点介绍语音识别资源中的事件和相关的headers参数设置。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐