1. 搭建智能語音交互系統重要點那些
序言
隨著人工智慧命題的提出,近年來涌現出一大批基於人工智慧的呼叫中心業務服務商和集成商,僅智能外呼這一模塊兒就將近百家公司在推廣和運營。可以說整個基於人工智慧技術的市場開始蓬勃的發展起來了。
簡單介紹一下什麼叫做智能語音交互平台。其實大實話就是在呼叫中心基礎上,集成 ASR、 TTS、的呼叫服務平台。
那麼如何我們自己去搭建智能語音系統呢?
我們先列出搭建智能外呼系統的搭建需要那些技術和服務:
個人認為:
[if !supportLists]· [endif] 首先最重要的是交換機:
[if !supportLists]1. [endif]PBX也就是交換機,商用設備原廠包括像華為、Avaya、思科、東匯等這些生產硬體交換機,
[if !supportLists]2. [endif]還有就是目前FreeSitch、asterrisk、OpenPBX這些軟體交換機。
[if !supportLists]· [endif] 其次是AI技術: 及包含語音識別、語義理解、語音合成這三種技術是核心組成部分。語音識別相當於人的「耳朵」,接進電話後,對人的話語進行處理轉義成系統能夠識別的數據交由系統處理去識別。在進一步的話,可以轉義為文字。語義理解相當於人的"大腦",根據話語識別人的意圖。語音合成,相當於人的」嘴巴「,識別人的意圖之後,依照特定的回答方式,去回復和引導對話。
[if !supportLists]· [endif] 再者是前端服務平台:即用戶登錄、配置呼叫流程,建立呼叫任務、統計呼叫數據、導出呼叫報表的網站,這個是終端用戶唯一可以看到並且操作的界面。
[if !supportLists]· [endif] 最後是外呼線路:其中包括三大運營商以及其他小型的集成線路供應商,主要目的是外呼電話或者是接入電話。
也有人可能有疑問:」智能語音交互系統最重要的不是人工智慧么,和交換機有啥關系?」為什麼說最重要的是交換機呢,原因是不管我們是外呼還是接入電話、都需要前端服務平台把外呼請求發送給交換機,通過外呼線路而撥出去。換句話說交換機是控制整體的外呼情況。硬體的交換機,比如說像華為的交換機,價格在大約幾萬到幾百萬不等的價格。對於想要建立自己的智能語音交互系統來說,價格對於一些小型公司來說承受不起,而FreeSitch這種軟交換則大大方便了小型公司建立自己的智能語音交互系統。
什麼是FreeSwitch?
FreeSitch是一個電話的軟交換解決方案,包括一個軟電話和軟交換機用以提供語音和聊天的產品驅動。FreeSitch 可以用作交換機引擎、PBX、多媒體網關以及多媒體伺服器等。支持多種通訊技術標准,包括 SIP, H.323, IAX2 以及 GoogleTalk ,同時也可以方便的與其他開源的PBX系統進行對接。而且具有很強的伸縮性。旨在為音頻、視頻、文字或任何其他形式的媒體,提供路由和互連 通信協議 。
FreeSwitch 的典型功能
[if !supportLists]· [endif]在線計費、預付費功能。
[if !supportLists]· [endif]電話路由伺服器。
[if !supportLists]· [endif]語音轉碼伺服器。
[if !supportLists]· [endif]支持資源優先權和QoS的伺服器。
[if !supportLists]· [endif]多點會議伺服器。
[if !supportLists]· [endif]IVR、語音通知伺服器。
[if !supportLists]· [endif]VoiceMail伺服器。
[if !supportLists]· [endif]PBX應用和軟交換。
[if !supportLists]· [endif]應用層網關。
[if !supportLists]· [endif]防火牆/NAT穿越應用。
[if !supportLists]· [endif]私有伺服器。
[if !supportLists]· [endif]SIP網間互聯網關。
[if !supportLists]· [endif]SBC及安全網關。
FreeSwitch最典型的功能是作為一個伺服器,並用電話客戶端軟體連接到它。雖然FreeSwitch支持眾多的通信協議,但其最主要的協議還是SIP,通過SIP中繼發起會話協議。
使用FreeSwitch這種軟交換的好處在於,你只需要一台伺服器就可以隨時搭建自己的外呼中心,而且FreeSwitch支持跨平台運行。能夠原生運行Windows、linux、BSD等諸多32/64位平台。
FreeSwitch內部使用線程模型來處理並發請求,每個連接都在單獨的線程中進行處理,不同的線程間通過Mutex互斥訪問共享資源,並通過消息和非同步事件等方式進行通信。FreeSwitch本身是比較穩定的,它是比較優秀的開源軟體。另一方面來講,FreeSwitch又是比較激進的,它的開發分支里會有大量的新特性加入,因此在測試不全面的情況下,很容易出現不穩定的情況。而在用於生產環境的情況下,系統的穩定性是系統能否正常被使用的關鍵。之前我們在做項目的過程中,就遇到一些FreeSwitch不穩定的情況,導致外呼情況不理想。舉一個例子:我們在進行測試外呼的時候,語音通話斷斷續續,雖然前端服務平台可以很好的接受到數據的傳輸,但是,真正在與人工進行溝通的時候,會出現各種各樣的溝通障礙,為了解決這一個問題,我們花費了幾個月的時間,去研究FreeSwitch的結構特性。終於把這個問題解決掉。我們的項目才得以繼續推動,最終得以真正落地部署實施。
也有人可能有疑問:」FreeSwitch軟交換雖然重要,但是既然是智能語音交互系統人工智慧不重要嗎?」,重要,當然重要!容我慢慢道來~
AI 技術
1. 通信原理
先簡單解釋一下正常打電話這個流程
流程:A→PSTN→B
解釋:PSTN是Public
Switched Telephone Network,意思為公共交換電話網路,也就是我們的運營商的網路電話,
那我們平時如何給呼叫中心比如打電話是如何打的?:個人A打電話給呼叫中心1***6 打電話,撥通後聽到錄音,您好,撥打人工台,請按0鍵,按鍵之後,出現盲音,真正接通之後,客服接通了電話。
流程:A→PSTN→PBX→IVR→客服
解釋:PBX也叫交換機、相當於整個呼叫中心的出入口
IVR也叫互動/互動式語音應答,語音導航,也就是相當於咨詢業務請按鍵,這一環節,根據業務去分流到客服。
智能語音交互平台(智能機器人)落實到具體具體業務場景是如何實現的:
如:」個人A要在某一個大型酒店預訂位子「,
A撥通後先聽到了聲音,「您好,我是機器人小岳,需要我幫您訂位子是嗎?
個人A說,「我不要和機器人說話,找個真人來」。
然後聽到錄音,「為您轉接很貴的真人客服,排隊中,請稍後」。
幾分鍾後接通,真人客服接了電話。
流程:A→PSTN→PBX→IVR(TTS→ASR→NLP→TTS)→ACD→客服
解釋:在IVR部分:不再需要提示按鍵,而是直接問來電方需要辦理什麼業務,然後識別語音、理解意圖後,根據用戶的需求,回答後轉入對應的業務隊列排隊。
上邊是接通的流程,呼出的流程與之相反,就不在贅述了。
2. 現在市場上的AI技術的運用
目前市場上的不管是ASR、TTS、NLP都被阿里網路科大訊飛等巨頭公司所佔據,這些技術在國內基本已經成為定局。像ASR這類引擎市場上大部分都是用的阿里雲和訊飛雲的,要不就是網路雲。阿里雲和訊飛雲的識別率高一些,可以達到97%左右、網路的差一些,識別率在80%左右,我們當初在做項目的時候選擇ASR做過測試,事實證明阿里雲識別率更高同時也可以識別方言。因此,我們在做項目的時候,當仁不讓的選擇了阿里雲的
TTS我們選擇的是訊飛的,選擇的理由很簡單,畢竟科大訊飛是人工智慧領域巨頭級的公司,質量當然有的保證。
3. AI 能力對接
在具體落地中,這個領域的常規參與者通常具備呼叫中心能力或者AI能力其中一種,而主要的對接點也就在於AI能力與呼叫中心設備去對接,而ASR/TTS與呼叫中心設備對接的常規協議主要是mrcp/sip。
媒體資源控制協議(Media Resource Control
Protocol, MRCP)是一種通訊協議,用於語音伺服器向客戶端提供各種語音服務(如語音識別和語音合成)。有兩個版本的MRCP協議,版本2使用SIP作為控制協議,版本1使用RTSP。
實際對接的時候,會遇到不少技術問題,當我們ASR/TTS引擎做私有雲部署,為了避免了內外網穿透時防火牆的諸多設置和語音流的時延。這在我們當時對接的時候也花費了好大一番功夫。
前端服務平台:
其中最重要的就是配置呼叫流程這一塊兒了,
這一塊兒很容易被忽視,但是這反而是可以出成績的地方。一般來說一套最佳話術模板,可以以一敵萬。心理學基礎必須要有,一句話怎麼說能讓接電話的人最大概率的順著自己的思路走,達成目的,從而形成特定細分領域機器人話術模板,得到最佳的外呼效果(接通率、通話時長、電銷意願、催收意願)或者是接通效果(滿意度)
其餘的基本就是web端的東西了,具體功能點呢,即用戶登錄、配置呼叫流程,建立呼叫任務、統計呼叫數據、導出呼叫報表,這些功能點基本實現就可以,因為站在產品角度,產品最重要的價值就是可以呼通或者接通用戶的電話,並且能夠准確的識別用戶的意圖,並且准確的回答用戶。這就是智能語音交互系統的最終目標,也一直是我們的最終目標。
外呼線路廠商:
一般如果是購買系統的話,是給提供線路的,只需交一些線路費用。如果是自己做項目的話,網上、淘寶上一大堆,費用可以談,也給提供線路對接的介面。
結語
雖然現在市場上做智能語音交互系統的比較多,但一般只限於各個行業的電話銷售,真正意義上的智能語音交互還是很少的。原因很簡單,雖然原理不是很難但是真正落地實施的時候,遇到的困難非常的多,幾乎是一步一個坑。好在現在已經真正的落地實施了,方方面面的效果都還是很不錯的。一年多的辛苦沒有白費。哈哈~
寫這篇文章嘗試給大家簡單介紹一下智能語音交互系統,然才疏學淺,疏漏和不當之處在所難免,權當給大家拋磚引玉。
諸多細節限於主題和篇幅的要求不做詳細記述,如有問題,歡迎隨時交流。
2. 如何搭建一個完整的視頻直播系統_如何搭建視頻直播伺服器
視頻直播,可以分為採集,前處理,編碼,傳輸,解碼,渲染這幾個環節,下面分別說下:採集,iOS是比較簡單的,android則要做些機型適配工作,PC最麻煩各種奇葩攝像頭驅動,出了問題特別不好處理,建議放棄PC只支持手機主播,目前幾個新進的直播平台都是這樣的
前處理,現在直播美顏已經是標配了,80%的主播沒有美顏根本沒法看
美顏演算法需要用到GPU編程,需要懂圖像處理演算法的人,沒有好的開源實現,要自己參考論文去研究
難點不在於美顏效果,而在於GPU佔用和美顏效果之間找平衡
GPU雖然性能好,但是也是有功耗的,GPU佔用太高會導致手機發燙,而手機發燙會導致攝像頭採集掉幀,iPhone6尤其明顯孝腔,因為iPhone6的CPU和前置攝像頭很近
編碼,肯定要採用硬編碼,軟編碼720p完全沒希望,勉強能編碼也會導致CPU過熱燙到攝像頭
硬編碼兼容性又是一個大坑,android上要有人去填
編碼要在解析度,幀率,碼率,GOP等參數設計上找到最佳平衡點
傳輸,自己做不現實,交給CDN服務商吧,也就是貴了點,相信有志於做直播平台改變世界的你不差錢
假設2WPCU大約每月帶寬費用100萬左右,因為清晰流暢的720p要1
5mbps左右
CDN只提供了帶寬和伺服器間傳輸,發送和接收端的網路連接抖動緩沖還是要自己寫的
不想要卡頓,必然要加大緩沖,會導致延遲高,延遲高影響互動性,要做權衡
解碼,也肯定要硬解碼,目前手機普遍支持硬解了,只是android上還是有兼容性大坑要填
渲染,這個難點不在於繪制,而在於音畫同步,目前幾個直播做得都不好
此外音頻還有幾個坑耐納要填,比如降噪,音頻編碼器的選擇,各種藍牙耳機,各種播放模式的適巧畝衫配等,如果你想做主播和觀眾連線聊天,還有個回聲消除問題
以上是媒體模塊,還有信令控制,登錄、鑒權、許可權管理、狀態管理等等,各種應用服務,消息推送,聊天,禮物系統,支付系統,運營支持系統,統計系統等
後台還有資料庫,緩存,分布式文件存儲,消息隊列,運維系統等
第一期至少要融資2000萬RMB,組建至少10人的技術團隊,10人的產品運營團隊,爭取3個月產品上線,半年達到5W在線(2w根本不夠)然後融資1個億,或許還有希望一搏
這些對於創業者來說是一個難度系數非常大,創業初期還是建議接入第三方的直播SDK,可以節省成本,趣拍直播還是很不錯的,不管是轉碼還是推流,支持1000多萬人在線不卡頓,可以去了解下
祝你朋友好運
3. 直播平台軟體開發,搭建直播平台系統源碼時,音視頻編解碼技術是如何實現的
這個讓我來幫你解答一下。其實視頻的編碼和解碼都是按照一定的演算法來實現的,這也是對音視頻信息的分析而推出的編解碼演算法。但音頻的演算法多樣、復雜程度比視頻更高。而且不同的場景需要選擇不同的音頻解碼器。
音頻編解碼常用的實現方案有三種:第一種就是採用專用的音頻晶元對語音信號進行採集和處理,音頻編解碼演算法集成在硬體內部。第二種方案就是利用A/D採集卡加上計算機組成硬體平台,音頻編解碼演算法由計算機軟體來實現;第三種方案是使用高精度、高速度的A/D採集晶元來完成語音信號的採集。
直播平台軟體開發,音視頻流內容分發和轉碼方面的內容
1.前端設備,手機或者攝像機等設備將直播的音視頻內容進行採集處理,才推動到平台源站伺服器(採用多機集群熱備份機制)。
2. 源站伺服器一般會連接有專業的磁碟陣列存儲設備,當源站伺服器接收到數據之後,會先復制多份轉發給下面的各個CDN節點,然後再復制其中一份發送給轉碼伺服器。轉碼伺服器會將收到的每一個音視頻流進行實時轉碼。轉碼伺服器會將實時的直播碼流錄制保存到磁碟陣列中,以方便用戶進行回放使用。
3.由於音視頻內容需要由高性能的伺服器完成,在實時轉碼的過程中,常常會因為考慮不當,出現無法滿足需求的問題。畢竟目前的直播應用屬於高並發的大規模直播運營,在每個直播間不同的時間段都會遇上百個甚至成千上萬個直播流,進行實時轉碼。這樣一來就需要配置更多高配置的伺服器,成本相對來說也會加大。
4.直播流的轉碼必須是實時性,而且必須要求轉碼延遲在1s內,對於先前的2-3s的延遲還是存在一定的差距的。所以,為了保證直播軟體開發完成之後,音視頻的轉碼能夠順利的進行,不僅需要在伺服器的配置上多下功夫,也要注意是否具備高度實時性,轉碼延遲是否可以控制在一定的時間內。望採納,謝謝
4. 視頻轉碼的實現
當通過IP網路發送DVD光碟上的數據時(例如公司培訓、視頻點播或視頻廣播等應用),轉碼技術同樣適用。對於這種情況,源視頻格式是MPEG-2,而VC1很可能被用作目標格式。以下將介紹如何利用兩片TI TMS320C6455 DSP來實現這種系統原型。
從技術上來看,需採用視頻轉碼技術來解決格式轉換、位速率減小和時間/空間解析度縮減等諸多問題。相應地,針對不同情況開發出了不同的智能視頻轉碼方案,其基本原則是盡可能地復用原始輸入視頻流中所包含的信息以降低復雜性。
例如,運動矢量(MV)映射、DCT(離散餘弦變換)域轉換和殘差重估(resial re-estimation)等日前流行的視頻轉碼技術可大幅降低計算復雜性。
此外,人們也期待出現簡單且可以擴展的轉碼架構。由於不同的視頻轉碼方案要求以不同的方式對演算法和架構進行調整,並且不存在單個的標准化視頻轉碼方案,具有可編程能力的DSP(如C6455 DSP)適用於這一領域。
下面我們將提出一個可滿足各種轉碼方案的通用視頻轉碼架構及原型。為適應各種不同的視頻轉碼目標,我們選取了最簡單的轉碼方案將被解碼的視頻流按照新的約束條件完全重新編碼。
這個初始的視頻轉碼方案未復用原始輸入視頻流中所包含的信息,卻能夠處理所有復雜的解碼和重編碼任務。不過,該視頻轉碼架構和軟體基礎設施是可擴展的,可以支持智能轉碼方案(如MV映射、DCT域轉換等),以提高通道密度並充分挖掘優化質量的潛能。由於採用了靈活的軟硬體框架,這個架構可以實現許多傳統的和新型的轉碼方案。
原型的實現
盡管MPEG-2/WMV9組合有望應用得非常普遍,但DSP的可編程能力使其可以方便地處理源視頻/目標視頻格式的幾乎任何組合。
該系統的原始數據以MPEG-2格式的視頻壓縮文件儲存在硬碟中,數據流通過Windows Media Player軟體止於平板顯示器。在這個展示裝置中,視頻信號採用NTSC標准解析度並以30幀/s的速度進行轉碼。 運行在DSP1上的數據流接收器模塊負責緩存MPEG-2數據流,並對MPEG-2解碼器模塊的輸入數據進行管理。數據接收操作由TI公司的Network Development Kit(NDK)庫(本質上是一種TCP/IP棧)控制。DSP2也有一個基於NDK的HTTP伺服器,負責處理由Windows Media Player發出的流處理請求並把ASF數據包傳送給WMP。然後,WMP將ASF數據包解碼並在屏幕上顯示視頻信號。 該數據流的一個最有趣和最富挑戰性的特性是兩個DSP在sRIO介面上的交互。對於每個視頻幀的傳送,這一過程包括: 一旦DSP1發送完視頻幀,便馬上發送一個在sRIO協議規范中被稱為DOORBELL(門鈴)的數據包。DOORBELL數據包在DSP2上產生一個系統中斷告知有幀到達,然後開始WMV9編碼。在完成對幀的編碼後,DSP2將一個DOORBELL數據包發送回DSP1,再次觸發一個中斷給DSP1中告知可繼續發送下一幀。在實際的實現中,使用了一種PING-PONG緩沖方案來並行處理編碼/解碼和數據傳送操作。接下來,該序列以循環方式運行直到演示停止。 GUI模塊將控制和監視功能內置到系統中。sRIO鏈接和兩個吉比特MAC(GMAC)鏈接的活動以實時方式顯示出來。對於傳送MPEG-2數據流的鏈接,平均數據速率為8Mbps,這對於標准解析度下編碼速率達30fps的情況十分普遍。對於傳送ASF數據包的鏈接,平均位速率為4Mbps,這表明WMV9能夠節省50%的帶寬但仍可達到同樣的視頻質量。對於sRIO鏈接,平均位速率為124Mbps。
5. 怎麼架設游戲伺服器
讓菜鳥和窮人也能架成自己的征途伺服器:
首先你要忘掉網上發表的繁瑣的架設教程,那都是有意無意的騙子,按本方法保證能很方便地架起自己的真征伺服器。
一,機器需求。
內存必須大,建議4G,cpu要求不高,只要是64位的就行,比用amd
4200+,這套機器下來,價格在2000元元以下。
二,安裝RHEL
5.0,可以電驢上搜索,DVD版的,下載後打人刻在一張DVD盤上。
Red
Hat
Enterprise
Linux
(Server
including
virtualization)系列號:2515dd4e215225dd
安裝時,選則上mysql
web
等服務,其它可以不選,玩不轉linux的人請關閉防火牆。
三,安裝成功後,進入圖形界面,界面很容易上手,在這里把網卡IP設好,這里假設為
192.168.0.200
然後
服務
中把
mysqld
httpd
選上啟動並保存。
四,把home.tgz放在根目錄,在圖形界把它解開,在home目錄里生成有server
ztgame
BAK三個目錄。
把/home/BAK/MySQL-shared-compat-5.0.45-0.rhel5.x86_64.rpm安裝上。
五,建立資料庫用戶zt10game
開通遠程和本地許可權
默認的root密碼是空,第一進入要設置root密碼,一定要把它記住。然後用以下命令建議名為zt10game密碼是12345678的用戶:
grant
all
privileges
on
*.*
to
'zt10game'@'localhost'
identified
by
'12345678'
with
grant
option;
grant
all
privileges
on
*.*
to
'zt10game'@'%'
identified
by
'12345678'
with
grant
option;
六,建立和導入游戲資料庫
在客戶機安裝SQLyog
Enterprise。把home.tgz中的BAK\sql解在本地機,按名字建立資料庫把把內容導入。
七,客戶機管理工具主要用兩個
SecureCRT
和
WinSCP3,前者是遠程操作的,後者是文件管理。用WinSCP3設置所有文件為777屬性。
八,用SecureCRT登錄,cd
/home
然後
./4g.sh等待游戲啟動。出現三個
可以進游戲啦,服務端啟動完畢。
九,客戶請用1.04加三合一補丁。
十,登錄器請用
可注冊的完美登錄器,這些網上都有。實在找不到的請回貼索取。
聲明:這個端是一個朋友弄的,一不小心被我拿到,現發出來供大家學習、研究,據說用綜合了網上可能找到的紫龍1.04
征途資料
做征途最新版這三個素材而成,學習者請在24小時後刪除,絕不可用於商業用途,發生法律糾紛由使用者承擔法律責任,本人概不責。(轉)
6. java轉碼問題
呵呵,看我這個,是本人原創。不管你是任何編碼都可以解決,唯一的缺點是效率稍微低了點(不過比樓上那個要快)。
思路:
1.首先在jsp頁面即客戶端用JavaScript將漢字處理成asc碼
2.服務端再將asc碼還原成原有的字元
JavaScript轉換代碼:
var s=document.getElementById("text").value;
var t="";
//將漢字轉換成ASCII碼,然後在伺服器端里再根據ASCII碼轉換成相應的字元
for(i=0;i<s.length;i++){
t+=s.charCodeAt(i)+" ";//將字元轉換成相應的ASCII碼並用空格隔開;
}
java服務端還原:
String param=request.getParameter("param");
StringBuffer buf=new StringBuffer("");
String[] ss = param.split(" ");
for (int i = 0; i < ss.length; i++) {
char c = (char) Integer.parseInt(ss[i].trim());
buf.append(c);
}
System.out.println("還原後的字元是:"+buf.toString());
----------------------
如果你再把轉換後的asc碼再加個數字或者減個數字就是一個簡單的加密,O(∩_∩)O~,希望對你有所幫助