你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

为语音容器分割配置缓存

只有实时语音转文本容器才需要由客户管理的、兼容 Redis 的缓存,用于在联网和离线模式下进行说话人分离,这也包括时长短于四小时的音频。 快速听录容器不需要用于分割的缓存。 默认情况下,缓存会保留四个小时的实时分割数据。 音频可以运行超过四个小时,但最早的缓存数据开始被丢弃,这可能会降低分割质量。

例如,如果说话人出现在 1 小时后,并在 5 小时后再次出现,则以前的扬声器信息可能不再可用。 然后,说话人关联或标记质量可能会降低。 当需要分割时,将音频分段为四小时或更短的输入。 本文介绍如何配置所需的缓存并验证分割结果。

先决条件

  • 实时语音转文本容器映像,版本 5.1.0 或更高版本。
  • 满足 语音容器要求的主机,包括 CPU、内存和 AVX2 要求。
  • 对于联网模式,需要用于容器计费的语音终结点和密钥。
  • 对于断开连接模式,需完成断开连接容器的审批和许可证设置,包括容器的非 root 用户可写入的许可证挂载目录和输出挂载目录。 有关详细信息,请参阅 在断开连接的环境中使用容器。
  • 客户运营的 Redis 兼容缓存,语音转文本容器可以访问该缓存。
  • 用于本地验证示例的 Docker。
  • 可提交音频以进行分割和检查扬声器标签的识别客户端或应用程序。

了解缓存要求

对于每个音频长度正确的分割功能,需要 Redis 兼容的缓存。 启用分割时配置这两个设置:

设置 所需的值 Purpose
InClusterRedisCacheEnabled true 启用 diarization 所需的 Redis 兼容缓存。
InClusterRedisCacheEndpoint <host-or-ip>:<port> 指定可访问的 Redis 兼容缓存终结点,以便进行分割。

默认缓存保留限制为四小时。 此限制不会结束分割会话或阻止音频运行更长时间。 四小时后,最早的缓存分割数据开始被丢弃,因此说话人标签可能变得不太可靠。 将已进行说话人分离的音频分割成不超过 4 小时的输入片段。

使用 Valkey 测试配置

以下本地验证示例使用所需的缓存启动语音容器,并使用公共 valkey/valkey 映像测试缓存可访问性。 它创建用户定义的 Docker 网络,以便语音容器可以解析稳定的 diarization-cache 容器名称。

  1. 为测试容器创建 Docker 网络。

    docker network create speech-diarization-test
    
    <network-id>
    
  2. 在网络上启动 Valkey 8.1.10。

    docker run --detach --name diarization-cache \
      --network speech-diarization-test \
        valkey/valkey:8.1.10-alpine
    
    <container-id>
    
  3. 从同一网络上的另一个容器中,验证缓存名称是否解析,并且 Valkey 是否响应。

    docker run --rm --network speech-diarization-test \
       valkey/valkey:8.1.10-alpine \
       valkey-cli -h diarization-cache PING
    
    PONG
    

在同一网络上启动实时语音转文本容器。 选择与你的容器模式对应的选项卡,并将每个占位符替换为你的环境对应的值。

docker run --rm --interactive --tty \
   --name speech-to-text \
   --network speech-diarization-test \
   --publish 5000:5000 \
   --memory 8g \
   --cpus 4 \
   {SPEECH_TO_TEXT_IMAGE} \
   Eula=accept \
   Billing={ENDPOINT_URI} \
   ApiKey={API_KEY} \
   InClusterRedisCacheEnabled=true \
   InClusterRedisCacheEndpoint=diarization-cache:6379
<container-startup-logs>

容器启动后,不出现缓存连接错误,请使用识别客户端或应用程序提交分割音频并检查说话人标签,如下一部分所述。 启动消息因容器版本和环境而异。

这两个命令都用于本地 Docker 验证,并且不是生产拓扑。 Kubernetes 和 Helm 部署不在此示例的范围内。

验证分割结果

在生产中使用分割之前,请验证缓存连接和扬声器标签:

  1. 在启动语音容器之前,请确认可从语音容器网络访问 Redis 兼容的缓存。
  2. 提交四小时或更短的输入,并确认分割结果是否包含预期的说话人标签。
  3. 检查语音容器和缓存日志中是否有连接错误。
  4. 如果测试音频时间超过四小时,请仔细检查说话人关联和标签,因为放弃最早的缓存数据可能会降低质量。 对于需要分割的生产工作负荷,将音频分段为四小时或更短的输入。

排查缓存连接问题

如果缓存验证命令未返回 PONG,请使用以下检查:

  • 如果命令报告无法解析 diarization-cache,请确认缓存和验证容器使用 speech-diarization-test 网络。
  • 如果命令提示连接被拒绝,请确认 diarization-cache 容器正在运行并正在侦听 6379 端口。
  • 如果语音容器报告缓存连接错误,请确认 InClusterRedisCacheEnabled 为 true,且 InClusterRedisCacheEndpoint 仅包含可访问的 <host-or-ip>:<port> 值。 不要包含 URL 方案。
  • 如果本地 Valkey 测试成功,但语音容器无法连接,请确认语音容器使用相同的 Docker 网络和终结点 diarization-cache:6379。

准备生产

在生产之前,请选择并配置符合组织可靠性和安全要求的 Redis 兼容服务。 评估其与本文中的两个容器设置的兼容性,并完成以下清单:

  • 每个语音容器中的网络连接和终结点可访问性。
  • 满足组织要求的安全控制。
  • 可靠性、高可用性、监控和扩展。
  • 故障转移和恢复流程。
  • 需要分割时,将音频分段为 4 小时或更短的输入。
  • 使用代表性音频进行说话人标签验证。
  • 特定于平台的部署配置,包括 Kubernetes 或 Helm 配置(如果适用)。