展品讲解语音对话系统 实验报告

2023-11-02 11:59

本文主要是介绍展品讲解语音对话系统 实验报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

展品讲解语音对话系统 实验报告

  • 1. 任务定义
  • 2. 实验环境
  • 3. 系统功能
  • 4. 方法说明
    • 4.1 本地录音
      • 4.1.1 初始化
      • 4.1.2 录音
      • 4.1.3 保存音频
    • 4.2 百度语音识别
      • 4.2.1 初始化
      • 4.2.2 语音识别
    • 4.3 图灵机器人回答
      • 4.3.1 在图灵机器人平台新增语料库
      • 4.3.2 初始化
      • 4.3.3 获得回复
    • 4.4 处理回答内容并语音回答
  • 5. 演示视频及源码

1. 任务定义

  • 搭建以展品讲解为主要内容的语音对话系统
    1. 展品导览:通过对话,确认用户感兴趣的展品(假设展品为展馆内所展示的物品或图、画),以及导引用户参观其余展品。
    2. 展品讲解:通过对话,介绍展品。能够回答用户关于展品的n>1个提问。
    3. 闲聊:打招呼、再见、自我介绍等。
  • 实现方法不限

2. 实验环境

  • Windows 10
  • python 3.7.8
  • 图灵机器人
  • 百度语音识别

3. 系统功能

  • 机器人自我介绍
  • 打招呼和再见
  • 画展概况介绍
  • 指定展品编号进行介绍
  • 指定作者介绍其展品
  • 介绍展品作者信息
  • 介绍剩余展品内容
  • 部分闲聊

4. 方法说明

4.1 本地录音

4.1.1 初始化

framerate = 16000       # 采样率
num_samples = 2000      # 采样点
channels  = 1           # 声道
sampwidth = 2           # 采样宽度2bytes
FILEPATH  = 'speech.wav'

4.1.2 录音

  • 调用PyAudio库进行录音,recordTime为录音时长,默认为4秒
def my_record(recordTime=4):pa = PyAudio()# 打开一个新的音频streamstream = pa.open(format=paInt16, channels=channels,rate=framerate, input=True, frames_per_buffer=num_samples)# 存放录音数据my_buf = [] t = time.time()print('正在录音...')while time.time() < t + recordTime:  # 设置录音时间(秒)# 循环read,每次read 2000framesstring_audio_data = stream.read(num_samples)my_buf.append(string_audio_data)print('录音结束.')save_wave_file(FILEPATH, my_buf)stream.close()

4.1.3 保存音频

filepath:保存音频路径
data:音频内容

def save_wave_file(filepath, data):wf = wave.open(filepath, 'wb')wf.setnchannels(channels)wf.setsampwidth(sampwidth)wf.setframerate(framerate)wf.writeframes(b''.join(data))wf.close()

4.2 百度语音识别

4.2.1 初始化

# 百度语音识别的APIKey和SecretKey
base_url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s"
APIKey = "***************"
SecretKey = "*****************"HOST = base_url % (APIKey, SecretKey)

4.2.2 语音识别

  • 获取音频内容
  • file:音频文件路径
def get_audio(file):with open(file, 'rb') as f:data = f.read()return data
  • 获取token信息
def getToken(host):res = requests.post(host)return res.json()['access_token']
  • 将音频内容上传到百度语音识别系统并获取结果
  • speech_data:音频内容
  • token:token信息
  • dev_pid:百度语音识别提供的几种语言选择,1537为普通话
# 传入语音二进制数据,token
# dev_pid为百度语音识别提供的几种语言选择
def speech2text(speech_data, token, dev_pid=1537):FORMAT = 'wav'RATE = '16000'CHANNEL = 1CUID = '********'SPEECH = base64.b64encode(speech_data).decode('utf-8')data = {'format': FORMAT,'rate': RATE,'channel': CHANNEL,'cuid': CUID,'len': len(speech_data),'speech': SPEECH,'token': token,'dev_pid':dev_pid}url = 'https://vop.baidu.com/server_api'headers = {'Content-Type': 'application/json'}# r=requests.post(url,data=json.dumps(data),headers=headers)print('正在识别...')r = requests.post(url, json=data, headers=headers)Result = r.json()if 'result' in Result:return Result['result'][0]else:return Result

4.3 图灵机器人回答

4.3.1 在图灵机器人平台新增语料库

在这里插入图片描述

4.3.2 初始化

# 图灵机器人的API_KEY、API_URL
turing_api_key = "********************"
api_url = "http://openapi.tuling123.com/openapi/api/v2"
headers = {'Content-Type': 'application/json;charset=UTF-8'}

4.3.3 获得回复

  • 将问题上传到图灵机器人系统获得回复
  • text_words:问题文本内容
  • result:图灵机器人的回答
# 图灵机器人回复
def Turing(text_words=""):req = {"reqType": 0,"perception": {"inputText": {"text": text_words},"selfInfo": {"location": {"city": "北京","province": "北京","street": "北京邮电大学西土城校区"}}},"userInfo": {"apiKey": '**************',"userId": "GZR"}}req["perception"]["inputText"]["text"] = text_words# 获得回复response = requests.request("post", api_url, json=req, headers=headers)response_dict = json.loads(response.text)# 提取回复内容result = response_dict["results"][0]["values"]["text"]print("NAO Robot said: " + result)return result

4.4 处理回答内容并语音回答

  • 处理图灵机器人的回答内容并进行语音回复
  • response:图灵机器人的回答
  • engine:语音引擎
  • allPaints:剩余尚未介绍展品
def answer(response, engine, allPaints):# 如果不需要全部介绍if response != '全部':temp = response[1]engine.say(response)engine.runAndWait()# 判断是否是介绍一幅展品,如果是则将其从剩余未介绍展品中剔除并介绍,否则正常回复if temp in allPaints:allPaints.remove(temp)temp = ""for i in allPaints:temp += itemp += '、'print("这里还剩下" + temp + "号画,请问需要继续介绍哪一幅画?")engine.say("这里还剩下" + temp + "号画,请问需要继续介绍哪一幅画?")engine.runAndWait()# 介绍全部剩余展品else:engine.say("那我就开始啦!")engine.runAndWait()for i in range(len(allPaints)):result = "介绍一下第{}幅画".format(allPaints[i])response = Turing(result)engine.say(response)engine.runAndWait()# 剩余展品清空allPaints = []

5. 演示视频及源码

  • 见附件

这篇关于展品讲解语音对话系统 实验报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330445

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识