介紹 NVIDIA Riva:用於加速語音人工智慧應用程式的 GPU 加速 SDK

作者 NVIDIA

本文自 2020 5 月開始更新。

語音人工智慧技術可用於各種應用項目,包括支援代理人類的客服中心、虛擬助理的語音介面,還有視訊會議中的即時字幕。語音人工智慧包括自動語音辨識(automatic speech recognition,ASR)和文字轉語音(text-to-speech,TTS)。ASR 工作流程接收原始音訊並將其轉換為文字,TTS 工作流程接收文字並將其轉換為音訊。

開發和運行這些即時語音人工智慧服務是一件複雜又艱鉅的任務。打造語音人工智慧應用程式要用到數十萬個小時的音訊資料、按照特定應用場合建立及自訂模型的工具,以及具擴充性的部署支援能力。並且需要即時執行,與用戶進行自然互動的時間需遠低於 300 毫秒。NVIDIA Riva 簡化了開發語音人工智慧服務的端到端流程,提供與人類般的即時互動表現。

Riva SDK

NVIDIA Riva 是用於開發語音人工智慧應用程式 GPU 加速的 SDK。Riva 可協助您輕鬆快速的存取對話式人工智慧功能。只要幾個指令,就能通過操作 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.
1Riva 建構語音應用程式的工作流程

Riva SDK 內有預先訓練的語音及語言模型、用於在自訂資料集上微調這些模型的 NVIDIA TAO Toolkit,以及用於語音辨識、語言理解和語音合成的最佳化端到端技能。

有了 Riva 便能輕鬆使用您的資料來微調最先進的模型,以更深入瞭解其特定的說話脈絡。最佳化推論能力以提供執行時間為 150 毫秒的即時服務,若在僅使用 CPU 的平台上則需要 25 秒。

特定任務的人工智慧服務和 gRPC 端點,提供現成的高效能 ASR、NLP 和 TTS。這些人工智慧服務都已使用數千小時的公共和內部資料集進行訓練,以達到高精度的結果。您可開始使用預先訓練好的模型或者使用自己的資料集對其進行微調,以進一步提高模型效能。

Riva 使用 NVIDIA Triton 推論伺服器來服務多個模型,以高效穩健的方式來配置資源,在高處理量、低延遲和高精度方面達到最佳表現。

Riva 技能概述

Riva 為即時轉錄和虛擬助理等應用場合,提供高度最佳化的語音辨識和語音合成服務。使用各種實體環境、特定領域的資料集來訓練和評估語音辨識技能。它包括來自電信、podcast 和醫療等領域的詞彙,以在實際應用場合中提供世界級的準確性。

與 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.
2Riva 服務能力

為了充分利用 GPU 的運算能力,以 NVIDIA Triton 推論伺服器為基礎的 Riva 為神經網路和整體工作流程提供服務,以便與 NVIDIA TensorRT 高效運行。

通過 gRPC 端點可存取的 API 操作公開 Riva 服務,這樣一來便隱藏了所有複雜性。圖 3 顯示了系統的伺服器端。由在 Docker 容器中運行的 API 伺服器公開 gRPC API 操作。它們負責處理所有語音及 NLP 傳入和傳出的資料。

Diagram shows the Riva client applications such as desktop, mobile, and laptop interactions with Riva speech recognition and speech synthesis pipelines.
3Riva 服務工作流程

API 伺服器向 NVIDIA Triton 發送推論請求並接收結果。

NVIDIA Triton 是後端伺服器,可同時處理多個 GPU 上的多個神經網路或整體工作流程的多個推論請求。

對於對話式人工智慧應用程式,必須將延遲維持在特定閾值以下。這種延遲性上的要求轉化為推論請求一到達便執行。為了使 GPU 飽和及提高效能,必須增加批量的規模及延遲執行推論,直到收到更多請求和形成更大的批量。

NVIDIA Triton 還負責在不同的請求之間以狀態切換網路的上下文。

可通過從 NGC 下載適當的模型和容器的簡單腳本直接將 Riva 安裝在裸機上,也能通過 Helm chart 將其部署在 Kubernetes 上。

下面簡單介紹如何與 Riva 進行互動。通過簡單的 Python API 操作,用戶端便能使用 Python 介面與 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 工具套件,便能在 Riva 中使用自訂的訓練模型(圖 4)。NVIDIA TAO 工具套件是一個無需編碼的工具,用於以特定域的資料集來微調模型。

Diagram shows the workflow of TAO toolkit starting from NGC pretrained model to adding your custom data and deploying it as a Riva skill.
4NVIDIA TAO 工具套件工作流程

像是想要進一步提高 ASR 轉錄文字的易讀性和準確性,要在 ASR 系統加入自訂標點符號和大小寫模型,以生成沒有這些特徵的文字。

從預先訓練好的 BERT 模型開始,第一步是準備資料集。對訓練資料集中的每個單字,目標是預測以下內容:

  • 標點符號應在單字後面。
  • 這個單字是否應該大寫。

準備好資料集後,下一步是運行先前提供的腳本進行訓練。完成訓練並達到所需的最終精準度後,使用附帶的腳本建立 NVIDIA Triton 的模型儲存庫。

NVIDIA Riva 語音技巧文件中提供了更多關於如何訓練或微調其他模型的詳細資訊。本文只展示了使用 TAO 工具套件進行自訂的眾多可能性裡的一種。

在 Riva 中部署模型

NVIDIA 為大規模對話式人工智慧而設計出 Riva。為了幫助您在不同的伺服器上高效可靠的為模型提供服務,NVIDIA 使用 Helm chart 提供了按鈕式模型部署(圖 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:透過修改可用的 Helm chart可在 Riva 中部署模型(語意確認)

NGC 目錄中提供的 Helm chart 配置可針對自訂應用場合進行修改。您可更改與要部署的模型、儲存位置及如何公開服務有關的設定值。

結論

NVIDIA 開放 NVIDIA 開發者計畫的成員對 Riva 進行公測。Riva 將支援您開發即時轉錄、虛擬助理或自訂語音等實行內容。如果您將大規模進行部署則可使用 Riva Enterprise,其中還提供人工智慧專家的支援服務。