关于 nvidia-speech-nim
面向使用 NVIDIA Speech NIM 容器化 ASR、TTS 和 NMT 服务规划及实现语音工作流的指南。它帮助 Agent 选择模型与 API 路由、编排语音流程,并考虑音频质量、权利和部署要求。
主要功能
- 01ASR 转写与流式处理
- 02TTS 合成与流式输出
- 03NMT 文本翻译
- 04HTTP、gRPC 和 WebSocket 路由
- 05模型与配置选择
- 06音频质量与权利检查
适用场景
- 01转写实时或录制音频
- 02生成旁白或语音回复
- 03构建语音到语音翻译流程
- 04为实时或批处理选择路由
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ calesthio/ generative-media-skills --skill nvidia-speech-nim安装后在 Claude Code 中输入/nvidia-speech-nim确认已加载。
附带文件EVAL.md
详细介绍
NVIDIA Speech NIM
当 Agent 需要使用 NVIDIA Speech NIM 微服务规划或实现语音工作流,而不是使用通用语音 API 时,使用此技能。将 NVIDIA Speech NIM 视为可部署的容器化语音技术栈:应用通过 HTTP、gRPC 或 WebSocket API 与独立的 ASR、TTS 和 NMT NIM 容器交互;Agent 仍需负责模型/配置文件选择、编排、权利检查、音频保管和质量保证。
除非另有说明,此技能中的信息均已于 2026-07-10 根据 NVIDIA 官方来源核实。
首先对任务进行分类
将用户的请求拆分为一种或多种语音能力:
- ASR/STT:将音频转换为文本,用于转录、字幕、视频字幕、通话分析、会议纪要、语音 Agent 输入,或在 ASR 模型支持翻译时进行语音转文本翻译。
- TTS:将文本转换为语音,用于旁白、本地化配音、对话输出、无障碍访问、自助服务终端/Agent 回复,或经批准的语音克隆。
- NMT:在不同语言之间进行文本翻译。NVIDIA 文档所述的 Speech NIM 翻译路径使用独立的 NMT 容器,并非隐藏在每次 ASR 或 TTS 调用中。
- 语音到语音翻译:由 ASR -> NMT -> TTS 组成的流水线。除非所选模型/模型卡明确提供端到端语音到语音端点,否则不要将其描述为单体 Speech NIM。
- 全双工语音聊天:使用明确选定的 Nemotron VoiceChat 风格模型;不要假设普通的 ASR + TTS NIM 本身就支持双工对话。
如果用户只提到“speech NIM”,则将 ASR、TTS 和 NMT 作为语音提供方的整体选择。如果用户只需要转录或旁白集成,则将范围限定为所需容器,但要明确展示各路径之间的边界。
已记录的能力概览
请将以下内容视为已记录的事实,而非偏好。
- NVIDIA Speech NIM 微服务将 ASR、TTS 和 NMT 模型部署为独立容器。应用调用 NIM API,而非直接调用原始模型。来源:How NVIDIA Speech NIM Microservices Work。
- ASR NIM 将语音转换为文本,并支持流式和离线模式。流式模式会在音频到达时返回部分转录文本;离线模式处理完整文件并返回完整转录文本。来源:About NVIDIA ASR NIM。
- TTS NIM 将文本转换为语音,并支持离线合成和流式合成。离线模式返回完整音频响应,且 gRPC 路径受 4 MB 消息大小限制;流式模式返回音频块,适用于降低首段音频的等待时间或处理长文本。来源:About NVIDIA TTS NIM。
- NMT NIM 在不同语言之间翻译文本。NVIDIA 将实时翻译描述为由应用编排的 ASR NIM、NMT NIM 和 TTS NIM 链路。来源:NVIDIA Speech NIM overview 和 About NVIDIA NMT NIM。
- ASR API:HTTP REST 用于简单的离线转录/翻译,gRPC 用于批量和流式识别,WebSocket 用于低延迟实时会话。来源:ASR API references。
- TTS API:HTTP REST 用于列出语音以及离线/流式合成,gRPC 用于批量和流式合成,WebSocket 用于实时交互式合成。来源:TTS API references。
- ASR HTTP 的
/v1/audio/transcriptions接受 WAV、OPUS 和 FLAC 格式;必须提供language或model。/v1/audio/translations仅适用于具备翻译能力的模型,例如 NVIDIA REST 文档中的 Canary 或 Whisper。来源:ASR HTTP REST API。 - TTS HTTP 的
/v1/audio/synthesize返回 WAV 文件;/v1/audio/synthesize_online会流式传输原始 16 位有符号 LPCM 音频块,不含 WAV 文件头。文档所述 HTTP 端点的每次请求文本长度上限为 2,000 个规范化字符。来源:TTS HTTP REST API。 - TTS 语音名称来自
/v1/audio/list_voices,格式为Model.LOCALE.Speaker或Model.LOCALE.Speaker.Emotion;情感后缀是否可用因说话人而异。来源:TTS HTTP REST API。 - Magpie TTS Zeroshot 和 Magpie TTS Flow 支持文档所述的零样本语音克隆。两者均需获得访问批准;参考提示音频应为清晰的 16 位单声道 WAV,采样率为 22.05 kHz 或更高,时长约 3-10 秒。Flow 需要转录文本,且仅支持离线模式;Zeroshot 支持流式和离线模式。来源:Cloning a Voice with Zero-Shot TTS。
- NIM 容器提供健康状态、版本、元数据、模型和 Prometheus 风格的指标端点。向生产环境发送音频前,请先执行就绪检查。来源:ASR HTTP REST API、TTS HTTP REST API 和 Observability。
模型和配置文件选择
应在部署时选择,而不是等服务运行后再选择。NVIDIA 将 CONTAINER_ID 和 NIM_TAGS_SELECTOR 列为选择容器和部署配置文件的途径。请查看支持矩阵,了解当前的配置文件名称、内存要求、推理模式、语言支持、WSL2 状态和特定模型的说明。
ASR 选择
建议:
- 英语实时字幕、语音 Agent 输入和单语言呼叫中心转录:从流式英语 Parakeet/Nemotron ASR 配置文件开始,然后用有代表性的音频验证词错误率和端点检测。
- 长篇预录音频、媒体库、合规审查或字幕补录:选择离线或真正离线配置文件。NVIDIA 记录了真正离线的 Parakeet 配置文件,这些配置文件使用 VAD 将长文件分割为最长 30 秒的片段,以便并行离线处理。
- 多语言流式输入:当文档列出的语言涵盖目标语言时,使用多语言流式模型/配置文件,例如 Parakeet RNNT Multilingual 或 Nemotron ASR Streaming
type=multi。部分配置文件支持自动语言检测;部分配置文件则需要语言代码才能获得更高准确率。 - 音频语音转文本翻译:使用文档注明支持音频翻译的模型,例如通过
/v1/audio/translations使用 Canary 或 Whisper;否则,先运行 ASR,再运行 NMT。 - 多位说话者:在可用时,选择文档注明支持 VAD 和 Sortformer 说话人分离的配置文件。不要承诺每种 ASR 模型或配置文件都支持说话人分离。
截至 2026-07-10 已验证的 ASR 硬件/软件要求:ASR NIM 要求 NVIDIA GPU 计算能力为 8.0 或更高,且至少具备 16 GB VRAM;建议使用 Linux Ubuntu 22.04 或更高版本;列出的要求还包括 NVIDIA Driver >= 535 和 NVIDIA Docker >= 23.0.1。WSL2 支持取决于模型,ASR 矩阵建议 WSL2 使用 Windows 11 Build 23H2+、driver >= 570、Ubuntu 24.04 和 Podman。来源:ASR 支持矩阵。
TTS 选择
建议:
- 用于生产旁白的固定多语言语音:当 Magpie TTS Multilingual 文档列出的九种语言区域适用于任务时,优先选择它:en-US、es-US、fr-FR、de-DE、zh-CN、vi-VN、it-IT、hi-IN、ja-JP。
- 使用社区发布模型实现更广泛的多语言 TTS:如果 Chatterbox TTS Multilingual 文档列出的语言和许可符合任务要求,可选择该模型;请明确标注其发布方为 Resemble AI 社区,而非 NVIDIA。
- 经批准的语音匹配:仅在明确确认权利/同意且已获准访问后,使用 Magpie TTS Zeroshot 或 Magpie TTS Flow。
- 低延迟对话输出:使用流式 TTS 或 WebSocket,而不是离线 WAV 合成。
- 批量旁白或基于文件的本地化:使用离线合成,按照自然的句子/段落边界对文本分块并遵守端点限制,同时保持语音和采样率设置稳定。
截至 2026-07-10 已验证的 TTS 硬件/软件要求:TTS NIM 要求 NVIDIA GPU 计算能力为 8.0 或更高,且至少具备 16 GB VRAM;建议使用 Linux Ubuntu 22.04 或更高版本;列出的要求还包括 NVIDIA Driver >= 535 和 NVIDIA Docker >= 23.0.1。TTS 支持矩阵列出的所有 TTS 模型均为 FP16。来源:TTS 支持矩阵。
NMT 选择
当任务需要文本翻译、语音到语音翻译、本地化审校,或在 ASR 后进行术语控制时,请使用 NMT。文档将 Riva Translate 1.6b 作为 NMT 模型;容器名称为 riva-translate-1_6b,而提供服务的模型可能显示为 megatronnmt_any_any_1b。根据 NVIDIA 文档,它支持 36 种语言之间的任意到任意翻译。来源:关于 NVIDIA NMT NIM。
对于不得翻译或必须以特定方式翻译的品牌、产品和技术术语,请使用 <dnt>...</dnt> 标签或自定义词典。如果输出出现截断,请增大 --max-len-variation,以适应形态复杂的目标语言。来源:关于 NVIDIA NMT NIM。
经核实的 NMT 硬件/软件要求边界(截至 2026-07-10):NMT NIM 要求 GPU 计算能力为 8.0 或更高,且显存至少为 16 GB;建议使用 Linux Ubuntu 22.04 或更高版本;列出的要求还包括 NVIDIA Driver >= 535 和 NVIDIA Docker >= 23.0.1。来源:NMT 支持矩阵。
API 路由选择
根据交互模式选择客户端路由:
- HTTP REST:最适合简单的离线测试、基于 curl 的 CI 检查、与语言无关的集成、单个完整文件以及基于文件的 TTS。推理前请使用
/v1/health/ready。 - gRPC:最适合功能更丰富的生产客户端、流式 ASR/TTS、更丰富的 Riva 协议功能,以及使用 NVIDIA 的 Riva Python 客户端或提供的脚本。
- WebSocket 实时连接:最适合浏览器或基于事件的低延迟交互会话。ASR 连接到
ws://<address>:9000/v1/realtime?intent=transcription;TTS 连接到ws://<address>:9000/v1/realtime?intent=synthesize。
对于 Python 客户端,NVIDIA 提供了 pip install -U nvidia-riva-client 安装命令,以及 nvidia-riva/python-clients 仓库,其中包含可直接使用的脚本,用于调用 Speech NIM 服务。来源:安装 NVIDIA Riva Python 客户端。
生产环境启发式建议
以下启发式建议旨在提升生产质量;在将其视为保证之前,请先使用有代表性的音频进行验证。
- 上传前,将 ASR 音频预处理为稳定的采样率和声道布局。保留未经修改的原始音频,并存储带有来源信息的派生 WAV/FLAC 中间文件。
- 对于 ASR,应在特定领域的样本集上测量 WER/CER,而不只是使用通用音频片段。样本应涵盖口音、噪声、串音、电话带宽、背景音乐,以及产品实际使用的麦克风/编解码器。
- 对于实时 ASR,应分别调整分块时长、端点检测、中间结果、标点和说话人分离。最低延迟与最佳最终转录结果是不同的目标。
- 对于说话人分离,应独立验证“谁在何时说话”,而不是只看转录质量。转录干净但说话人标签错置,仍属于生产故障。
- 对于 TTS,应按语义分块生成,而不是按任意字符窗口切分。检查跨块韵律、呼吸声/噪声底、发音漂移和响度一致性。
- 对于语音克隆,应在生成前准备审批材料:说话人身份、同意证据、允许使用的脚本/用途、参考音频来源、到期/撤销条款,以及存储/删除计划。
- 对于本地化,应先统一术语,再提升语言流畅度。进行润色前,先通过词典或“不翻译”标签锁定产品名称、缩写、UI 标签、法律用语以及医疗/金融术语。
- 对于语音到语音翻译,应为各阶段预留延迟预算:ASR 端点检测 + NMT + TTS 首块延迟 + 网络抖动。未经整条链路的测量,不要承诺“实时口译”。
- 在首批用户流量到来前,缓存模型资产并预热服务。首次启动可能涉及模型下载或配置文件优化,尤其是在 RMIR 于目标 GPU 上生成优化引擎时。
- 每次生产运行都应记录已部署的容器映像、
NIM_TAGS_SELECTOR、/v1/version、/v1/metadata、驱动程序版本、GPU 型号和 API 路由。
权利、同意、隐私和许可
在发送或生成用户语音之前,先完成以下事项。
- 确认拥有输入音频的相关权利。对通话、会议或医疗/法律内容进行转录,可能需要获得同意、设置数据保留控制,并根据司法管辖区要求发出通知。
- 确认拥有输出语音的相关权利。除非用户已获得说话者的明确授权,且授权涵盖参考音频、脚本、分发渠道、地理区域和时间段,否则绝不克隆或模仿他人的声音。
- 区分可自托管的数据保管方式与托管/试用端点。自托管可以让语音数据留在用户选择的基础设施中,但仍需根据已部署的 NVIDIA 条款以及组织的隐私和安全控制,审查日志、指标、模型下载、许可检查和运营遥测。
- 除非用户使用符合生产要求的托管合作伙伴渠道,否则应将 NVIDIA API Catalog 托管端点视为试用/原型开发用途。NVIDIA 的常见问题说明,Developer Program 访问权限仅用于原型开发/研究/开发/测试;生产用途需要 NVIDIA AI Enterprise 或符合生产要求的合作伙伴端点。来源:NVIDIA NIM FAQ。
- 对于生产环境中的自托管 NIM,应确认拥有 NVIDIA AI Enterprise 许可,或具备其他有效的生产许可途径。NVIDIA 的开发者资料指出,生产部署与 NVIDIA AI Enterprise 提供的保障、支持和 API 稳定性相关。来源:NIM for Developers 和 NVIDIA NIM FAQ。
- 对于自定义 TTS 应用,NVIDIA 的 AI Product Terms 规定,客户必须对用于生成新内容的内容拥有充分的权利和许可,并对自定义 TTS 应用的分发/服务用途作出限制。来源:Product Specific Terms for AI Products。
- 对于 API Trial Service 的使用,NVIDIA 的 API Trial Terms 规定,用户内容和生成内容仅可在会话期间用于提供 API 服务;除针对特定服务或安全/欺诈监控的说明外,会话结束后不会存储或使用这些内容。来源:NVIDIA API Trial Terms of Service PDF。
- 审查企业软件条款中的数据收集说明。NVIDIA Software License Agreement 说明,数据收集用于配置/优化、服务交付、合规/欺诈检测、产品改进及相关遥测类别。来源:NVIDIA Software License Agreement。
如果用户无法确认声音使用权或受监管数据的处理方式,请拒绝克隆声音,并提出更安全的替代方案:使用标准语音、使用者签署同意书后录制的语音、仅输出转录文本,或在推理前仅在本地进行脱敏处理。
完整示例:用于字幕生成的离线 ASR
生产目标:将录制的培训视频转换为带时间戳、可编辑且经过质量审核的字幕。
决策:
- 如果音频已预先录制且不要求交互式延迟,请使用 ASR NIM 离线模式或真正离线的配置。
- 如果需要词级时间偏移和更丰富的转录字段,请使用 gRPC/Riva 客户端;如果只需提取简单文本,则使用 HTTP。
- 如果支持且需要,请启用标点功能,但字幕中的标点应手动审核。
HTTP 冒烟测试示例:
curl -sS http://localhost:9000/v1/health/ready
curl -sS http://localhost:9000/v1/audio/transcriptions \
-F language=en-US \
-F response_format=json \
-F file="@training_clip.wav" \
--output transcript.json
QA 检查清单:
- 从 5-10 分钟的音频中分层抽样,并与人工参考进行对比。
- 检查专业名词、产品名称、数字、货币和首字母缩略词。
- 如果使用了说话人分离配置,请单独验证说话人标签。
- 将原始音频、标准化音频、转录文本、模型配置和审核备注一并保存。
- 在完成转录审核前,不要将字幕直接嵌入视频。
可能的故障模式:
- 为语码转换选择了错误的语言或配置。
- 转录效果很好,但缺少可用的词级时间信息。
- 说话人分离标签在重叠语音中逐渐错位。
- 需要更丰富输出时却使用了 HTTP 路由,而不是 gRPC 路由。
完整示例:低延迟语音 Agent 循环
生产目标:让自助服务终端或 Agent 听取用户的简短话语并说出回应。
决策:
- ASR:通过 gRPC 或 WebSocket 使用流式配置;只有当对话管理器能够处理修正时,才启用中间结果。
- NMT:只有在需要跨语言支持时才纳入;否则避免增加额外的延迟阶段。
- TTS:使用流式 TTS 或 WebSocket 路由,以便在完整回应合成完毕前就开始播放。
- 部署:将 ASR 和 TTS 作为独立容器运行,以便分别扩缩容。
运行计划:
- 预热 ASR 和 TTS 容器,并轮询检查就绪状态。
- 分块发送麦克风音频;将最终转录文本的置信度和端点检测结果与中间文本分开处理。
- 将最终文本或稳定的部分文本发送到对话系统。
- 按短语边界拆分回应文本,并开始 TTS 流式传输。
- 衡量从用户停止说话到首次听到输出的总轮次延迟,而不只是模型延迟。
- 记录丢失的数据块、重连、健康检查失败和请求时长指标。
QA 检查清单:
- 测试插话、静音、简短确认语、嘈杂背景和不同口音。
- 验证未经同意不会将字幕/转录文本泄露到分析存储中。
- 如果部署环境要求披露,请确认所有生成的语音输出都已标注或披露。
完整示例:经批准的语音克隆本地化
生产目标:使用经过批准的员工语音参考,为内部培训模块进行本地化。
决策:
- 使用 NMT,并通过禁止翻译标签或自定义词典处理产品术语。
- 仅当已获得访问批准且说话人同意文件完整时,才使用零样本 TTS 模型。
- 如果有干净的提示词转录文本,且离线高保真匹配很重要,请使用 Flow;如果需要流式传输或不需要提示词转录文本,请使用 Zeroshot。
必需的保管记录:
- 说话人姓名或假名 ID。
- 书面同意范围:语言、脚本、分发方式、期限和撤销流程。
- 参考 WAV 源文件及其转录文本。
- 参考音频和生成输出的存储位置。
- 审核者对相似度和滥用风险的签核。
HTTP 合成格式示例:
curl -sS http://localhost:9000/v1/audio/synthesize --fail-with-body \
-F language=en-US \
-F text="This internal module explains how to configure <dnt>NVIDIA NIM</dnt> safely." \
-F audio_prompt=@approved_reference.wav \
--output localized_voice.wav
QA 检查清单:
- 确认受保护术语的发音正确。
- 统一响度,并与内部交付标准进行对比。
- 如果政策要求,请由同意使用其声音的说话人或授权审核者批准相似度。
- 保留运行清单;根据同意计划删除提示词音频和生成的变体。
故障排查
503就绪状态错误:轮询/v1/health/ready;模型仍在加载时,不要盲目重试大型音频。- ASR HTTP 请求返回
400:检查file、language或model、支持的音频格式,以及模型是否可用。 - TTS HTTP 请求返回
400:检查文本和语言是否非空、文本是否少于 2,000 个规范化字符、语音名称是否来自/v1/audio/list_voices,以及编码是否为LINEAR_PCM。 - 首次请求缓慢:检查容器是否正在下载模型,或为目标 GPU 构建 RMIR 配置文件。
- GPU 内存不足:选择更小的批次或配置文件,移除不需要的
mode=all,在不需要时禁用说话人分离,或将不同容器部署到不同 GPU 上。 - ASR 标点不准确:确认已为模型或配置文件启用标点;谨慎进行后处理,未经审核,绝不要修改法律或医疗记录。
- TTS 原始输出听起来像噪声:如果使用
/v1/audio/synthesize_online,请添加 WAV 文件头,或使用正确的采样率、声道数和有符号 16 位格式转换原始 LPCM。 - 托管端点受到限流或延迟不稳定:将 build.nvidia.com/API Catalog 视为试用或原型开发途径;如需稳定可预测的服务,请自行托管或使用生产合作伙伴的端点。
来源说明
部署前请查阅最新的 NVIDIA 文档,因为模型名称、配置文件选择器、支持的语言、WSL2 状态、许可条款和托管端点可用性都可能变化。核心来源已于 2026-07-10 核实: