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

配置语音服务容器

语音容器使客户能够构建一个经过优化的语音应用程序体系结构,以利用强大的云功能和边缘位置。

使用 docker run 命令参数配置语音容器运行时环境。 以下部分介绍实时分割所需的计费、日志记录、卷装载和缓存设置。

配置设置

此容器具有以下配置设置:

必需 设置 目的
是 ApiKey 跟踪账单信息。
否 ApplicationInsights 允许向容器添加 Azure 应用程序 Insights 遥测支持。
是 计费 指定 Azure 上服务资源的终结点 URI。
是 Eula 表示已接受容器的许可条款。
否 Fluentd 将日志和(可选)指标数据写入 Fluentd 服务器。
否 HTTP 代理 配置 HTTP 代理以发出出站请求。
否 日志记录 为容器提供 ASP.NET Core 日志记录支持。
否 Mounts 从主计算机读取数据并将其写入到容器,以及从容器读回数据并将其写回到主计算机。

注意

启用实时分割的语音转文本容器还需要 实时分割缓存设置中所述的设置。

重要

ApiKey、Billing 和 Eula 设置一起使用。必须为所有三个设置提供有效值,否则容器将无法启动。 有关使用这些配置设置实例化容器的详细信息,请参阅计费。

ApiKey 配置设置

ApiKey 设置指定用于跟踪容器账单信息的 Azure 资源键。 必须为 ApiKey 指定值,并且该值必须是为 配置设置指定的Billing资源的有效密钥。

可以在以下位置找到此设置:

  • Azure 门户:语音的资源管理,位于“密钥”下

ApplicationInsights 设置

此 ApplicationInsights 设置允许向容器添加 Azure 应用程序 Insights 遥测支持。 Application Insights 可深入监视容器。 可以轻松监视容器的可用性、性能和使用情况。 还可以快速识别和诊断容器中的错误。

下表描述了 ApplicationInsights 节支持的配置设置。

必需 名称 数据类型 说明
否 InstrumentationKey 字符串 容器遥测数据要发送到的 Application Insights 实例的检测密钥。 有关详细信息,请参阅适用于 ASP.NET Core 的 Application Insights。

示例:
InstrumentationKey=123456789

Billing 配置设置

Billing 设置指定 Azure 上用于计量容器的账单信息的语音资源的终结点 URI。 必须为此配置设置指定值,并且该值必须是 Azure 上语音资源的有效终结点 URI。 容器约每 10 到 15 分钟报告一次使用情况。

可以在以下位置找到此设置:

  • Azure 门户:在“语音概述”页上标记为 Endpoint
必需 名称 数据类型 说明
是 Billing 字符串 账单终结点 URI。 有关获取账单 URI 的详细信息,请参阅账单。 有关详细信息和区域终结点的完整列表,请参阅 Foundry 工具的自定义子域名称。

Eula 设置

Eula 设置表示已接受容器的许可条款。 必须为此配置设置指定值,并且该值必须设置为 accept。

必需 名称 数据类型 说明
是 Eula 字符串 接受许可证

示例:
Eula=accept

Foundry Tools 容器根据管理 Azure 使用情况的 协议 获得许可。 如果没有管理 Azure 使用的现有协议,则表示同意管理 Azure 使用的协议是 Microsoft 在线订阅协议,其中包含联机服务条款。 对于预览版,还应同意 Microsoft Azure 预览版补充使用条款。 使用容器即表示同意这些条款。

Fluentd 设置

Fluentd 是一个用于统一日志记录的开放源代码数据收集器。 Fluentd 设置管理容器到 Fluentd 服务器的连接。 容器包含一个 Fluentd 日志记录提供程序,使容器可以向 Fluentd 服务器写入日志和(可选)指标数据。

下表描述了 Fluentd 节支持的配置设置。

名称 数据类型 说明
Host 字符串 Fluentd 服务器的 IP 地址或 DNS 主机名。
Port Integer Fluentd 服务器的端口。
默认值为 24224。
HeartbeatMs Integer 检测信号间隔,以毫秒为单位。 如果在此间隔过期之前未发送事件流量,则将检测信号发送到 Fluentd 服务器。 默认值为 60000 毫秒(1 分钟)。
SendBufferSize Integer 为发送操作分配的网络缓冲空间,以字节为单位。 默认值为 32768 字节(32 KB)。
TlsConnectionEstablishmentTimeoutMs Integer 与 Fluentd 服务器建立 SSL/TLS 连接的超时值,以毫秒为单位。 默认值为 10000 毫秒(10 秒)。
如果 UseTLS 设置为 false,则会忽略此值。
UseTLS 布尔 指示容器是否应使用 SSL/TLS 来与 Fluentd 服务器通信。 默认值是 False。

HTTP 代理凭据设置

如果需要配置 HTTP 代理以发出出站请求,请使用以下两个参数:

名称 数据类型 说明
HTTP_PROXY 字符串 要使用的代理,例如 http://proxy:8888
<proxy-url>
HTTP_PROXY_CREDS 字符串 对代理进行身份验证所需的任何凭据,例如 username:password。 此值 必须小写。
<proxy-user> 字符串 代理的用户。
<proxy-password> 字符串 与代理的 <proxy-user> 关联的密码。
docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
HTTP_PROXY=<proxy-url> \
HTTP_PROXY_CREDS=<proxy-user>:<proxy-password>

Logging 设置

Logging 设置管理容器的 ASP.NET Core 日志记录支持。 可对容器使用用于 ASP.NET Core 应用程序的相同配置设置和值。

容器支持以下日志记录提供程序:

提供程序 目的
控制台 ASP.NET Core Console 日志记录提供程序。 支持此日志记录提供程序的所有 ASP.NET Core 配置设置和默认值。
调试 ASP.NET Core Debug 日志记录提供程序。 支持此日志记录提供程序的所有 ASP.NET Core 配置设置和默认值。
磁盘 JSON 日志记录提供程序。 此日志记录提供程序将日志数据写入输出装入点。

此容器命令以 JSON 格式将日志记录信息存储到输出装入点:

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
--mount type=bind,src=/home/azureuser/output,target=/output \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Disk:Format=json \
Mounts:Output=/output

当容器正在运行时,此容器命令显示调试信息(前缀为 dbug):

docker run --rm -it -p 5000:5000 \
--memory 2g --cpus 1 \
<registry-location>/<image-name> \
Eula=accept \
Billing=<endpoint> \
ApiKey=<api-key> \
Logging:Console:LogLevel:Default=Debug

Disk 日志记录

Disk 日志记录提供程序支持以下配置设置:

名称 数据类型 说明
Format 字符串 日志文件的输出格式。
注意:此值必须设置为 json 才能启用日志记录提供程序。 如果指定了此值,但未同时在实例化容器时指定输出装入点,则会发生错误。
MaxFileSize Integer 日志文件的最大大小,以 MB 为单位。 如果当前日志文件的大小达到或超过此值,则日志记录提供程序会启动新的日志文件。 如果指定 -1,则日志文件的大小仅受输出装入点的最大文件大小(如果有)的限制。 默认值为 1。

有关配置 ASP.NET Core 日志记录支持的详细信息,请参阅设置文件配置。

实时分割缓存设置

若要使用已正式发布的实时说话人分离功能,请使用 5.1.0 或更高版本的语音转文本容器。 连接和断开连接的语音转文本容器需要客户操作的 Redis 兼容缓存,只要启用实时分割,包括对于音频缩短 4 小时。 快速听录容器不需要此缓存。 为适当的实时分割功能配置这两个设置。 有关设置和验证,请参阅 配置用于语音容器分割的缓存。

默认情况下,缓存保留四个小时的分割数据。 对于超过四小时的音频,最早的缓存数据开始被丢弃,这可能会降低说话人关联或标记质量。 此保留行为不会结束分割会话或阻止更长的音频运行。

Requirement 名称 数据类型 说明
实时说话人分离所需 InClusterRedisCacheEnabled 布尔 将其设置为 true 以启用所需的与 Redis 兼容的缓存。
实时说话人分离所需 InClusterRedisCacheEndpoint 字符串 将其设置为采用 <host-or-ip>:<port> 格式的可访问缓存端点。

将这两个设置添加到语音转文本容器启动命令:

InClusterRedisCacheEnabled=true \
InClusterRedisCacheEndpoint=<host-or-ip>:<port>

装载设置

使用绑定装载从容器读取数据并将数据写入容器。 可以通过在 --mount 命令中指定 选项来指定输入装载或输出装载。

标准语音容器不使用输入或输出装载来存储训练或服务数据。 但是,自定义语音容器依赖于卷装入。

主机确切语法的安装位置因主机操作系统不同而异。 另外,由于 Docker 服务帐户使用的权限与主机装载位置权限之间存在冲突,因此可能无法访问主计算机的装载位置。

可选 名称 数据类型 说明
不允许 Input 字符串 标准语音容器不使用此项。 自定义语音容器使用卷装载。
可选 Output 字符串 输出装入点的目标。 默认值是 /output。 这是日志的位置。 这包括容器日志。

示例:
--mount type=bind,src=c:\output,target=/output

卷装载设置

自定义语音容器使用卷装载来持久保存自定义模型。 可以通过将 -v(或 --volume)选项添加到 docker run 命令来指定卷装载。

注意

卷装载设置仅适用于自定义语音转文本容器。

首次将新模型作为自定义语音容器 docker run 命令的一部分时,将会下载自定义模型。 对于自定义语音容器,同一 ModelId 的顺序运行将使用先前下载的模型。 如果未提供卷装载,则不能持久保存自定义模型。

卷挂载设置由三个以冒号分隔的字段组成:

  1. 第一个字段是主机上的卷名,例如 C:\input。
  2. 第二个字段是容器中的目录,例如 /usr/local/models。
  3. 第三个字段(可选)是以逗号分隔的选项列表。有关详细信息,请参阅使用卷。

这是一个卷装载示例,它将主机 C:\input 目录装载到容器 /usr/local/models 目录。

-v C:\input:/usr/local/models

后续步骤