NVIDIA Riva中文手册 (五) —— Riva TTS语音合成API的使用

如何将 Riva TTS API 与开箱即用的语音合成模型一起使用?

本章节将向您介绍 Riva Speech Skills 的 TTS 服务的基础知识,特别介绍如何将 Riva TTS API 与开箱即用的模型一起使用。

NVIDIA Riva 概述

NVIDIA Riva 是一个 GPU 加速的 SDK,用于帮助您构建定制化的语音 AI 应用程序并提供实时性能。Riva 提供丰富的语音和自然语言理解服务,例如:

  • 自动语音识别 (ASR)
  • 文本到语音合成 (TTS)
  • 自然语言处理 (NLP) 服务的集合,例如命名实体识别 (NER)、自动加标点、意图分类等。

使用 Riva TTS API 生成语音

  • Riva TTS 服务基于两阶段管道:Riva 首先使用第一个模型生成梅尔频谱图,然后使用第二个模型生成语音。该管道形成了一个从文本到语音的系统,使您能够从原始转录中合成自然发音的语音,而无需任何例如语音模式或节奏的额外信息。

  • Riva 提供两种最先进的英语语音(一种男性语音和一种女性语音),可以使用 Riva 快速启动脚本轻松部署。 Riva 还支持以各种方式轻松定制 TTS,以满足您的特定需求。

  • 后续的 Riva 版本将包括模型注册等功能,以支持具有相同 API 的多种语言/语音,并支持重新采样到替代采样率。
    有关详细信息,请参阅 Riva TTS 文档


使用 Riva TTS API 进行语音合成“从文字到语音”

1 启动 Riva Speech Skills 服务器和客户端

在运行本脚本之前,按照 Riva 快速入门指南中的说明,首先启动 Riva Speech Skills 服务器和客户端,初始化部署开箱即用的TTS模型并启动客户端服务(默认情况下仅自动部署英文模型,非英语模型需要自定义部署)。

ngc registry resource download-version nvidia/riva/riva_quickstart:2.1.0
cd riva_quickstart_v2.1.0
bash riva_init.sh
bash riva_start.sh
bash riva_start_client.sh
jupyter notebook --ip=0.0.0.0 --allow-root

2 导入 Riva 客户端库

进入Jupyter并打开ipynb文件之后,首先让我们导入一些包括 Riva Client在内的必要的工具库:

import numpy as np
import IPython.display as ipd
import grpc  #google开源的微服务框架

import riva_api.riva_tts_pb2 as rtts # riva tts工具类
import riva_api.riva_tts_pb2_grpc as rtts_srv # riva tts微服务工具类
import riva_api.riva_audio_pb2 as ra# riva音频处理工具类

3 创建一个Riva客户端并连接到Riva Speech API服务器¶

Note:下面的“localhost:50051”是Riva Speech API服务器的本地部署在默认端口上。如果服务器部署在不同的主机上或通过Kubernetes上的Helm图表,请使用适当的URI。

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

4 批处理模式 TTS

  • Riva TTS 支持流式和批处理推理模式。
  • 在批处理模式下,直到生成请求文本的完整音频序列后才会返回音频,并且可以实现更高的吞吐量。
  • 在流式处理模型下,当发出流式请求时,音频会在生成后立即返回,从而减少了大型请求的延迟。

让我们看一个显示批处理模式 TTS API 用法的示例:
以批推理模式向Riva Speech服务器发出一个用于TTS的gRPC请求。

req = rtts.SynthesizeSpeechRequest(
    text = "Is it recognize speech or wreck a nice beach?",
    language_code = "en-US",
    encoding = ra.AudioEncoding.LINEAR_PCM,    # 目前TTS仅支持 LINEAR_PCM音频编码格式
    sample_rate_hz = 44100,                    # 生成44.1KHz采样精度的音频
    voice_name = "English-US-Female-1"         # 生成女性语音样本的声音
)
resp = riva_tts.Synthesize(req)
audio_samples = np.frombuffer(resp.audio, dtype=np.int16)
ipd.Audio(audio_samples, rate=req.sample_rate_hz)

5 了解 TTS API 参数

Riva TTS 在向 gRPC 端点发出文本转语音请求时支持许多选项,如上所示。让我们进一步了解这些参数:

  • language_code - 生成音频的语言。 “en-US”代表英语(美国),是目前唯一支持 OOTB 的语言。
  • encoding - 要生成的音频编码类型,目前仅支持 LINEAR_PCM。
  • sample_rate_hz - 生成音频的采样率,取决于麦克风,通常为 22khz 或 44khz。
  • voice_name - 用于合成音频的语音样本。目前Riva 提供两种 OOTB 语音(English-US-Female-1、English-US-Male-1)

6 深入了解 Riva 功能

  • 现在您已经对 Riva TTS API 有了基本的了解,在此处查看更多 Riva TTS和ASR教程,了解如何使用 Riva TTS的一些高级功能,包括根据您的特定需求定制 TTS。

  • 有关如何在实际应用中使用 Riva 技能的更多示例,您可以关注虚拟助手演示

  • 有关微服务gRPC可以参考 gRPC gRPC & Protocol Buffers

  • 更多的客户端命令行可参考 API Command-line Clients

  • 要了解有关 Riva 技能的更多信息,请访问 NVIDIA Riva 开发者主页NVIDIA Riva | NVIDIA Developer。

  • 更多精彩内容,请扫描下方二维码或者访问https://developer.nvidia.com/zh-cn/developer-program 来加入NVIDIA开发者计划。
    在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值