TTS对接
TTS的对接分为两种方式,因为阿里的TTS只能通过sdk的方式来调用,没有公网URL的方式调用。如果有URL的方式交换机是可以直接调用的。
1、URL调用方式,这种方式不需要通过MRCP中间件中转,直接交换机调用URL的方式,这种实现方式需要调用阿里的TTS SDK 做一个HTTP 代理,由于阿里提供的SDK 是生成语音文件的方式,在文件写入的时候直接写到HTTP流中即可;这样通过HTTP传文本就能够获取合成的TTS语音流,在交换机中做一定的缓存,就能减少调用;
2、通过mrcp的方式,这种方式还是先生成语音文件,然后将语音文件转化为RTP流,然后通过MRCP消息控制,实现TTS的播放,为什么要先生成语音文件,主要还是因为JMF的文件获取方式还是文件流,实时流无法实现;
ASR对接
阿里提供的ASR接口主要有两种方式,一种是一句话识别,一种是实时语音流识别,
第一种方式需要根据语音文件来识别,这种需要把每次MRCP交互的语音流保存成文件,然后调用识别接口,这个在MRCP中间件中有一个问题,就是一次交互你可能无法判断是不是语音流结束,所以这种方式不适合MRCP对接;
第二种实时语音流识别,是根据发送的实时流,不停的返回结果,比较符合MRCP的交互模式,所以采用了第二种,两种方式的云端计费方式也不一样,第一种是按次计费,第二种是按时间计费,总体感觉两种成本是差不多的。
通过实时流对接我们需要将接收到RTP流转化车PCM流发送给阿里ASR服务端,然后将收到的结果转化为MRCP消息返回给交换机,目前做到的就是直文翻译,对于IVR应用,有时候还需要支持语音识别语法,如SRGS,这个目前还是没有实现的。