Skip to content1.
运行配置说明
EasyMrcp 的运行配置主要分成四类:
application.yaml:服务端口、SIP、FreeSWITCH 注册、RTP 端口池、TCP 控制端口、默认 ASR/TTS 模式asr/*.properties:各 ASR 厂商的鉴权、识别模式、采样率和重采样配置tts/*.properties:各 TTS 厂商的鉴权、发音人、重采样和首尾静音裁剪配置- FreeSWITCH 脚本或业务系统:负责把通话 UUID 通过
X-EasyMRCP与 EasyMrcp TCP 会话绑定
1. application.yaml
application.yaml 控制 EasyMrcp 本身的服务行为。下面是常用配置项:
yaml
server:
port: 8081
sip:
sipServer: 172.16.2.155
sipPort: 5060
mrcp:
asrMode: aliyun-funasr
ttsMode: xfyun
rtp:
nettyThreads: 8
asr:
reorderWindowPackets: 2
maxConsecutiveLossFill: 3
asrStartPort: 20000
asrStopPort: 22000
ttsStartPort: 23000
ttsStopPort: 25000
tcp:
server:
port: 90901.1 服务端口
| 配置项 | 说明 |
|---|---|
server.port | Spring Boot HTTP 服务端口。 |
tcp.server.port | EasyMrcp 自定义 TCP 控制协议端口,客户端发送 ClientConnect、Speak、DetectSpeech 等事件时连接这个端口。 |
通常业务对接主要使用 tcp.server.port,默认示例里是 9090。
1.2 SIP 配置
| 配置项 | 说明 |
|---|---|
sip.sipServer | EasyMrcp 本机 SIP 监听地址,填写运行 EasyMrcp 的服务器 IP。 |
sip.sipPort | EasyMrcp 本机 SIP 监听端口,默认 5060。 |
sip.sipServer 不应写成 FreeSWITCH 地址,而应写 EasyMrcp 自己绑定的地址。FreeSWITCH 或 IP PBX 后续会把 SIP INVITE 发到这个地址。
1.3 默认 ASR/TTS 模式
| 配置项 | 说明 |
|---|---|
mrcp.asrMode | 默认 ASR 厂商或处理器名称。 |
mrcp.ttsMode | 默认 TTS 厂商或处理器名称。 |
当前源码中可见的 ASR 模式包括:
| 值 | 说明 |
|---|---|
aliyun-funasr | 阿里云 DashScope FunASR。 |
xfyun | 科大讯飞 ASR。 |
funasr | 本地或自建 FunASR。 |
tencent-cloud | 腾讯云 ASR。 |
example-asr | 示例 ASR 实现。 |
当前源码中可见的 TTS 模式包括:
| 值 | 说明 |
|---|---|
aliyun | 阿里云 CosyVoice TTS。 |
xfyun | 科大讯飞 TTS。 |
kokoro | Kokoro TTS。 |
tencent-cloud | 腾讯云 TTS。 |
example-tts | 示例 TTS 实现。 |
如果 ClientConnect 中传入 TtsEngine,当前通话可以覆盖默认 mrcp.ttsMode。
2. FreeSWITCH 注册配置
如果希望 EasyMrcp 主动向 FreeSWITCH 注册成一个 SIP 用户,可以启用:
yaml
fs:
register:
enabled: true
server: 172.16.2.205
port: 5060
username: 1020
password: 1020
domain: 172.16.2.205
interval: 1800| 配置项 | 说明 |
|---|---|
fs.register.enabled | 是否启用注册。 |
fs.register.server | FreeSWITCH 服务器 IP。 |
fs.register.port | FreeSWITCH SIP 端口,通常是 5060。 |
fs.register.username | EasyMrcp 注册到 FreeSWITCH 的号码或账号。 |
fs.register.password | 注册密码。 |
fs.register.domain | 注册域,通常与 FreeSWITCH 地址一致。 |
fs.register.interval | 注册有效期,单位秒。 |
注册成功后,源码会按有效期的一半自动刷新注册。注册失败时会按固定间隔重试,避免 FreeSWITCH 重启后一直失联。
3. RTP 端口池
yaml
rtp:
asrStartPort: 20000
asrStopPort: 22000
ttsStartPort: 23000
ttsStopPort: 25000EasyMrcp 会为每通通话分配本地 RTP 端口。部署时要保证这些 UDP 端口没有被系统防火墙或云安全组拦截。
| 配置项 | 说明 |
|---|---|
rtp.asrStartPort / rtp.asrStopPort | ASR RTP 端口范围。 |
rtp.ttsStartPort / rtp.ttsStopPort | TTS RTP 端口范围。 |
在普通通话模式下,SIP/SDP 协商会使用这些端口承载音频。在 spy 监听模式下,服务端也会从 ASR RTP 端口池分配一个 rtpPort 返回给客户端。
4. 入站 RTP 重排配置
yaml
rtp:
asr:
reorderWindowPackets: 2
maxConsecutiveLossFill: 3这两个参数用于处理 RTP 包乱序和轻微丢包:
| 配置项 | 说明 |
|---|---|
rtp.asr.reorderWindowPackets | 等待后续多少个包后,再判定缺失包丢失。 |
rtp.asr.maxConsecutiveLossFill | 连续补静音包的最大数量,超过后直接追到下一个真实 RTP 包。 |
一般不需要改。网络抖动明显时可以适当增大 reorderWindowPackets,但会增加等待时间。
5. ASR/TTS 厂商配置文件
厂商配置位于:
text
asr/*.properties
tts/*.properties源码里的配置模板在:
text
src/main/resources/asr/
src/main/resources/tts/部署时建议在运行目录放一份外部配置文件,例如:
text
application.yaml
asr/aliyun-funasr.properties
tts/aliyun-tts.properties这样可以避免把密钥、服务地址、发音人等运行环境信息写死在源码里。
6. 常见配置检查项
如果服务启动后无法正常通话,可以优先检查:
sip.sipServer是否填写 EasyMrcp 本机 IP,而不是 FreeSWITCH IP。fs.register.*是否能在 FreeSWITCH 侧看到注册成功。tcp.server.port是否能被业务脚本或客户端访问。- RTP 端口池是否已放通 UDP。
mrcp.asrMode和mrcp.ttsMode是否与对应 properties 文件匹配。- ASR 模式是否正确配置了
identify-patterns。 - 如果厂商要求 16k 音频,是否配置了
re-sample=upsample8kTo16k。
