Speech Synthesizer 语音合成服务
状态机
方法
客户端用于控制服务端提供语音合成服务的方法。
synthesizer-method = "SPEAK"
/ "STOP"
/ "PAUSE"
/ "RESUME"
/ "BARGE-IN-OCCURRED"
/ "CONTROL"
/ "DEFINE-LEXICON"
- SPEAK
客户端发送SPEAK请求向服务端语音合成服务提供需要进行语音合成的文本,启动服务端语音合成和流媒体。一个SPEAK请求,通常包含SPEAK**请求行,设置语音、语速的请求头,格式化描述的需要完成语音合成的文本的请求体**。
语音服务状态:当SPEAK请求到达服务端时的状态。
switch (语音服务状态)
{
case idle:
服务端立即处理SPEAK请求,立即向客户端响应包含成功的状态码和IN-PROGRESS的请求状态。
break;
case 处理之前的SPEAK请求:
服务端向客户端响应成功状态吗和PENDING请求状态,并将SPEAK请求放入队列。队列严格按照FIFO处理,如果其中一个请求执行失败,则其后所有的请求都将被取消。服务端会生成一个SPEAK-COMPLETE事件,事件描述为cancelled。
break;
}
语音处理完成,服务端发起一个包含该SPEAK请求id的SPEAK-COMPLETE事件,请求状态为COMPLETE。
例如:
C->S: MRCP/2.0 ... SPEAK 543257
Channel-Identifier:32AECB23433802@speechsynth
Voice-gender:neutral
Voice-Age:25
Prosody-volume:medium
Content-Type:application/ssml+xml
Content-Length:...
<?xml version="1.0"?>
<speak version="1.0"
xmlns="http://www.w3.org/2001/10/synthesis"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/10/synthesis
http://www.w3.org/TR/speech-synthesis/synthesis.xsd"
xml:lang="en-US">
<p>
<s>You have 4 new messages.</s>
<s>The first is from Stephanie Williams and arrived at
<break/>
<say-as interpret-as="vxml:time">0342p</say-as>.
</s>
<s>The subject is
<prosody rate="-20%">ski trip</prosody>
</s>
</p>
</speak>
S->C: MRC