溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

AI智能電話機器人源碼搭建揭秘!

發(fā)布時間:2020-08-11 06:35:56 來源:ITPUB博客 閱讀:552 作者:aicce776 欄目:互聯(lián)網(wǎng)科技

隨著人工智能的普及,AI已經(jīng)滲透到各行各業(yè),本文就為大家介紹了利用最前沿的AI技術(shù)實現(xiàn)電話機器人的原理。智能電話機器人就是充分的利用了人工智能語音識別技術(shù)和大數(shù)據(jù)的精準分析定位,完全是對傳統(tǒng)模式是一次顛覆性的變化,是智能化的還是時代化的“人工+智能語音”的一種方式,智能電話機器人是企業(yè)的福音!幫企業(yè)降低成本,提高工作效率,提升公司業(yè)績!

電話機器人比人工坐席厲害的是,電話號碼直接在后臺一鍵導(dǎo)入,省時又省力,自動撥打。智能輪流對話,根據(jù)系統(tǒng)設(shè)定可以對客戶進行篩選統(tǒng)計,依據(jù)客戶的回答智能分類意向程度,把意向最高的甲類客戶交給人工進行著重跟進,這樣就能使整個電銷過程的工作效率大大提高。

作為“人工智能”的產(chǎn)物,正在逐漸的給電銷行業(yè)帶來大改變大革命,把繁瑣、枯燥、耗時的工作交給智能電話機器人完成,后臺分類管理,加以精英銷售跟進,不僅大大提高工作效率,而且能更好的把人力資源進行再分配再分組,減少企業(yè)運營成本!應(yīng)該是每位老板都在想的問題。

對于電銷公司來講如何精準地識別真實客戶一直是很難攻克的難點所在。對于智能電話機器人來說,可以通過真人語音式專家級的溝通,模擬電銷人員和客戶進行多輪互動的有效溝通,通過用戶畫像和大數(shù)據(jù)模型精準找到用戶,實現(xiàn)精準營銷,并快速完成ABCD類意向客戶的篩選和分類。

智能電話機器人是將網(wǎng)絡(luò)電話、語音知識、自然語音理解、多輪對話、知識圖譜等多個門類的前沿技術(shù)集成在一個智能產(chǎn)品中,已經(jīng)成為行業(yè)的領(lǐng)頭羊,為外呼行業(yè)帶來了可喜的變化,短短幾個月被很多企業(yè)證明,這是真正實現(xiàn)開源節(jié)流的AI好項目了。

智能電話機器人作為當(dāng)今的一款智能化產(chǎn)品,在實際應(yīng)用中能準確的以人類的聲音、思維和語氣智能應(yīng)對客戶提出的各種問題。同時,它的篩選能力也極強,可以把應(yīng)答用戶按意向程度自動分類,幫助人工坐席快速剝離意向客戶。

員工坐席每天撥打200個-300個電話已經(jīng)算是極限了,但是智能電話機器人每天可以撥打800-1200通有效電話,讓效率提高幾倍,提高效率就意味著業(yè)績的提高。

什么是電話機器人

通過ASR(語音識別)和TTS(文本轉(zhuǎn)語音)模擬真人和用戶的通話,可用于企業(yè)總機,自動催繳,外呼營銷,問卷調(diào)查等業(yè)務(wù),同時支持百度,科大,阿里云等ASR系統(tǒng),可以真人預(yù)先錄音,用戶是完全察覺不到是機器人。

如何開發(fā)一個電話機器人

FreeSWITCH/Asterisk是一個軟交換系統(tǒng),可以利用開源的軟交換系統(tǒng),開發(fā)一個VAD錄音模塊,用戶說話后開始錄音,停止說話后,把錄音提交到語音識別接口轉(zhuǎn)換成文本,利用語義解析接口(NPL)或者簡單的關(guān)鍵字匹配,返回系統(tǒng)預(yù)先設(shè)計的話術(shù),通過TTS轉(zhuǎn)換成聲音(也可以真人預(yù)先錄音)播放給用戶聽。實現(xiàn)人機語音對話。

技術(shù)難點

·機器人說話時,用戶開始說話,機器人要及時處理,就是所謂的打斷,這個通過VAD算法和關(guān)鍵詞打斷可以解決。

·機器人怎么理解用戶說話含義,這個是目前難點,目前主要的做法,還是通過關(guān)鍵詞匹配來設(shè)計話術(shù)。

支持那些ASR接口

可以支持科大訊飛,百度語音識別,阿里云語音識別,騰訊語音識別,捷通華聲靈云等SDK/API/MRCP接口。

怎么使用

可以和現(xiàn)有的呼叫中心,IPPBX,F(xiàn)reeSWITCH,Asterisk 等系統(tǒng)通過SIP分機和SIP中繼方式對接。

smart ivr 接口說明

smartivr 是一個基于Freeswitch的電話機器人二次開發(fā)接口(restful),支持和Asterisk對接

使用指南

用戶自己實現(xiàn) httpAPI,機器人程序去調(diào)用這個接口,不是 機器人提供httpapi給用戶調(diào)用。

1.

外呼程序呼叫電話接通后,或者客戶主動呼入接通后 機器人程序 向 webserver post 發(fā)送

2.

smartivr –> web

3.

"calleeid": "8888abc", //被叫號碼

"callerid": "abc", //主叫號碼

"callid": "1fe74812-e376-4319-b335-3de1b494325c", //每個通話的唯一ID

"errorcode": 0, //錯誤代碼

"flowdata": null, //流程數(shù)據(jù)

"flowid": "abc", //流程ID

"notify": "enter" //通知類型

4.

webserver根據(jù)業(yè)務(wù)邏輯 返回 json數(shù)據(jù) 比如 下面的命令就是 啟動后臺ASR,并且播放一個聲音

5.

smartivr <– web

6.

"action": "start_asr", //第一個動作 start_asr是一個異步函數(shù),只需要執(zhí)行一次,啟動后會一直進行VAD和ASR,直到調(diào)用sotp_asr

"flowdata": "流程選擇", //流程數(shù)據(jù),類似瀏覽器的Cookie,機器人后續(xù)httpapi請求會把這個數(shù)據(jù)發(fā)送回來。

"params": {

"min_speak_ms": 100, //最小說話時間,默認值100,單位毫秒,說話時間小于這個值,會被認為是無效聲音。

"max_speak_ms": 10000, //最大說話時間,默認值10000,單位毫秒,說話時間超過這個值,就停止錄音,直接提交ASR服務(wù)器識別。

"min_pause_ms": 300, //最小停頓時間,默認值300,單位毫秒,默認值用戶停頓時間超過這個值,會提交到ASR識別。識別完成后發(fā)送asrprogress事件。 完成后的意思是 ASR服務(wù)器可能 300-800ms才返回識別接口。

"max_pause_ms": 600, //最大停頓時間,默認值600,單位毫秒,用戶停頓時間超過這個值,認為一句話說完,所有識別完成后發(fā)送asrmessage事件。所有識別完成后的意思是,所有提交到asr服務(wù)器的識別結(jié)果都返回了。 注意 min_pause_ms 必須大于min_pause_ms。

"pause_play_ms": 200, //觸發(fā)暫停放音時間,默認值0:就是禁用自動暫停,單位毫秒,建議設(shè)置200-1000,用戶說話時間超過這個值,就暫停放音。 有時候用戶一直持續(xù)說話,中間沒停頓,所以還沒提交到ASR服務(wù)器識別,不能使用關(guān)鍵詞打斷,可以先暫停放音。

"threshold": 0, //VAD閾值,默認0,建議不要設(shè)置,如果一定要設(shè)置,建議 2000以下的值。

"recordpath": "", //錄音文件路徑,如果不設(shè)置:就會使用配置文件中的路徑,每天生成一個文件夾,如果設(shè)置了,就會使用這個參數(shù)中的目錄,文件格式是 recordpath/被叫號碼_Unique-ID_序號.wav

"volume": 50 //音量標準化的值。0-100,0不使用音量標準化,其他值 音量把錄音音量調(diào)整到這個值后,再提交ASR識別。

},

"after_action": "playback",

"after_ignore_error": false, //如果action動作(start_asr)執(zhí)行失敗是否繼續(xù)執(zhí)行after_action(playback)。

"after_params": {

"prompt": "您好,歡迎致電,這里是電話機器人演示系統(tǒng),請說要進入的測試流程,比如,房產(chǎn)!", //可以直接播放聲音文件。規(guī)則就是如果最后4個字是.wav,就直接播放wav文件。

"wait": 5000, //單位毫秒,放音結(jié)束后等待時間。用于等待用戶說話。

"retry": 0 //重播次數(shù)。就是wait時間內(nèi)用戶不說話,就重新播放聲音。

機器人程序執(zhí)行 “action”:”start_asr” 開始后臺ASR識別,然后執(zhí)行”after_action”: “playback”開始播放聲音文件。

7.

·當(dāng)用戶說話后,機器人發(fā)送 識別進度,也就是用戶暫停說話時間超過 min_pause_ms

smartivr –> web

"asrelapse": 391, //asr識別服務(wù)器消耗的時間,單位毫秒。

"asrtextall": "1.識別結(jié)果;", //包含之前停頓的識別結(jié)果的組合。 格式是 錄音序號.識別結(jié)果;這樣組合多個識別結(jié)果。

"asrtype": "aiui", //本次使用那個asr識別

"calleeid": "8888abc",

"callerid": "abc",

"callid": "1aec14af-d6a8-49e4-96fc-fb5f7cfdb893",

"errorcode": 0, //asr返回錯誤,0無錯誤。

"flowdata": "流程選擇",

"flowid": "abc",

"message": "識別結(jié)果",

"notify": "asrprogress_notify",

"recordindex": "1", //錄音序號

"recordfile": "", //錄音文件

"recordms": 931, //錄音時間,單位毫秒。

"volumegain": 5.95330699999 //音量標準化放大或者縮小的倍數(shù)。

webserver根據(jù)業(yè)務(wù)邏輯返回是否需要暫停放音

smartivr <– web

"action": "console_playback",

"flowdata": "流程選擇",

"params": {

"command": "pause"

當(dāng)用戶說完一整句話,機器人發(fā)送 完整的識別結(jié)果,也就是用戶暫停說話時間超過 max_pause_ms

smartivr –> web

"calleeid": "8888abc",

"callerid": "abc",

"callid": "ea6d1235-aaab-4251-b03b-3b53ca32e00d",

"errorcode": 0,

"flowdata": "流程選擇",

"flowid": "abc",

"message": "1.你好;2.什么事;",

"notify": "asrmessage_notify",

"speakms": "1162" //整句話的說話時間,包含暫停時間

webserver根據(jù)業(yè)務(wù)流程,執(zhí)行話說邏輯,播放聲音。

smartivr <– web

"action": "playback",

"flowdata": "回答",

"params": {

"prompt": "先生你好,請問你最近需要買房嗎",

"wait": 3000,

"retry": 2

·當(dāng)用戶一直不說話,聲音播放完成并且等待時間超過,機器人發(fā)送 playback_result

smartivr –> web

"calleeid": "8888abc",

"callerid": "abc",

"callid": "35bca774-5b3e-4129-a5e7-1c3c86605071",

"errorcode": 0,

"flowdata": "",

"flowid": "abc",

"message": "FILE PLAYED",

"notify": "playback_result"

webserver根據(jù)業(yè)務(wù)流程發(fā)送 繼續(xù)放音,提示用戶回答問題。

smartivr <– web

"action": "playback",

"flowdata": "提示選擇流程",

"params": {

"prompt": "請問你要進入哪個測試流程,比如,房產(chǎn)",

"wait": 3000,

"retry": 2

playback_result 什么時候有這個通知

執(zhí)行 playback后,播放完成并且等待超時,就會發(fā)送playback_result 通知。

·如果識別到用戶說話,在 asrmessage_notify 事件中返回命令playback,播放了一個新的聲音,那么上個playback會給強制終止(上次的playback_result就不會發(fā)送了。),新的播放完成時,才會發(fā)送playback_result。

·如果識別到用戶說話,在 asrmessage_notify 事件中返回命令noop,或者console_playback(resume),沒去播放新的聲音,那么還會發(fā)送playback_result 通知的。

·。

接口說明

注意:請求和返回都采用JSON格式,編碼為utf8,所有參數(shù)區(qū)分大小寫,數(shù)字和字符串類型注意區(qū)分,參數(shù)未說明數(shù)字類型就是字符串類型。

自動放音暫停(打斷)

start_asr 有一個參數(shù) pause_play_ms,demo是200, 就是檢測到聲音持續(xù)時間時間超過pause_play_ms,就自動暫停放音。如果你不需要這個功能設(shè)置為0, 如果你啟用了這個功能,asrmessage_notify通知你沒播放一個新的聲音就必須要恢復(fù)放音console_playback(resume)。否則會一直暫停。

怎么實現(xiàn)關(guān)鍵詞打斷

·asrprogress_notify 的識別結(jié)果如果是關(guān)鍵詞 返回 console_playback(pause),如果不是關(guān)鍵詞 返回 console_playback(resume)

·asrmessage_notify 的整句話識別結(jié)果如果匹配,直接播放新的聲音文件,執(zhí)行新的業(yè)務(wù)流程,如果不匹配,返回console_playback(resume)。

playback_result 收到這個通知,說明聲音播放完成,等待用戶說話超時,必須播放一個聲音,提示用戶說話

action 描述

start_asr

start_asr 是一個異步函數(shù),只需要執(zhí)行一次,啟動后會一直進行VAD和ASR,直到調(diào)用sotp_asr

·min_speak_ms 最小說話時間,默認值100,單位毫秒,說話時間小于這個值,會被認為是無效聲音。

·max_speak_ms 最大說話時間,默認值10000,單位毫秒,說話時間超過這個值,就停止錄音,直接提交ASR服務(wù)器識別。

·min_pause_ms 最小停頓時間,默認值300,單位毫秒,默認值用戶停頓時間超過這個值,會提交到ASR識別。識別完成后發(fā)送asrprogress事件。 完成后的意思是 ASR服務(wù)器可能 300-800ms才返回識別接口。

·max_pause_ms 最大停頓時間,默認值600,單位毫秒,用戶停頓時間超過這個值,認為一句話說完,所有識別完成后發(fā)送asrmessage事件。所有識別完成后的意思是,所有提交到asr服務(wù)器的識別結(jié)果都返回了。 注意 min_pause_ms 必須大于min_pause_ms。

·pause_play_ms 觸發(fā)暫停放音時間,默認值0,就是禁用自動暫停,單位毫秒,建議設(shè)置200-1000,用戶說話時間超過這個值,就暫停放音。 有時候用戶一直持續(xù)說話,中間沒停頓,所以還沒提交到ASR服務(wù)器識別,不能使用關(guān)鍵詞打斷,可以先暫停放音。

·threshold VAD閾值,默認0,建議不要設(shè)置,如果一定要設(shè)置,建議 2000以下的值。

·recordpath 錄音文件路徑,如果不設(shè)置(使用配置文件設(shè)置錄音目錄(smartivr.json),),如果設(shè)置了會保存錄音文件到這個目錄,文件格式是 recordpath/被叫號碼Unique-ID序號.wav

·volume 音量標準化的值。0-100,0不使用音量標準化,其他值 音量把錄音音量調(diào)整到這個值后,再提交ASR識別。

start_asr使用的配置文件

linux /etc/smartivr.json,windows freeswitchconsole.exe同一個目錄

"asr": {

"aiui": {

"key1": {

"appid": "5a519267",

"appkey": "e212fc8e4c9747a39fa1c56940e705be"

},

"key2": {

"appid": "5a519267",

"appkey": "e212fc8e4c9747a39fa1c56940e705be"

·}

* aiui 是科大訊飛webapi接口的KEY,可以配置多個。

* record.path 是錄音路徑。

playback

播放一個聲音文件

·prompt 聲音內(nèi)容wav文件(只支持8000hz,16位,單聲道)或者文本。prompt 提示文本(如果最后4個字是.wav,就是錄音文件放音,否則會調(diào)用TTS生成聲音文件)。同樣的文字TTS只轉(zhuǎn)換一次,后續(xù)會使用緩存的文件

·wait 單位毫秒,放音結(jié)束后等待時間。用于等待用戶說話。

·retry 重播次數(shù)。就是wait時間內(nèi)用戶不說話,就重新播放聲音。

多文件或者TTS和錄音文件混合放音

prompt 使用數(shù)值方式就可以,比如

"/var/wav/1.wav",

"tts文字轉(zhuǎn)聲音",

"/var/var/2.wav"

sotp_asr

停止后臺ASR。

console_playback

用于播放控制,用戶說話開始,先暫停播放,如果說的是無效聲音,可以恢復(fù)播放。

·command

·pause 暫停播放

·resume 恢復(fù)播放

·stop 停止播放

bridge 轉(zhuǎn)接電話

{"action":"bridge","flowdata":"","params":{"number":"sofia\/external\/a8008@sip.ddrj.com:16080","callerid":"","gateway":"","prompt":"\u6b63\u5728\u8f6c\u63a5\u4e2d\uff0c\u8bf7\u7b49\u5f85","background":"wating.wav"}}

* number 被叫號碼,如果gateway沒設(shè)置,必須是完整呼叫串類似:sofia/external/電話號碼@網(wǎng)關(guān)Ip

* callerid 可選參數(shù) 主叫號碼(對方看到的來電顯示)

* gateway 可選參數(shù) 網(wǎng)關(guān)名字

* background 可選參數(shù) 背景音樂

* prompt 可選參數(shù) 提示文本prompt 提示文本(如果最后4個字是.wav,就是錄音文件放音,否則會調(diào)用TTS生成聲音文件)。

hangup 掛機

{"action":"hangup","params":{"usermsg":"not found notify"}}

* cause [數(shù)字] 可選參數(shù) 掛斷原因根據(jù)sip信令設(shè)置 詳細看https://freeswitch.org/confluence/display/FREESWITCH/Hangup+Cause+Code+Table

* usermsg 可選參數(shù) 里面可以放置調(diào)試信息,smartivr會打印到日志文件。

noop 不需要執(zhí)行任何動作時可以返回這個,比如(leave,asr_progress 通知可以返回noop)

{"action":"noop","params":{"usermsg":""}}

* usermsg 可選參數(shù) 里面可以放置調(diào)試信息,smartivr會打印到日志文件。

deflect 執(zhí)行后會直接離開流程,收到 leave 通知

{"action":"deflect","flowdata":"","params":{"number":"1001"}}

* number 要轉(zhuǎn)移的目的地(由呼叫方處理) 即: SIP REFER 的 URI。

getdtmf 接收用戶按鍵

{"action":"getdtmf","flowdata":"","params":{"prompt":"","invalid_prompt":"","min":0,"max":128,"tries":1,"timeout":5000,"digit_timeout":3000,"terminators":"#"}}

* min [數(shù)字] 最少按鍵個數(shù)(minimum value of 0)

* max [數(shù)字] 最多按鍵個數(shù)(maximum value of 128)

* tries [數(shù)字] 提示音播放次數(shù)

* timeout [數(shù)字] 等待按鍵最大時間,聲音播放結(jié)束開始算起。

* terminators 結(jié)束輸入按鍵,默認是#。

* prompt 提示音

* invalid_prompt 輸入錯誤提示音

* regexp 輸入按鍵規(guī)則(正則表達式)

* digit_timeout [數(shù)字] 按鍵超時時間,如果超時沒有新按鍵,就認為輸入完成。

說這些讓行業(yè)內(nèi)人研究學(xué)習(xí),智能機器人是未來的趨勢,對電銷行業(yè)實用價值更強的人工智能電話機器人。比如完全模擬真人語音,嗓音甜美,對這代表著企業(yè)的品牌;比如話術(shù)專業(yè)、自動記錄、自動分類意向客戶等等,這些則直接決定著整個企業(yè)的成交率;比如工作效率更高、數(shù)據(jù)更準確等性能上更優(yōu)質(zhì)的人工智能電話機器人,這些也直接影響著企業(yè)的電銷轉(zhuǎn)化率。

第二,選擇性價比更高的人工智能電話機器人,除了性能,企業(yè)仍需考慮成本,如果人工智能電話機器人的同等價值還不如人工電銷人員,哪個企業(yè)又會選擇的。同樣的,企業(yè)在選擇人工智能電話機器人的時候,需要做一個簡單的衡量,哪些品牌的人工智能電話機器人的功能已經(jīng)足夠你使用,而哪些看起來很優(yōu)質(zhì)但卻有很多不那么實際的功能、且費用更高的人工智能電話機器人值不值得你購買。


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI