指南

泰语通话转写里的说话人发言段

两个声音挤在一栏里的通话转写很难解读:说话人分离如何给说话人编号,处理流程如何把编号变成角色,以及编号从不声称什么。

· 阅读约 1 分钟

一通录音电话里有两个声音,却只有一条音轨。把它转写成一栏文字,读起来就像独白,而 QA 审核员的每个问题都从“这句话是谁说的”开始。必要的告知是坐席说的,还是客户复述的?谁先提到了退款?说话人分离回答第一个问题,建立在它之上的处理流程回答其余的问题。

下面依次讲到:开启说话人分离后 Paxa STT Lite 返回什么,如何把说话人编号对应到通话中的角色,以及编号在哪里止步。最后给出一套逐通执行、无需抽样的 QA 检查的大致结构。

返回的内容#

发送录音时把 diarization 设为 true。响应照常包含转写文本,旁边另有一个 segments 数组。每个 segment 是一个发言段,带有说话人编号、文本,以及以秒为单位的起止时间。说话人按首次出现的顺序从 0 开始编号,编号在整段录音中保持不变。

curl
AUDIO=$(base64 < meeting.m4a | tr -d '\n')
curl -X POST https://api.paxalabs.com/v1/stt \
  --max-time 300 \
  -H "Authorization: Bearer $PAXA_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"audio\": \"$AUDIO\", \"model\": \"paxa-stt-lite-v1-preview\", \"diarization\": true}"
Response
{
  "text": "สวัสดีค่ะคุณสมชายยอดชำระของท่านจำนวน พันสองร้อยห้าสิบ บาทครบกำหนดวันที่ สิบห้า สิงหาคมนี้ชำระผ่านแอปได้ตลอด ยี่สิบสี่ ชั่วโมงค่ะ",
  "segments": [
    {
      "speaker": 0,
      "text": "สวัสดีค่ะคุณสมชายยอดชำระของท่านจำนวน พันสองร้อยห้าสิบ บาทครบกำหนดวันที่ สิบห้า สิงหาคมนี้ชำระผ่านแอปได้ตลอด ยี่สิบสี่ ชั่วโมงค่ะ",
      "start": 0.12,
      "end": 11.66
    }
  ],
  "usage": {
    "seconds": 11.952,
    "credits": 1.66
  }
}

在同一个请求里要求词级时间戳,每个词也会带上说话人编号。发言段呈现对话的整体结构,词则告诉您某个短语是在发言段内的哪一秒说出的。

一通双方通话的四个发言段
speaker 0   0.0s   สวัสดีค่ะ ฝ่ายบริการลูกค้า ยินดีให้บริการค่ะ
speaker 1   3.2s   สวัสดีครับ โทรมาเรื่องบิลเดือนนี้ครับ
speaker 0   6.1s   ขอทราบเลขที่บัญชีสี่ตัวท้ายด้วยค่ะ
speaker 1   8.9s   สี่ห้าหกเจ็ดครับ

从编号到角色#

模型只给声音编号,不附加姓名、角色或身份。在双方通话中,编号与角色的对应由您来定,三条规则就能覆盖大多数呼叫中心。

  • 第一个声音是坐席。呼入电话以坐席按话术说出的问候语开场。只要第一个发言段与问候语吻合,说话人 0 就是坐席。
  • 问候语标明角色。第一个发言段对不上时,在前三个发言段里查找话术中的短语,把说出它的说话人当作坐席。
  • 双声道录音可以确定角色。把坐席和客户分声道录制的电话系统,可以把每个声道作为单独的文件发送。这样文件就代表角色,每个文件内的说话人分离还能发现转接或主管加入。

出现第三个声音的通话,比如主管介入或转接,会以说话人 2 的身份出现。预期只有两位说话人的规则,应把第三位视为需要复核的信号,因为对话的结构已经变了。

覆盖每通电话的 QA 检查#

角色确定后,话术检查就是在坐席的发言段上做一组字符串匹配。问候语、身份核验、等待提示和结束语,各自成为坐席发言段里必须出现的短语,并记下说出的那一秒。漏掉其中任何一项的通话,就是审核员要去听的那一通。

关键词提醒作用于客户的发言段。表示退款、取消和投诉的词,以及竞争对手的名字,能在通话结束后几分钟内把这通电话标记出来。词汇表最多可放 50 个产品名和套餐名,让它们在成千上万通电话里保持同一种拼写,字符串匹配需要的正是这一点。

通话占比是发言段顺带给出的第三个指标。把每位说话人各发言段的秒数加起来即可。坐席在一通投诉电话里说了八成的时间,就该安排一次辅导谈话,而这个数字直接来自 segments 数组,完全不用去听。

编号在哪里止步#

开启说话人分离的录音会被完整读取后才返回响应,通话越长,耗时越久。长录音的响应要预留几十秒,并且并行发送多通电话。您的套餐允许的并发数,就是可同时处理的通话数。

时长的上限也来自这一次完整读取。开启说话人分离的请求只接受短于 9 分钟的通话,远低于普通转写可接受的 60 分钟。更长的录音会在扣费之前返回 400 diarization_audio_too_long。请在静音处切分,把各部分并行发送。每一部分的说话人编号都会重新开始,按同样的规则逐段对应角色。说话人分离不改变费用:录音按时长计费,发言段随结果一并返回。

下一步#

继续阅读

更多指南