## FreeSWITCH对接MRCP服务(以阿里云SDM为例)
> wandoubaba / 2023-02-21
在阿里云的的智能语音服务中,除了提供常规的ASR、TTS等能力外,也有完整的MRCP服务(阿里名称:SDM),不但可以对接私有化的智能语音能力,同时还可以对接公有云的ASR和TTS。
### 网络规划
- MRCP服务器
|配置项|配置值|
|---|---|
|IP| 192.168.0.10|
|SIP端口|7010(TCP&UDP)|
|MRCP端口|1544、1554(TCP)|
|RTP端口|10000-20000(UDP)|
- FreeSWITCH服务器
|配置项|配置值|
|---|---|
|IP|192.168.0.60|
|SIP端口|5060(TCP&UDP)|
|RTP端口(与MRCP通信)|40000-50000(UDP)|
### 部署SDM
目前阿里云并没有开放SDM服务,通过阿里云智能语音服务的客户经理可以得以《SDM(MRCP-SERVER)公共镜像使用》文档,按照文档部署,比较容易。
摘抄阿里云《SDM(MRCP-SERVER)公共镜像使用》文档中的一段话:
> SDM(MRCP-SERVER)目前在公共云上有对应的镜像仓库,用户可以直接拉取公共云镜像到本地,然后部署使用,一定程度上简化了部署和接入的成本。
### 安装mod_unimrcp模块
详见《为FreeSWITCH安装mod_unimrcp模块》。
### 配置mod_unimrcp
在FreeSWITCH的安装目录修改`conf/autoload_configs/modules.conf.xml`文件:
```xml
```
在FreeSWITCH的安装目录下创建`conf/mrcp_profiles/aliyun-mrcpserver.xml`文件:
```xml
```
创建或修改`conf/autoload_configs/unimrcp.conf.xml`文件:
```xml
```
在`grammar`目录下创建`alimrcp.gram`文件:
```js
#JSGF V1.0;
/** JSGF Grammar for example */
grammar example;
public = [];
```
修改unimrcp配置后需要重启FreeSWITCH服务。
### 通过dialplan测试
在FreeSWITCH安装目录里创建`conf/dialplan/default/mrcp.xml`文件:
```xml
```
在fs_cli中执行`reloadxml`,然后盯着控制台,用分机呼叫001,接通后说一句话,应该会在控制台看到识别结果,类似:
```xml
中午吃什么?
730
2220
511ba061b8a54d7b93e0f5675534febd
5d27104393eb4dbe-1.wav
中午吃什么?
```
恭喜,到这里,你的FreeSWITCH已经可以“听”和“说”了。