30行JS代碼帶你手寫自動回復語音聊天機器人

🥂(?′?`?)您的點贊👍?評論📝?收藏?是作者創作的最大動力🤞

在這里插入圖片描述

前言

????現如今生活中到處都是聊天機器人的身影,聊天機器人不僅僅能減少人工的聊天壓力,而且十分的可愛有趣,安卓系統的小AI,蘋果系統的siri,相信大家都感受到了,這兩個機器人的可愛、實用性,然而聊天機器人背后實現的原理是什么呢,這篇文章我將通過一個非常有趣的聊天機器人案例,帶大家了解聊天機器人背后的原理哦!

文章の目錄

  • 前言
  • 什么是聊天機器人?
  • 聊天機器人案例效果預覽
  • 將用戶輸入的內容渲染到聊天窗口
  • 發起請求獲取聊天信息
  • 將機器人聊天內容轉換成語音
  • 實現自動播放語音
  • 使用回車鍵發送消息
  • 總結案例實現步驟

什么是聊天機器人?

????聊天機器人可用于實用的目的,如客戶服務或資訊獲取。有些聊天機器人會搭載自然語言處理系統,但大多簡單的系統只會擷取輸入的關鍵字,再從數據庫中找尋最合適的應答句。聊天機器人是虛擬助理(如Google智能助理)的一部分,可以與許多組織的應用程序,網站以及即時消息平臺(Facebook Messenger)連接。非助理應用程序包括娛樂目的的聊天室,研究和特定產品促銷,社交機器人。聊天機器人實際上就是一個可以模擬人類對話的計算機程序

聊天機器人案例效果預覽

????大家可以看到當我向輸入框輸入想你了,聊天機器人,自動回復了"想我什么呀",而且自動播報語音,實現這些功能的步驟是,先將輸入框的文字渲染到聊天窗口中,聊天機器人會根據輸入框的內容返回數據,我們再將返回的數據渲染到頁面中轉換成語音即可,只要掌握了這個步驟,相信小伙伴們都能輕松的寫出一個智能聊天機器人案例;
在這里插入圖片描述

將用戶輸入的內容渲染到聊天窗口

代碼示例如下:

// 為發送按鈕綁定點擊事件處理函數
$('#btnSend').on('click', function () {var text = $('#ipt').val().trim() // 獲取用戶輸入的內容if (text.length <= 0) { // 判斷用戶輸入的內容是否為空return $('#ipt').val('')}// 將用戶輸入的內容顯示到聊天窗口中$('#talk_list').append('<li class="right_word"><img src="img/person02.png" /> <span>
' + text + '</span></li>')resetui() // 重置滾動條的位置$(‘#ipt’).val('') // 清空輸入框的內容// TODO: 發起請求,獲取聊天消息
})

發起請求獲取聊天信息

代碼示例如下:

function getMsg(text) {$.ajax({method: 'GET',url: 'http://ajax.frontend.itheima.net:3006/api/robot',data: {spoken: text},success: function (res) {if (res.message === 'success') {var msg = res.data.info.text$('#talk_list').append('<li class="left_word"><img src="img/person01.png" /> <span>' + m
sg + '</span></li>')resetui()// TODO: 發起請求,將機器人的聊天消息轉為語音格式}}})
}

將機器人聊天內容轉換成語音

代碼示例如下:

function getVoice(text) {$.ajax({method: 'GET',url: 'http://ajax.frontend.itheima.net:3006/api/synthesize',data: {text: text},success: function (res) {// 如果請求成功,則 res.voiceUrl 是服務器返回的音頻 URL 地址if (res.status === 200) {$('#voice').attr('src', res.voiceUrl)}}})}

實現自動播放語音

代碼示例如下:

<!-- 音頻播放語音內容 -->
<audio src="" id="voice" autoplay style="display: none;"></audio>

使用回車鍵發送消息

代碼示例如下:

// 讓文本輸入框響應回車事件后,提交消息
$('#ipt').on('keyup', function (e) {// e.keyCode 可以獲取到當前按鍵的編碼if (e.keyCode === 13) {// 調用按鈕元素的 click 函數,可以通過編程的形式觸發按鈕的點擊事件$('#btnSend').click()}
})

總結案例實現步驟

????首先我們需要將頁面的結構寫出來,然后我們需要將用戶輸入的內容渲染到聊天窗口,然后我們再根據用戶輸入的內容發起Ajax請求,向后臺請求聊天數據,獲取請求到的數據后我們首先需要將文本轉換成語音,然后將文本渲染到聊天界面中,最后我們需要通過給回車鍵綁定事件,實現回車鍵發送消息的案例,本案例一共只敲了30行代碼便實現了簡單有趣的自動回復的聊天機器人案例,希望大家能通過此案例有所收獲哦;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39912.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39912.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39912.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Springboot整合Mybatis調用Oracle存儲過程

1、配置說明 Oracel11g+springboot2.7.14+mybatis3.5.13 目標:springboot整合mybatis訪問oracle中的存儲過程,存儲過程返回游標信息。 mybatis調用oracle中的存儲過程方式 2、工程結構 3、具體實現 3.1、在Oracle中創建測試數據庫表 具體數據可自行添加 create table s…

Lodash——使用與實例

1. 簡介 Lodash是一個一致性、模塊化、高性能的JavaScript實用庫。Lodash通過降低array、number、objects、string等等的使用難度從而讓JavaScript變得簡單。Lodash的模塊方法&#xff0c;非常適用于&#xff1a; 遍歷array、object 和 string對值進行操作和檢測創建符合功能的…

字符個數統計(同類型只統計一次)

思路&#xff1a;因為題目圈定出現的字符都是 ascii 值小于等于127的字符&#xff0c;因此只需要定義一個標記數組大小為128 &#xff0c;然后將字符作為數組下標在數組中進行標記&#xff0c;若數組中沒有標記過表示第一次出現&#xff0c;進行計數&#xff0c;否則表示重復字…

簡單線性回歸:預測事物間簡單關系的利器

文章目錄 &#x1f340;簡介&#x1f340;什么是簡單線性回歸&#xff1f;&#x1f340;簡單線性回歸的應用場景使用步驟&#xff1a;注意事項&#xff1a; &#x1f340;代碼演示&#x1f340;結論 &#x1f340;簡介 在數據科學領域&#xff0c;線性回歸是一種基本而強大的統…

Kali Linux助您網絡安全攻防實戰

Kali Linux&#xff1a;黑客與防御者的神器 Kali Linux是一款專為網絡安全測試和攻防實踐而設計的操作系統。它匯集了大量的安全工具&#xff0c;可以用于滲透測試、漏洞掃描、密碼破解等任務&#xff0c;不僅為黑客提供了強大的攻擊能力&#xff0c;也為安全防御者提供了測試和…

Kafka 入門到起飛 - 什么是 HW 和 LEO?何時更新HW和LEO呢?

上文我們已經學到&#xff0c; 一個Topic&#xff08;主題&#xff09;會有多個Partition&#xff08;分區&#xff09;為了保證高可用&#xff0c;每個分區有多個Replication&#xff08;副本&#xff09;副本分為Leader 和 Follower 兩個角色&#xff0c;Follower 從Leader同…

爬蟲逆向實戰(十八)--某得科技登錄

一、數據接口分析 主頁地址&#xff1a;某得科技 1、抓包 通過抓包可以發現數據接口是AjaxLogin 2、判斷是否有加密參數 請求參數是否加密&#xff1f; 查看“載荷”模塊可以發現有一個password加密參數和一個__RequestVerificationToken 請求頭是否加密&#xff1f; 無…

【Linux】Reactor模式

Reactor模式 Reactor模式的定義 Reactor反應器模式&#xff0c;也叫做分發者模式或通知者模式&#xff0c;是一種將就緒事件派發給對應服務處理程序的事件設計模式。 Reactor模式的角色構成 Reactor主要由以下五個角色構成&#xff1a; reactor模式的角色 角色解釋Handle(句…

保姆級別講解Python數據處理,你絕對能會

名字&#xff1a;阿玥的小東東 學習&#xff1a;Python、C/C 主頁鏈接&#xff1a;阿玥的小東東的博客_CSDN博客-python&&c高級知識,過年必備,C/C知識講解領域博主 目錄 1. 文件讀取 2. 數據處理 3. 處理結果輸出 總的來說 為了咱們讓程序跑起來&#xff0c;我們需…

DAY3,ARM(LED點燈實驗)

1.匯編實現開發板三盞燈點亮熄滅&#xff1b; .text .global _start _start: /**********LED123點燈**************/RCC_INIT:1使能PE10 PF10 PE8RCC..寄存器,E[4]1 F[5]1 0x50000a28ldr r0,0x50000a28ldr r1,[r0]orr r1,r1,#(0x3 << 4)str r1,[r0]LED1_INET:2初始化LED…

酷開系統 | 酷開科技大數據,更好的與目標消費人群建立聯系

眾所周知&#xff0c;OTT的一大優勢在于強曝光&#xff0c;能夠給消費者帶來強烈的視覺沖擊&#xff0c;強化品牌認知。但是&#xff0c;要想達到提升品牌認知&#xff0c;首先要保證OTT的流量規模&#xff0c;實現對目標人群的有效覆蓋。得年輕消費者得“天下”&#xff0c;年…

tk切換到mac的code分享

文章目錄 前言一、基礎環境配置二、開發軟件與擴展1.用到的開發軟件與平替、擴展情況 總結 前言 最近換上了coding人生的第一臺mac&#xff0c;以前一直偏好tk&#xff0c;近來身邊的朋友越來越多的用mac了&#xff0c;win的自動更新越來越占磁盤了&#xff0c;而且win11拋棄了…

vue elementui v-for 循環el-table-column 第一列數據變到最后一個

這個動態渲染table表格時發現el-table-column 第一列數據變到最后一個 序號被排到后面 代碼 修改后 <el-table:data"tableData"tooltip-effect"dark"style"width: 100%"height"500"><template v-for"(item, index) i…

PostCSS在vue中的使用

1、安裝 PostCSS 和所需的插件。在命令行中運行以下命令&#xff1a; npm install postcss autoprefixer cssnano postcss-pxtorem --save-dev 這將安裝 PostCSS、Autoprefixer、CSSnano 和 postcss-pxtorem 插件&#xff0c;同時將它們添加到項目的開發依賴中。 2、在項目根目…

每天一道leetcode:1926. 迷宮中離入口最近的出口(圖論中等廣度優先遍歷)

今日份題目&#xff1a; 給你一個 m x n 的迷宮矩陣 maze &#xff08;下標從 0 開始&#xff09;&#xff0c;矩陣中有空格子&#xff08;用 . 表示&#xff09;和墻&#xff08;用 表示&#xff09;。同時給你迷宮的入口 entrance &#xff0c;用 entrance [entrancerow, …

SpringBoot的配置文件(properties與yml)

文章目錄 1. 配置文件的作用2. 配置文件格式3. 配置文件的使用方法3.1. properties配置文件3.1.1. 基本語法和使用3.1.2. properties優缺點分析 3.2. yml配置文件3.2.1. 基本語法與使用3.2.2. yml中單雙引號問題3.2.3. yml配置不同類型的數據類型及null3.2.4. 配置對象3.2.5. 配…

android設置豎屏仍然跟隨屏幕旋轉怎么辦

如題所問&#xff0c;我最近遇到一個bug&#xff0c;就是設置了搖感&#xff0c;然后有用戶反饋說設置了手機下拉的系統設置-屏幕旋轉-關閉。然后屏幕還是會旋轉的問題。 首先&#xff0c;我們先從如何設置橫豎屏了解下好了 設置橫屏和豎屏的方法&#xff1a; 方法一&#x…

uni-app引入sortable列表拖拽,兼容App和H5,拖拽排序。

效果: 拖拽排序 背景&#xff1a; 作為一名前端開發人員&#xff0c;在工作中難免會遇到拖拽功能&#xff0c;分享一個github上一個不錯的拖拽js庫&#xff0c;能滿足我們在項目開發中的需要&#xff0c;下面是我在uniapp中使用SortableJS的使用詳細流程&#xff1b; vue開發…

Centos7安裝docker后默認開啟docker0的網卡|卸載默認網卡

一&#xff1a; 停掉服務 systemctl stop docker [rootwww ~]# systemctl stop docker [rootwww ~]# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor prese…

神經網絡基礎-神經網絡補充概念-27-深層網絡中的前向傳播

概念 深層神經網絡中的前向傳播是指從輸入數據開始&#xff0c;逐層計算每個神經元的輸出值&#xff0c;直到得到最終的預測值。 一般步驟 1輸入數據傳遞&#xff1a; 將輸入數據傳遞給網絡的輸入層。輸入數據通常是一個特征矩陣&#xff0c;每一列代表一個樣本&#xff0c;…