翻译概述#

NVIDIA Riva 翻译是一个基于 神经网络 的框架。Riva 翻译在语言对之间翻译文本,即将文本从一种语言翻译成另一种语言。例如,我们希望机器将一种语言(我们称之为源语言)的文本翻译成另一种语言(我们称之为目标语言)的相应文本。这些模型使用 NVIDIA NeMo 进行训练;NeMo 是一个用于构建新的最先进的对话式 AI 模型的工具包。NeMo 具有用于自动语音识别 (ASR)、自然语言处理 (NLP)、神经机器翻译 (NMT) 和文本到语音 (TTS) 模型的独立集合。

有关翻译模型架构和训练的更多信息,请参阅 NeMo 机器翻译文档

支持的语言对#

NVIDIA Riva 翻译服务支持以下语言对的模型

1.	English (en) to Simplified Chinese (zh-CN)
2.	Simplified Chinese (zh-CN) to English (en)
3.	English (en) to Traditional Chinese (zh-TW)
4.	Traditional Chinese (zh-TW) to English (en)
5.	English (en) to Russian (ru)
6.	Russian (ru) to English (en)
7.	English (en) to German (de)
8.	German (de) to English (en)
9.	English (en) to European Spanish (es-ES)
10.	European Spanish (es-ES) to English (en)
11.	English (en) to LATAM Spanish (es-US)
12.	LATAM Spanish (es-US) to English (en)
13.	English (en) to French (fr)
14.	French (fr) to English (en)
15.	English (en) to Danish (da)
16.	Danish (da) to English (en)
17.	English (en) to Greek (el)
18.	Greek (el) to English (en)
19.	English (en) to Finnish (fi)
20.	Finnish (fi) to English (en)
21.	English (en) to Hungarian (hu)
22.	Hungarian (hu) to English (en)
23.	English (en) to Italian (it)
24.	Italian (it) to English (en)
25.	English (en) to Lithuanian (lt)
26.	Lithuanian (lt) to English (en)
27.	English (en) to Latvian (lv)
28.	Latvian (lv) to English (en)
29.	English (en) to Dutch (nl)
30.	Dutch (nl) to English (en)
31.	English (en) to Norwegian (no)
32.	Norwegian (no) to English (en)
33.	English (en) to Polish (pl)
34.	Polish (pl) to English (en)
35.	English (en) to European Portuguese (pt-PT)
36.	European Portuguese (pt-PT) to English (en)
37.	English (en) to Brazilian Portuguese (pt-BR)
38.	Brazilian Portuguese (pt-BR) to English (en)
39.	English (en) to Romanian (ro)
40.	Romanian (ro) to English (en)
41.	English (en) to Slovak (sk)
42.	Slovak (sk) to English (en)
43.	English (en) to Swedish (sv)
44.	Swedish (sv) to English (en)
45.	English (en) to Japanese (ja)
46.	Japanese (ja) to English (en)
47.	English (en) to Hindi (hi)
48.	Hindi (hi) to English (en)
49.	English (en) to Korean (ko)
50.	Korean (ko) to English (en)
51.	English (en) to Estonian (et)
52.	Estonian (et) to English (en)
53.	English (en) to Slovenian (sl)
54.	Slovenian (sl) to English (en)
55.	English (en) to Bulgarian (bg)
56.	Bulgarian (bg) to English (en)
57.	English (en) to Ukrainian (uk)
58.	Ukrainian (uk) to English (en)
59.	English (en) to Croatian (hr)
60.	Croatian (hr) to English (en)
61.	English (en) to Arabic (ar)
62.	Arabic (ar) to English (en)
63.	English (en) to Vietnamese (vi)
64.	Vietnamese (vi) to English (en)
65.	English (en) to Turkish (tr)
66.	Turkish (tr) to English (en)
67.	English (en) to Indonesian (id)
68.	Indonesian (id) to English (en)
69.	English (en) to Czech (cs)
70.	Czech (cs) to English
71.	English (en) to Thai (th)
72.	Thai (th) to English

翻译功能#

Riva 翻译目前提供一个 API,用于使用在 NeMo 机器翻译 中训练的模型在语言对之间进行翻译。支持仅限于 Megatron Multilingual 模型架构。

Megatron Multilingual 模型支持多种语言之间的翻译

  • en_any:从英语翻译成任何支持的语言。

  • any_en:从任何支持的语言翻译成英语。

  • any_any:在任何支持的语言之间进行翻译。

除了英语外,Megatron 模型还支持其他 36 种语言:丹麦语、德语、希腊语、欧洲西班牙语、拉丁美洲西班牙语、芬兰语、法语、匈牙利语、意大利语、立陶宛语、拉脱维亚语、荷兰语、挪威语、波兰语、欧洲葡萄牙语、巴西葡萄牙语、罗马尼亚语、俄语、斯洛伐克语、瑞典语、简体中文、繁体中文、日语、印地语、韩语、爱沙尼亚语、斯洛文尼亚语、保加利亚语、乌克兰语、克罗地亚语、阿拉伯语、越南语、土耳其语、印度尼西亚语、捷克语和泰语。

Riva 翻译使您能够将多个句子 batch 在一起,以提供更快的翻译体验。使用翻译客户端,您可以在单个请求中 batch 最多 8 个句子进行翻译。batch 大小默认为 8,可以使用客户端中的 batch_size 参数进行调整。

翻译排除#

最新的更新使您能够执行翻译排除。这可以使用容器功能或模型本身来完成。对于与模型更新一起使用,请将单词/短语括在 “Copy” HTML 标签 (<cp></cp>) 中。对于容器支持,请将应保持不变的单词或短语括在 “Do not translate” HTML 标签 (<dnt></dnt>) 中,文本将按原样保留在其源语言中。

示例输入:“<dnt>NVIDIA Riva</dnt> <cp>Speech-to-Speech Translation (S2S)</cp> 服务在语言对之间翻译音频。”

自定义翻译词典#

Riva NMT 支持提供文本词典,以获取服务器输出的特定单词的所需翻译。此自定义词典必须包含一个单词,后跟所需的翻译,两者都用双井号 ## 符号分隔。不同的单词和翻译对可以在输入词典文件的新行中提供。输入词典文件可以在从客户端配置请求时在 dnt_phrases 字段 中传递。您还可以使用此字段执行翻译排除,只需在输入词典文件的新行中放置一个不带双井号 ## 符号的单词,它将以未翻译的形式出现在输出中。

语音到语音翻译 (S2S)#

NVIDIA Riva 语音到语音翻译 (S2S) 服务在语言对之间翻译音频,即将音频从一种源语言翻译成另一种目标语言。S2S 以音频流或音频缓冲区作为输入,并返回生成的音频文件。Riva S2S 服务在内部由 Riva ASR、NMT 和 TTS 管道组成。Riva S2S 服务支持流式模式。双语和多语言模型使用 NVIDIA NeMo 进行训练;NeMo 是一个用于构建新的最先进的对话式 AI 模型的工具包。NeMo 具有用于自动语音识别 (ASR)、自然机器翻译 (NMT) 和文本到语音 (TTS) 模型的独立集合。

支持的 S2S 模型#

S2S 功能支持以下 ASRNMTTTS 模型。

语音到文本翻译 (S2T)#

NVIDIA Riva 语音到文本翻译 (S2T) 服务在给定的语言对之间将音频转录为文本,即将音频从一种源语言转录为目标语言。S2T 以音频流或音频缓冲区作为输入,并返回转录文本。Riva S2T 服务在内部由 Riva ASR 和 NMT 管道组成,并支持流式模式。双语和多语言模型使用 NVIDIA NeMo 进行训练;NeMo 是一个用于构建新的最先进的对话式 AI 模型的工具包。NeMo 具有用于自动语音识别 (ASR) 和自然机器翻译 (NMT) 模型的独立集合。

支持的 S2T 模型#

S2T 功能支持以下 ASRNMT 模型。

模型部署#

与所有 Riva 模型一样,Riva S2S 和 S2T 需要以下步骤

  1. NeMo 部分中概述的 .nemo 文件为每个模型创建 .riva 文件。

  2. 使用 riva-build 为每个 Riva Speech AI Skill 创建 .rmir 文件。

  3. 使用 riva-deploy 创建模型目录。

  4. 使用 riva_server 部署模型目录。

可以自定义模型,如 ASR 自定义NMT 自定义模型TTS 自定义模型 中所示。

多模型部署#

Riva 服务器支持同时部署多个模型;最多可达 GPU 内存的限制。因此,单个服务器进程可以托管用于各种语言对的模型,如上所述。

对于文本翻译客户端,可以通过使用客户端请求的 --model_name 参数来提供模型名称。此值必须与用于创建模型的 riva-build 参数的值匹配。如果未提供模型名称,它将从提供的源语言和目标语言对自动派生。

要获取服务器上可用的模型和语言对,请使用 ListSupportedLanguagePairs API。

当从客户端应用程序接收请求时,Riva 服务器根据客户端请求的 protobuf 对象 StreamingTranslateSpeechToSpeechConfig(对于 S2S)和 StreamingTranslateSpeechToTextConfig(对于 S2T)选择要使用的已部署模型。在可能有多个模型能够满足客户端请求的情况下,将随机选择一个模型。

S2S 和 S2T 的标点符号和逆文本规范化 (ITN)#

S2S 和 S2T 服务支持标点符号和 ITN。可以使用客户端选项中的以下参数启用或禁用它们

当设置为 true(默认)时,--automatic_punctuation 启用标点符号;当设置为 false 时, --verbatim_transcripts 启用 ITN。

BLEU 指标#

BLEU 分数 评估 Riva 管道的质量。

当启用标点符号和 ITN 时,该管道的 BLEU 分数为 27

当禁用标点符号和 ITN 时,该管道的 BLEU 分数为 21.5