人工智能/深度学习

介绍 NVIDIA Riva :用于加速语音 AI 应用程序的 GPU 加速 SDK

这篇文章从 2020 年 5 月开始更新.

语音人工智能用于各种应用,包括授权人工智能的呼叫中心、虚拟助理的语音接口以及视频会议中的实时字幕。语音人工智能包括自动语音识别( ASR )和文本语音转换( TTS )。 ASR 管道接收原始音频并将其转换为文本, TTS 管道接收文本并将其转换为音频。

开发和运行这些实时语音人工智能服务是一项复杂而艰巨的任务。构建语音 AI 应用程序需要数十万小时的音频数据、基于特定用例构建和自定义模型的工具,以及可扩展的部署支持。它还意味着实时运行,与用户进行自然交互的时间远低于 300 毫秒。 NVIDIA Riva 简化了开发语音 AI 服务的端到端流程,并为类人交互提供实时性能。

Riva SDK

NVIDIA Riva 是用于开发语音 AI 应用程序的 GPU 加速 SDK 。 Riva 旨在帮助您轻松快速地访问对话 AI 功能。只需几个命令,您就可以通过 API 操作访问高性能服务并尝试演示。

 Diagram shows workflow starting from pretrained models in NGC, TAO toolkit for retraining the models and Riva for optimized speech AI skills to generate high-performance inference.
图 1 . Riva 构建语音应用程序的工作流

Riva SDK 包括 pretrained speech and language modelsNVIDIA TAO Toolkit ,用于在自定义数据集上微调这些模型,以及用于语音识别、语言理解和语音合成的优化端到端技能。

使用 Riva ,您可以轻松地对数据上的最新模型进行微调,以更深入地了解其特定上下文。优化推理以提供运行时间为 150 毫秒( ms )的实时服务,而在 CPU 纯平台上需要 25 秒。

特定于任务的 AI 服务和 gRPC 端点提供现成的高性能 ASR 、 NLP 和 TTS 。所有这些人工智能服务都经过数千小时的公共和内部数据集培训,以达到高精度。您可以开始使用预训练的模型,或者使用自己的数据集对其进行微调,以进一步提高模型性能。

Riva 使用 NVIDIA Triton Inference Server 为多个模型提供服务,以实现高效、稳健的资源分配,并在高吞吐量、低延迟和高精度方面实现高性能。

Riva 技能概述

Riva 为实时转录和虚拟助理等用例提供高度优化的语音识别和语音合成服务。语音识别技能在各种真实世界、特定领域的数据集上进行培训和评估。它包括来自电信、播客和医疗保健的词汇,以在生产用例中提供世界级的准确性。

与 NVIDIA V100 GPU 上的 Tacotron 2 和 WaveGlow 模型相比, Riva 文本到语音或语音合成技能可生成类似人类的语音,并使用非自回归模型在 NVIDIA A100 GPU 上提供 12 倍的性能。此外,该服务使您能够为每个品牌和虚拟助理创建一个自然定制的声音,每天 30 分钟的演员数据。

Diagram shows capabilities in Riva Speech Recognition and Speech Synthesis services such as support for both batch and streaming mode, multiple sampling rates (8,16,22,32, 44, 48 kHz), and models such as Jasper, QuartzNet, CitriNet, Tacotron2, WaveGlow, Fastpitch, and HiFiGAN.
图 2 . Riva 服务能力

为了充分利用 GPU 的计算能力, Riva 基于 NVIDIA Triton 推理服务器,为神经网络和集成管道提供服务,以便与 NVIDIA TensorRT 高效运行。

Riva 服务通过 gRPC 端点可访问的 API 操作公开,这些操作隐藏了所有复杂性。图 3 显示了系统的服务器端。 gRPC API 操作由运行在 Docker 容器中的 API 服务器公开。他们负责处理所有语音和 NLP 传入和传出数据。

Diagram shows the Riva client applications such as desktop, mobile, and laptop interactions with Riva speech recognition and speech synthesis pipelines.
图 3 . Riva 服务管线

API 服务器向 NVIDIA Triton 发送推断请求并接收结果。

NVIDIA Triton 是后端服务器,可同时处理多个 GPU 上的多个神经网络或集成管道的多个推理请求。

对于会话 AI 应用程序,将延迟保持在给定阈值以下至关重要。这种延迟要求转化为推断请求一到达就执行。要使 GPU 饱和并提高性能,必须增加批大小并延迟推理执行,直到收到更多请求并形成更大的批。

NVIDIA Triton 还负责在一个请求和另一个请求之间切换网络的上下文。

Riva 可以通过从 NGC 下载适当的模型和容器的简单脚本直接安装在裸机上,也可以通过 Helm chart 将其部署在 Kubernetes 上。

下面简要介绍一下如何与 Python 交互。 Riva 接口通过简单的 Python API 操作,使客户端与 Riva 服务器的通信更加容易。例如,下面介绍如何通过三个步骤创建对现有 TTS Riva 服务的请求。

首先,导入 Riva API :

import src.riva_proto.riva_tts_pb2 as rtts
import src.riva_proto.riva_tts_pb2_grpc as rtts_srv
import src.riva_proto.riva_audio_pb2 as ri

接下来,创建到 Riva 端点的 gRPC 通道:

channel = grpc.insecure_channel('localhost:50051')
riva_tts = rtts_srv.RivaSpeechSynthesisStub(channel)

然后,创建一个 TTS 请求:

req = rtts.SynthesizeSpeechRequest()
req.text = "We know what we are, but not what we may be?"
req.language_code = "en-US" req.encoding = ri.AudioEncoding.LINEAR_PCM req.sample_rate_hz = 22050 req.voice_name = "ljspeech" resp = riva_tts.Synthesize(req)
audio_samples = np.frombuffer(resp.audio, dtype=np.float32)

使用数据自定义模型

使用 NVIDIA TAO Toolkit ,您可以在 Riva 中使用定制的训练模型(图 4 )。 NVIDIA TAO Toolkit 是一种无编码工具,用于在特定于域的数据集上微调模型。

Diagram shows the workflow of TAO toolkit starting from NGC pretrained model to adding your custom data and deploying it as a Riva skill.
图 4 。 NVIDIA TAO 工具包管道

例如,要进一步提高 ASR 转录文本的易读性和准确性,请向 ASR 系统添加自定义标点符号和大小写模型,以生成没有这些特征的文本。

从预训练的 BERT 模型开始,第一步是准备数据集。对于培训数据集中的每个单词,目标是预测以下内容:

  • 单词后面的标点符号。
  • 这个词是否应该大写。

数据集准备就绪后,下一步是通过运行先前提供的脚本进行培训。完成培训并达到所需的最终精度后,使用附带的脚本为 NVIDIA Triton 创建模型存储库。

NVIDIA Riva Speech Skills 文档包含有关如何训练或微调其他模型的更多详细信息。这篇文章只展示了使用 TAO 工具包进行定制的众多可能性中的一种。

在 Riva 中部署模型

Riva 是为大规模对话 AI 而设计的。为了帮助您在不同的服务器上高效、可靠地为模型提供服务, NVIDIA 使用 Helm 图表提供了按钮式模型部署(图 5 )。

Diagram shows the workflow for deploying TAO model as a Riva skill and highlights the TensorRT optimizations and Triton Inference Server under the hood.
图 5 。通过修改可用的舵图,可以在 Riva 中部署模型

NGC catalog 中提供的舵图配置可以针对自定义用例进行修改。您可以更改与要部署的模型、存储它们的位置以及如何公开服务相关的设置。

结论

Riva 是 NVIDIA Developer Program 成员的公开测试版。对于您的实时转录、虚拟助理或自定义语音实现, Riva 将支持您的开发。如果您正在大规模部署, Riva Enterprise 将为您大规模部署,并包括 AI 专家的支持。

有关更多信息,请参阅 Riva Getting Started

 

Tags