MRCPv2 語音整合協定
MRCPv2(Media Resource Control Protocol Version 2)是專門為語音應用設計的協定,讓客戶端能去控制遠端的語音辨識(ASR)和語音合成(TTS)資源。說白了,它就是客服中心 IVR 跟 AI 語音引擎之間那個標準的對接介面。
MRCPv2 協定架構
協定概述
MRCPv2 由 IETF 在 RFC 6787 中標準化,它定義了一個客戶端-伺服器架構,其中:
- MRCPv2 Client:通常是 IVR 伺服器或媒體伺服器
- MRCPv2 Server:提供 ASR/TTS 資源的語音引擎
協定組成
MRCPv2 並非單一協定,而是整合了三個協定共同運作:
| 協定 | 角色 | 說明 |
|---|---|---|
| SIP | 會話管理 | 建立和管理 MRCPv2 會話(RFC 3261) |
| MRCPv2 | 資源控制 | 控制 ASR/TTS 引擎的命令與事件 |
| RTP/RTCP | 媒體傳輸 | 傳送語音串流至 ASR 或從 TTS 接收語音 |
協定堆疊
+----------------------------------+
| MRCPv2 命令/事件 | 控制通道(TCP)
+----------------------------------+
| SIP | 信令(UDP/TCP)
+----------------------------------+
| RTP/RTCP | 媒體(UDP)
+----------------------------------+
| IP / UDP / TCP |
+----------------------------------+跟舊版 MRCPv1 差在哪:MRCPv1(非正式標準)用 RTSP 當控制協定,MRCPv2 改成 SIP 加一條獨立的 TCP 控制通道,功能更多,跟既有的 SIP 基礎設施也搭得更順。現在業界主流都用 MRCPv2。
ASR/TTS 資源管理
ASR 資源(語音辨識)
ASR(Automatic Speech Recognition)資源負責將語音串流轉換為文字。
MRCPv2 ASR 關鍵命令:
| 命令 | 說明 |
|---|---|
| RECOGNIZE | 開始辨識,指定文法(Grammar) |
| STOP | 停止辨識 |
| GET-RESULT | 取得辨識結果 |
| DEFINE-GRAMMAR | 載入辨識文法 |
| START-INPUT-TIMERS | 啟動輸入計時器 |
ASR 關鍵事件:
| 事件 | 說明 |
|---|---|
| START-OF-INPUT | 偵測到用戶開始說話 |
| RECOGNITION-COMPLETE | 辨識完成,附帶結果 |
| INTERPRETATION-COMPLETE | 語意解析完成 |
ASR 重要參數:
| 參數 | 說明 | 建議值 |
|---|---|---|
| confidence-threshold | 辨識信心度門檻 | 0.5-0.8 |
| sensitivity-level | 語音偵測靈敏度 | 0.5 |
| speed-vs-accuracy | 速度與準確度權衡 | 依場景 |
| no-input-timeout | 無輸入逾時 | 5000-10000 ms |
| speech-complete-timeout | 說話結束判定逾時 | 1000-2000 ms |
| speech-incomplete-timeout | 不完整語句逾時 | 3000-5000 ms |
TTS 資源(語音合成)
TTS(Text-to-Speech)資源負責將文字轉換為語音串流。
MRCPv2 TTS 關鍵命令:
| 命令 | 說明 |
|---|---|
| SPEAK | 合成並播放語音(支援 SSML) |
| STOP | 停止播放 |
| PAUSE | 暫停播放 |
| RESUME | 恢復播放 |
| BARGE-IN-OCCURRED | 通知 TTS 用戶打斷了播放 |
| CONTROL | 調整語速、音量等 |
TTS 關鍵參數:
| 參數 | 說明 |
|---|---|
| voice-name | 指定合成語音 |
| speech-language | 語言(如 zh-TW) |
| prosody-rate | 語速 |
| prosody-volume | 音量 |
| prosody-pitch | 音調 |
SSML 支援
MRCPv2 的 TTS 支援 SSML(Speech Synthesis Markup Language)標記語言:
<speak version="1.0" xml:lang="zh-TW">
歡迎致電客服中心。
<break time="500ms"/>
請問您需要什麼服務?
<prosody rate="slow">
按1查詢帳戶,按2辦理業務。
</prosody>
</speak>與 IVR 的整合方式
典型 IVR + MRCPv2 架構
來電者 語音引擎
| |
|── PSTN/SIP ──> IVR Server |
| | |
| |── SIP INVITE ──────────> | (建立 MRCPv2 會話)
| |<─ 200 OK ───────────────|
| | |
|<── RTP(TTS 播放)─|<─ SPEAK(歡迎語)────────| (TTS 合成)
| | |
|── RTP(用戶語音)─>|── RECOGNIZE + RTP ──────>| (ASR 辨識)
| |<─ RECOGNITION-COMPLETE ──| (回傳結果)
| | |
| | [IVR 根據結果路由通話] |整合流程詳解
步驟一:會話建立
IVR 向 MRCPv2 Server 發送 SIP INVITE,建立控制通道和媒體通道。SDP 中描述 MRCPv2 控制通道和 RTP 媒體通道的參數。
步驟二:TTS 播放提示語
IVR 透過 MRCPv2 控制通道發送 SPEAK 命令,TTS 引擎產生語音串流並透過 RTP 傳送給來電者。
步驟三:ASR 辨識用戶語音
IVR 發送 RECOGNIZE 命令並將來電者的 RTP 串流導向 ASR 引擎。ASR 引擎在辨識完成後發送 RECOGNITION-COMPLETE 事件。
步驟四:處理結果
IVR 根據辨識結果進行業務邏輯處理(如路由通話、查詢資料、進入下一層選單)。
Barge-in 機制
Barge-in 允許來電者在 TTS 播放提示語時打斷並直接說出回應:
| 類型 | 說明 |
|---|---|
| Speech Barge-in | 偵測到用戶說話時停止 TTS |
| DTMF Barge-in | 偵測到按鍵時停止 TTS |
別小看 Barge-in。老客戶早就摸熟選單了,根本不想聽完整段提示語,能打斷直接講,體驗好很多、也省時間。不過靈敏度要調好,不然背景噪音一大就誤觸發。
典型呼叫流程
完整的 IVR 語音導航流程
以下描述一個完整的語音自助服務流程:
1. 來電進入 IVR(SIP INVITE 到 IVR Server)
2. IVR 建立 MRCPv2 會話(SIP INVITE 到 MRCP Server)
3. IVR 發送 SPEAK(歡迎語:"歡迎致電XX銀行客服中心")
4. TTS 播放歡迎語(RTP 串流)
5. IVR 發送 SPEAK + RECOGNIZE 同時啟動("請問您需要什麼服務?")
6. TTS 播放提示語,同時準備 ASR 辨識
7. 用戶說:"我要查帳戶餘額"(Barge-in 或等 TTS 結束)
8. ASR 回傳 RECOGNITION-COMPLETE:
- 結果:"查帳戶餘額"
- 信心度:0.92
- 語意:intent=balance_inquiry
9. IVR 根據辨識結果:
- 信心度 >= 門檻 → 進入餘額查詢流程
- 信心度 < 門檻 → 發送 SPEAK 再次確認
10. IVR 查詢後端系統取得餘額
11. IVR 發送 SPEAK:
"您的帳戶餘額為 <say-as interpret-as="currency">50000</say-as> 元"
12. 流程結束或進入下一個對話回合辨識失敗的處理策略
| 情境 | 處理方式 |
|---|---|
| 無輸入(no-input) | 重播提示語,最多 3 次後轉人工 |
| 無法辨識(no-match) | 請用戶重新說明,提供按鍵替代方案 |
| 低信心度 | 複述辨識結果請用戶確認 |
| 連續失敗 | 直接轉接人工客服 |
與 HTTP API 整合方式的比較
HTTP API 語音辨識
現代雲端 ASR/TTS 服務通常提供 HTTP REST API 或 WebSocket API 介面。
HTTP API 的運作方式:
| 方式 | 說明 |
|---|---|
| 批次辨識 | 上傳完整音檔,等待辨識結果 |
| 串流辨識(WebSocket) | 即時傳送音訊串流,即時回傳結果 |
| 串流辨識(gRPC) | 雙向串流,效率最高 |
MRCPv2 vs HTTP API 對照表
| 特性 | MRCPv2 | HTTP API |
|---|---|---|
| 協定標準 | IETF RFC 6787 | 各廠商自定 |
| 媒體傳輸 | RTP(直接串流) | HTTP/WebSocket/gRPC |
| 延遲 | 低(直接 RTP) | 中(HTTP overhead) |
| 與電話系統整合 | 原生整合(SIP + RTP) | 需要媒體轉換層 |
| Barge-in 支援 | 原生支援 | 需自行實作 |
| 高可用架構 | SIP 層面的容錯 | 雲端服務 HA |
| 廠商鎖定 | 低(標準協定) | 高(API 各異) |
| 部署模式 | 地端或雲端 | 主要為雲端 |
| 成本模式 | 授權費 + 硬體 | 按使用量計費 |
| 語言模型更新 | 需部署更新 | 雲端自動更新 |
| 隱私合規 | 語音不離開企業網路 | 語音上傳至雲端 |
金融業要特別權衡合規這一塊。處理敏感資訊的金融客服,用 MRCPv2 搭地端部署的語音引擎,語音資料就不會離開企業網路,個資法和金融監管比較好過。反過來若走雲端 HTTP API,語音要上傳到雲端,這中間的合規風險得先評估清楚。
混合架構
現代客服中心可採用混合架構,根據場景選擇最適合的整合方式:
| 場景 | 建議方式 | 理由 |
|---|---|---|
| IVR 語音導航 | MRCPv2 | 低延遲、Barge-in 原生支援 |
| 通話後語音分析 | HTTP API(批次) | 非即時需求、彈性擴展 |
| 即時語音助理 | MRCPv2 或 WebSocket | 即時互動需求 |
| 語音生物辨識 | 依引擎支援 | 部分僅支援 HTTP API |
常見 MRCPv2 方案
| 產品 | 廠商 | ASR/TTS 引擎 | 特點 |
|---|---|---|---|
| 長問語音引擎 | 長問科技(Bronci) | 自有 ASR/TTS 引擎 | 台灣在地語音引擎,針對在地口音與中英混合語音場景最佳化 |
| Nuance Speech Server | Microsoft/Nuance | Nuance Recognizer + Vocalizer | 國際市場長期使用的商業方案,多語系支援完整 |
選型時除了辨識率,還要看幾件事:語言與口音的涵蓋範圍(尤其中文與台語)、是否支援地端部署以符合資料治理要求、以及授權計價方式(依並發數或依時數)。
效能與調校
ASR 效能指標
| 指標 | 說明 | 目標值 |
|---|---|---|
| WER(Word Error Rate) | 字詞錯誤率 | < 10% |
| 辨識延遲 | 從說話結束到回傳結果 | < 500 ms |
| 並發會話數 | 同時處理的辨識會話 | 依硬體規格 |
| CPU 使用率 | ASR 伺服器 CPU | < 70%(預留 headroom) |
TTS 效能指標
| 指標 | 說明 | 目標值 |
|---|---|---|
| 首位元組延遲 | 從收到 SPEAK 到開始播放 | < 200 ms |
| 合成速度 | 實時比(Real-time Factor) | > 5x(每秒合成 5 秒語音) |
| 自然度 MOS | 語音自然度評分 | > 4.0 |