Riva 虚拟助手示例
目录

Riva 虚拟助手示例#
概述#
虚拟助手示例演示了如何使用 Riva AI 服务,特别是 ASR、NLP 和 TTS,来构建一个简单但完整的对话式 AI 应用程序。它演示了如何接收用户语音输入,使用意图识别和槽位填充方法解释查询,计算响应,并以自然的声音向用户说回响应。
此示例实现了一个对话系统,该系统采用基于状态机的对话状态管理方法,并使用意图/槽位范例来解释用户查询。提供的模型演示了通过地理位置和时间查询天气、温度和降雨量,使用免费的 Web 服务作为履行引擎来返回真实的天气数据。虽然范围狭窄,但它包含了构成更复杂和完整的对话系统的所有组件,例如那些部署在电话或家用虚拟助手中的系统。
对话管理器是执行状态机的环境,并与 Riva NLP、ASR 和 TTS 模块集成。可以修改此示例以实现更多模型和更复杂的对话状态管理。它还旨在演示如何将 Riva 集成到现有的虚拟助手和对话系统中,以提供针对 NVIDIA 加速计算平台优化的最先进的对话智能。
通过设计不同的对话状态图,可以创建不同类型的助手。作为一个示例,我们提供了一个 天气 机器人的实现。
要求和设置#
先决条件#
您已访问并登录到 NVIDIA NGC。有关分步说明,请参阅NGC 入门指南。
设置 Riva 服务是先决条件,因为应用程序的各个组件都依赖于这些服务的可用性。天气机器人假定 Riva 端点提供以下模型 – ASR、TTS、NLP(天气领域意图和槽位模型)。在 Riva 服务启动并运行后,才能继续运行此应用程序。
Python 3.8(未来版本将添加对其他 Python 版本的支持)。
virtualenv
工具,用于创建 Python 环境。
pip install virtualenv
设置#
git clone https://github.com/nvidia-riva/sample-apps.git
进入 Riva 虚拟助手目录
cd sample-apps/virtual-assistant
创建并启用 Python 虚拟环境。
virtualenv -p python3 apps-env
source apps-env/bin/activate
安装虚拟助手所需的库,包括 Riva 客户端库
升级
pip
pip3 install -U pip
安装 Riva 客户端库
下载 Riva 快速入门脚本(如果尚未完成)。
x.y.z
是 Riva Speech Skills 版本号 - 最新的 Riva 版本号可以在Riva 快速入门指南的使用快速入门脚本进行本地部署部分中找到
ngc registry resource download-version "nvidia/riva/riva_quickstart:x.y.z"
安装 Riva 客户端库。
cd riva_quickstart_v<x.y.z> pip install riva_api-<x.y.z>-py3-none-any.whl
安装 weatherbot Web 应用程序依赖项。
requirements.txt
捕获 weatherbot Web 应用程序所需的所有 Python 依赖项。
pip3 install -r requirements.txt # For Python 3.8
运行演示#
启动 Riva Speech Server(如果尚未完成)。按照Riva 快速入门指南中的步骤操作。
编辑配置文件 config.py,并设置
Riva 语音服务器 URL。这是可以访问 Riva 服务的端点。
weatherstack API 访问密钥。VA 使用 weatherstack 进行天气履行,即当识别出天气意图时,将从 weatherstack 获取实时天气信息。注册 weatherstack 的免费套餐,并获取您的 API 访问密钥。
代码片段将如下例所示。
riva_config = {
"RIVA_SPEECH_API_URL": "<IP>:<PORT>", # Replace the IP & port with your hosted Riva endpoint
...
"WEATHERSTACK_ACCESS_KEY": "<API_ACCESS_KEY>", # Get your access key at - https://weatherstack.com/
...
}
运行虚拟助手应用程序
python3 main.py
在浏览器中打开 https://IP:8009/rivaWeather,其中 IP 是应用程序运行的机器的 IP。例如,对于本地机器,请访问 https://127.0.0.1:8009/rivaWeather/。
示例用例#
可以向机器人询问以下类型的问题
柏林的天气怎么样?
天气怎么样?
哪个地点?
明天旧金山的天气怎么样?
加利福尼亚城呢?
星期五巴黎的温度是多少?
现在旧金山冷吗?
明天底特律会下雨吗?
西雅图的降雨量是多少?
下周圣克拉拉会是晴天吗?
今天多云吗?
明天密尔沃基会下雪吗?
目前多伦多有多少雪?
现在湿度有多大?
迈阿密的湿度是多少?
局限性#
提供的示例不是完整的聊天机器人,而是旨在作为如何使用 Riva 构建基本的面向任务的聊天机器人的简单示例。因此,意图分类器和槽位填充模型是用少量数据训练的,预计不会非常准确。
Riva NLP 示例支持天气、温度、降雨、湿度、晴天、多云和降雪检查的意图。它不支持一般的对话式查询或其他领域。
Riva NLP 示例仅支持 1 个城市槽位。它也没有考虑与查询相关的日期。
该示例最多支持四个并发用户。此限制不是因为 Riva,而是因为正在使用的 Web 框架(Flask 和 Flask-ScoketIO)。套接字连接用于将音频流式传输到 (TTS) 和从 (ASR) 流式传输;您无法维持超过四个并发套接字连接。
聊天机器人应用程序未针对多个并发用户的低延迟进行优化。
在 Firefox 浏览器上的聊天机器人示例中观察到一些不稳定的问题。最常见的问题是 TTS 输出被某些麦克风增益值的 ASR 视为输入。
许可证#
NVIDIA Riva 许可协议包含在产品中。许可证也随模型应用程序 zip 文件一起提供。通过拉取和使用 Riva SDK 容器、下载模型或使用此处的示例应用程序,您接受这些许可的条款和条件。