故障排除#

要分享有关此版本的反馈或提出问题,请访问我们的 NVIDIA Riva 开发者论坛

NGC#

在从 NGC 拉取镜像或模型之前,请使用您的 API 密钥运行以下命令。

docker login nvcr.io
ngc config set

要查找 Riva 相关资料,请访问 NGC 目录

模型导出和 ServiceMaker#

  • 如果 .riva 文件已加密,请为 riva-buildriva-deploy 提供加密密钥。

  • 如果您想覆盖先前生成的 RMIR(Riva 模型中间表示)文件或包含 Triton Inference Server 工件的目录,请将 -f 传递给 riva-buildriva-deploy

服务#

通用

  • 如果服务器崩溃,如果在 Kubernetes 环境中运行,pod 应该会自行重启。通过轮询服务器(例如每 10 秒一次)以确定其状态,可以在 Kubernetes 环境之外实现类似的功能。

    /bin/grpc_health_probe -addr=:50051
    
  • 服务可能会接受超过引用的最大流数量。如果发生这种情况,性能将开始下降,并且连接可能会开始超时。

  • GPU 利用率和内存消耗可通过端口 :8002 上的 API 获得。有关更多信息,请参阅 Triton Inference Server 指标

自动语音识别 (ASR)

  • 对于非常长的音频,请使用流式识别服务。

  • 对于嘈杂的音频,请使用 Jasper 声学模型以提高准确性。提供的英语 Jasper 模型经过训练,可以应对中等程度的背景噪声。提供的英语 QuartzNet 模型对背景噪声的鲁棒性不如 Jasper 模型。model 可以在 RecognitionConfig 中设置。

  • 使用流式识别时,客户端发送音频块,通常来自麦克风。客户端可以使用任何块大小。Riva 服务器根据服务器配置创建 100 毫秒或 800 毫秒的块。流式识别模式比离线识别模式使用更多的 GPU 内存。

  • 在离线识别模式下,客户端发送包含所有音频的请求。服务器在后台将音频分段成块。

  • 服务器自动将 8khz 音频上采样到 16khz。

  • 如果您想使用特定领域的 ASR 模型,您可以微调声学模型或训练特定领域的语言模型并使用 Riva 部署。

  • 为了充分利用硬件,您可能希望实时使用多个流。在客户端示例中,只需通过设置 --num_parallel_requests 来指定并行流的数量即可。

文本到语音 (TTS)

  • 对于实时应用程序,请使用在线流式模式(命令行客户端中的选项 --online=True,或 gRPC API 中的函数 SynthesizeOnline)。

  • 为了充分利用硬件,您可能希望实时使用多个流。在客户端示例中,只需通过设置 --num_parallel_requests 来指定并行流的数量即可。使用超过您的硬件配置支持的流可能会导致问题,例如某些请求超时。

客户端集成#

  • 如果您遇到以下错误 Cannot create GRPC channel at uri localhost:50051,请检查 Riva 服务器是否已启动,方法是查看日志 docker logs riva-speech

Riva Helm 部署#

使用 helm 安装时可能会发生各种问题。下面捕获了一些更常见的问题

  • 在安装期间,要观看 init 容器的日志,请运行

    kubectl logs $POD riva-model-init --follow
    
  • 在安装期间,要观看服务器的日志(服务器在上述操作完成之前不会启动),请运行

    kubectl logs $POD --follow
    
  • 要确保 pod 正确启动,请运行

    kubectl get pods -A
    
  • 要验证哪些服务正在运行,请运行

    kubectl get services
    
  • 如果使用来自 traefik 的负载均衡来验证入口路由,请运行

    kubectl get ingressroutes
    
  • 要确保入口路由指向正确的服务,请运行

    kubectl get service `kubectl get ingressroutes riva-ingressroute -o=jsonpath='{..spec.routes[0].services[0].name}'
    

SpeechSquad#

  • SpeechSquad 容器连接必须正常运行。

    POD=`kubectl get pods | grep speechsquad | awk '{print $1}'` kubectl exec -it $POD -- /bin/bash