语音人工智能用于各种应用,包括授权人工智能的呼叫中心、虚拟助理的语音接口以及视频会议中的实时字幕。语音人工智能包括自动语音识别( ASR )和文本语音转换( TTS )。 ASR 管道接收原始音频并将其转换为文本, TTS 管道接收文本并将其转换为音频。
开发和运行这些实时语音人工智能服务是一项复杂而艰巨的任务。构建语音 AI 应用程序需要数十万小时的音频数据、基于特定用例构建和自定义模型的工具,以及可扩展的部署支持。它还意味着实时运行,与用户进行自然交互的时间远低于 300 毫秒。 NVIDIA Riva 简化了开发语音 AI 服务的端到端流程,并为类人交互提供实时性能。
Riva SDK
NVIDIA Riva 是用于开发语音 AI 应用程序的 GPU 加速 SDK 。 Riva 旨在帮助您轻松快速地访问对话 AI 功能。只需几个命令,您就可以通过 API 操作访问高性能服务并尝试演示。
图 1 . Riva 构建语音应用程序的工作流
Riva SDK 包括 pretrained speech and language models 、 NVIDIA 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 分钟的演员数据。
图 2 . Riva 服务能力
为了充分利用 GPU 的计算能力, Riva 基于 NVIDIA Triton 推理服务器,为神经网络和集成管道提供服务,以便与 NVIDIA TensorRT 高效运行。
Riva 服务通过 gRPC 端点可访问的 API 操作公开,这些操作隐藏了所有复杂性。图 3 显示了系统的服务器端。 gRPC API 操作由运行在 Docker 容器中的 API 服务器公开。他们负责处理所有语音和 NLP 传入和传出数据。
图 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 是一种无编码工具,用于在特定于域的数据集上微调模型。
图 4 。 NVIDIA TAO 工具包管道
例如,要进一步提高 ASR 转录文本的易读性和准确性,请向 ASR 系统添加自定义标点符号和大小写模型,以生成没有这些特征的文本。
从预训练的 BERT 模型开始,第一步是准备数据集。对于培训数据集中的每个单词,目标是预测以下内容:
单词后面的标点符号。
这个词是否应该大写。
数据集准备就绪后,下一步是通过运行先前提供的脚本进行培训。完成培训并达到所需的最终精度后,使用附带的脚本为 NVIDIA Triton 创建模型存储库。
NVIDIA Riva Speech Skills 文档包含有关如何训练或微调其他模型的更多详细信息。这篇文章只展示了使用 TAO 工具包进行定制的众多可能性中的一种。
在 Riva 中部署模型
Riva 是为大规模对话 AI 而设计的。为了帮助您在不同的服务器上高效、可靠地为模型提供服务, NVIDIA 使用 Helm 图表提供了按钮式模型部署(图 5 )。
图 5 。通过修改可用的舵图,可以在 Riva 中部署模型
NGC catalog 中提供的舵图配置可以针对自定义用例进行修改。您可以更改与要部署的模型、存储它们的位置以及如何公开服务相关的设置。
结论
Riva 是 NVIDIA Developer Program 成员的公开测试版。对于您的实时转录、虚拟助理或自定义语音实现, Riva 将支持您的开发。如果您正在大规模部署, Riva Enterprise 将为您大规模部署,并包括 AI 专家的支持。
关于作者
Davide Onofrio 是 NVIDIA 的高级深度学习软件技术营销工程师。他在 NVIDIA 专注于深度学习技术开发人员关注内容的开发和演示。戴维德在生物特征识别、虚拟现实和汽车行业担任计算机视觉和机器学习工程师已有多年经验。他的教育背景包括米兰理工学院的信号处理博士学位。
Vinh Nguyen 是一位深度学习的工程师和数据科学家,发表了 50 多篇科学文章,引文超过 2500 篇。在 NVIDIA ,他的工作涉及广泛的深度学习和人工智能应用,包括语音、语言和视觉处理以及推荐系统。
Siddharth Sharma 是NVIDIA 加速计算的高级技术营销经理。在加入NVIDIA 之前, Siddharth 是 Mathworks Simulink 和 Stateflow 的产品营销经理,与汽车和航空航天公司密切合作,采用基于模型的设计来创建控制软件。
Alex Qi 是英伟达 AI 软件集团的产品经理。她的重点是对话 AI 框架( Riva )和多媒体流 AI / ML ( Maxine )的 AI 软件和应用程序。在加入 NVIDIA 之前,她在领导技术和工程组织中各种角色的具有挑战性的技术项目方面拥有丰富的经验,如数据科学家、计算建模和设计工程。 Alex 拥有麻省理工学院的双学位硕士学位:麻省理工学院斯隆管理学院的 MBA 学位,以及工程机械工程学院的理学硕士学位,她在该学院主要研究机器人技术和人工智能。
审核编辑:郭婷
-
NVIDIA
+关注
关注
14文章
4985浏览量
103035 -
服务器
+关注
关注
12文章
9149浏览量
85402 -
人工智能
+关注
关注
1791文章
47260浏览量
238432
发布评论请先 登录
相关推荐
评论