重要提示

您正在查看 NeMo 2.0 文档。此版本引入了 API 的重大更改和一个新的库 NeMo Run。我们目前正在将 NeMo 1.0 中的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档

使用 C++ 后端部署到生产环境#

警告

TN/ITN 已从 NVIDIA/NeMo 存储库过渡到独立的 NVIDIA/NeMo-text-processing 存储库。所有更新和讨论/问题都应转到新的存储库。

NeMo-text-processing 提供了部署 TN 和 ITN 以用于生产环境的工具 [TEXTPROCESSING-DEPLOYMENT2]。它使用 Sparrowhawk [TEXTPROCESSING-DEPLOYMENT1] – Google 的开源 C++ 框架。使用 NeMo-text-processing 编写的语法可以导出到 OpenFST 存档文件 (FAR) 中,并放入 Sparrowhawk。

要求#

快速开始#

如何运行示例

# export English TN grammars and return prompt inside docker container
cd NeMo-text-processing/tools/text_processing_deployment
bash export_grammars.sh --GRAMMARS=tn_grammars --LANGUAGE=en --INPUT_CASE=cased

# export English ITN grammars and return prompt inside docker container
cd NeMo-text-processing/tools/text_processing_deployment
bash export_grammars.sh --GRAMMARS=itn_grammars --LANGUAGE=en

参数:#

  • GRAMMARS - tn_grammarsitn_grammars,用于导出 TN 或 ITN 语法。

  • LANGUAGE - en 代表英语。单击此处查看完整语言列表。

  • INPUT_CASE - casedlower_cased(ITN 在这两者之间没有区别,仅用于 TN)。

  • MODE - 默认情况下为 export,它在 Docker 内部返回提示符。如果 --MODE=test 在容器内部运行 NeMo-text-processing pytests。

  • OVERWRITE_CACHE - 是否重新导出语法或从缓存加载。默认情况下为 True

  • FORCE_REBUILD - 如果依赖项更新,是否重建 Docker 镜像。默认情况下为 False

详细流程#

export_grammars.sh 按顺序运行以下步骤

转到脚本文件夹

cd NeMo-text-processing/tools/text_processing_deployment
  1. 用 Python 编写的语法导出到 OpenFST 存档文件 (FAR)。具体来说,来自 nemo_text_processing 的语法 ClassifyFstVerbalizeFst 被导出并分别保存到 ./LANGUAGE/classify/tokenize_and_classify.far./LANGUAGE/verbalize/verbalize.far

python pynini_export.py <--output_dir .> <--grammars GRAMMARS> <--input_case INPUT_CASE> <--language LANGUAGE>

警告

TN 和 ITN 语法默认保存到同一文件中。

  1. Docker 镜像使用依赖项构建,包括 ThraxSparrowhawk

bash docker/build.sh
  1. 通过在 Docker 内部挂载语法目录 LANGUAGE/classify/LANGUAGE/verbalize/ 将语法插入到生产后端。返回 Docker 提示符。

# launch container with the exported grammars
bash docker/launch.sh
  1. 在 Docker 容器中运行系统。

echo "ITN result: two dollars fifty. TN result: $2.50" | ../../src/bin/normalizer_main --config=sparrowhawk_configuration.ascii_proto

这将返回 “ITN 结果:$2.50。TN 结果:two dollars fifty cents”

有关更多详细信息,请参阅 WFST 资源

参考文献#

[TEXTPROCESSING-DEPLOYMENT1]

Alexander Gutkin、Linne Ha、Martin Jansche、Knot Pipatsrisawat 和 Richard Sproat。《低资源语言的 TTS:孟加拉语合成器》。载于第 10 届语言资源和评估会议。2016 年。

[TEXTPROCESSING-DEPLOYMENT2]

Yang Zhang、Evelina Bakhturina、Kyle Gorman 和 Boris Ginsburg。《NeMo 逆文本规范化:从开发到生产》。2021 年。arXiv:2104.05055