knowledge/docs/freeswitch/Docker部署阿里云的MRCP服务.md

125 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Docker部署阿里云的MRCP服务版权
> wandoubaba / 2023-02-21
在阿里云的的智能语音服务中除了提供常规的ASR、TTS等能力外也有完整的MRCP服务阿里名称SDM不但可以对接私有化的智能语音能力同时还可以对接公有云的ASR和TTS。
引用阿里云《SDM(MRCP-SERVER)公共镜像使用》文档中的一段话:
> SDM(MRCP-SERVER)目前在公共云上有对应的镜像仓库,用户可以直接拉取公共云镜像到本地,然后部署使用,一定程度上简化了部署和接入的成本。
### 环境依赖
机器需求4C8G
操作系统CentOS7.2及以上其他支持Docker环境的较新版本的Linux发行版
软件环境要求Docker环境
### 安装过程
安装部署主要包括两个过程到阿里云开通公共云语音服务、部署SDM镜像。
#### 开通阿里云智能语音服务
> 下面这些操作都是在阿里云的控制台里完成的。
- 注册阿里云账号,这里省略具体步骤。
- 登录阿里云控制台到“智能语音交互服务”页面开通ASR、TTS相关服务
- 阿里云的语音服务都支持试用版免费使用,只不过并发路数有限,开发测试可以用。
- 到阿里云的“Access Key管理页面”创建并获取一组供SDM使用的具有调用智能语音服务能力的“Access Key ID”和“Access Key Secret”注意妥善保存
- 到阿里云“智能语音交互”控制台->“全部项目”,如果没有项目创建一个项目,项目类型选择“语音识别+语音合成+语音分析“主要是要拿到项目的“AppKey”。
- 注意“AppKey”对应项目的“项目功能配置”中要选择8K模型。
经过以上操作在云端的基础能力就已经配置好了一共得到了3个变量“Access Key ID”、“Access Key Secret”、“AppKey”后面部署SDM时会用到这几个变量。
#### 部署SDM镜像
> 下面的操作是在要部署SDM的服务器上进行的如果是以root登录的话就自行忽略`sudo`假设Linux系统上已经安装好了docker服务。
开始操作之前最好事先在主机上为SDM规划一个目录用于保存配置文件和日志等运行时文件本文假设这个目录是`/data/sdm`,下面的操作都默认在`/data/sdm`目录下进行。
##### 初始化配置
```sh
# 进入主机准备的sdm文件目录
cd /data/sdm
# 拉取镜像
sudo docker pull registry.cn-shanghai.aliyuncs.com/nls-cloud/sdm:latest
# 确认本地已拉取的镜像
sudo docker images | grep sdm
# 初始化本地环境
sudo docker run -d --privileged --net=host --name nls-cloud-sdm -v `pwd`/logs:/home/admin/logs -v `pwd`/data:/home/admin/disk registry.cn-shanghai.aliyuncs.com/nls-cloud/sdm:latest standalone
```
到这里只是用到初始化环境将容器中的SDM目录映射到宿主机上由于相关配置参数还没有修改所以容器最终不会运行起来如果真运行起来了也请用`docker stop`命令将它停了吧),下面需要进行相关配置操作。
##### 配置
首次启动后,容器内的配置文件在宿主机`/data/sdm/data/nls-cloud-sdm/conf`目录下一般来说只需要修改其中的3个配置文件nlstoken.json、service-asr.json、service-tts.json。
- nlstoken.json配置AccessKeyId和AccessKeySecret
```json
{
"AccessKeyId": "前面得到的AccessKeyId",
"AccessKeySecret": "前面得到的AccessKeySecret",
"DefaultToken": ""
}
```
说明对接公有云时DefaultToken的值要是空白。
- service-asr.json主要配置url和AppKey
```json
{
"url": "wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1",
"appkey": "前面得到的项目AppKey",
}
```
- service-tts.json主要配置url和AppKey
```json
{
"url": "wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1",
"appkey": "前面得到的项目AppKey",
}
```
其他asr和tts的配置一般不用修改如果有特殊需求的话就按需配置好了。
##### 启动
```sh
sudo docker start nls-cloud-sdm
# 查看是否启动成功
sudo docker ps
# 查看服务进程是否已拉起
ps -ef | grep alimrcp-server
# 查看端口是否监听
sudo lsof -i:7010
# 查看日志中有没有ERROR信息
cat logs/nls-cloud-sdm/alimrcp-server.log | grep ERROR
# 设置容器自启动
sudo docker update --restart=always nls-cloud-sdm
```
##### 端口
默认情况下SDM使用以下端口与客户端如FreeSWITCH通信与服务端阿里云不需要开放端口只需要能连接阿里云公有云服务即可。
- 7010TCP&UDPSIP端口。
- 1544、1554TCPMRCP协议端口。
- 10000-20000UDPRTP协议端口用来传输语音流。
##### 并发
SDM单机资源默认支持100路ASR+100路TTS这个并发指的是SDM与客户端如FreeSWITCH的资源处理能力与公有云的ASR、TTS并发能力无关。