语音助手——简介与交互过程

语音助手简介

        语音助手这个产品的目的,是希望通过语音说话的方式,来实现闲聊陪伴、知识获取、设备控制等需求,对应的就有三种不同的助手类型:闲聊型、问答型、指令型。

        闲聊型助手用于实现闲聊陪伴的目的,通过AI的技术来与用户进行对话,感知用户情绪,比如微软小冰。

        问答型助手用于知识获取,通过对话的方式来获取知识,或者解决疑问,比较常见的应用则是各个平台的智能客服,比如京东、淘宝等都有对应的产品。

        指令型助手用于设备控制,通过对话的方式来控制智能设备,实现某种操作,比较常见的应用有智能音响、IOT设备等,比如,语音控制:“打开空调,然后调成25度”。

        而集成了这三个能力的语音助手,则是以一个集大成者的贴心助理的形式存在,比如vivo的Jovi语音助手、小米的小爱同学、IPhone的siri。        

语音助手交互过程

1、首先,来了解一下从用户发出指令到设备端执行,一共经历了哪些流程:

         由上图可以看出,用户发出语音指令,经过语音识别(ASR)服务器转换为文本,然后经过网关进入自然语言理解(NLU)服务器进行语义理解,理解之后经由对话管理中控(DM)进入技能工具箱得到结构化的控制指令,然后经过语音转文字(TTS)服务将文本信息转为语音信息,进入手机端执行命令并且回复用户。

2、下面我们来简单说下各个模块的作用:

        客户端:这里一般是指设备端,比如:手机、音响、智能设备等,用户通过该设备与语音助手进行交互,实现对话、控制设备等操作。 

        语音识别ASR:ASR实现的功能主要为将语音转换为文字,但其实这里还涉及很多其他技术,一个完整的ASR链路主要包括:语音唤醒、语音输入、静音检测(VAD)、信号处理、特征提取、模型转换等。

        网关服务:网关服务顾名思义,是一个网络连接到另一个网络的“关口”,承担了一些请求鉴权、服务转发、配置下发、流量控制等能力。

        语义理解NLU:语义理解的作用为根据文本信息理解句子的含义,这里包含了很多的模块和技术,一般主要分为query预处理和query理解两个部分,在query预处理中一般包含query纠错、问句改写等,在query理解中一般包含分词、依存句法分析、命名实体识别(NER)、场景识别、意图识别、槽位提取、情感分析等。

        对话管理DM:DM控制着人机对话的状态,他的输入为当前的用户输入(经过语义理解之后的内容),输出为下一步的系统行为和更新后的状态。DM中一般需要负责:BOT的分发、BOT结果排序、对话状态维护(DST),多轮会话一般就是在这里控制的,后续的文章中会详细讲解DM和多轮对话的实现。

        技能工具箱:这里存放着支持的各个技能,比如:播放音乐(play_music)、查询天气(weather_forecast)、闹钟操作(operate_alarm)等,这里的技能指的是客户端可以执行的内容,是语义内容经过技能封装、知识填充、知识校验等操作后生成的结构化的数据,客户端拿到后可以直接执行。        

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
实现语音唤醒需要用到语音识别和语音分析技术,可以借助第三方库进行实现。以下是一个简单的Python语音助手的代码示例: ```python import speech_recognition as sr import pyttsx3 import time # 定义语音识别和语音合成引擎 r = sr.Recognizer() engine = pyttsx3.init() # 定义唤醒词 WAKEUP_WORD = "你好小宝贝" # 定义响应函数 def respond(text): print(text) engine.say(text) engine.runAndWait() # 启动语音助手 with sr.Microphone() as source: while True: # 监听声音输入 audio = r.listen(source) try: # 识别语音 text = r.recognize_google(audio, language='zh-CN') # 判断是否唤醒 if text == WAKEUP_WORD: respond("我在呢,请问有什么可以帮助您的?") # 进入命令输入模式 while True: # 监听声音输入 audio = r.listen(source) try: # 识别命令 text = r.recognize_google(audio, language='zh-CN') respond("我听懂了,正在处理...") # 处理命令 # 这里可以添加自己的命令处理逻辑 time.sleep(3) respond("处理完成") except sr.UnknownValueError: respond("抱歉,我没有听清,请再说一遍") else: print("未唤醒") except sr.UnknownValueError: print("无法识别") ``` 这段代码使用了Python的`speech_recognition`和`pyttsx3`库,实现了一个简单的语音助手。它可以监听声音输入,判断是否唤醒,如果唤醒则进入命令输入模式,处理用户的命令。你可以根据自己的需求修改代码,添加更多的命令和功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值