客户端 billing/client 对 Microsoft 认知服务语音转文本的使用情况?

Client billing/client usage for microsoft cognitive services speech to text?

我正在开发一个网站,该网站旨在为用户提供 azures 认知服务 api。他们可以播放音频或使用麦克风将语音转换为文本。

我目前正在使用 azures js sdk,从技术上讲它工作正常。但是,我注意到这种方法有一个很大的缺点。 sdk 通过 websocket 与 azure 服务器连接,将订阅密钥公开给客户端。因此,理论上每个成员都可以阅读并出售它或类似的东西。 此外,如果客户端直接与 azure 连接,我没有安全的方法来防止客户端滥用服务。我需要一种方法来大致衡量客户使用该服务的时间,以考虑个人账单。

我在官方文档中找不到任何相关信息。那么我有什么选择?

  1. 我是否应该将客户端的音频输入重定向到我自己的服务器,进行一些定量分析,然后将输入从服务器端连接转发到 Azure?我担心有很多并发客户,它可能会变得迟钝或连接可能会掉线...
  2. 有没有什么方法可以将至少客户端 ID 或类似的东西附加到 azure websocket 连接上,以便我稍后可以以某种方式读出?

你对我有什么建议吗?

鉴于您的补充意见,我建议您将实施方式从使用订阅密钥切换为使用身份验证令牌。

那就是:

  • 根据 1 个全局订阅密钥为每个客户端生成唯一令牌
  • 不向客户公开您的订阅密钥
  • 限制API的使用,因为令牌的有效期只有10分钟

Each access token is valid for 10 minutes. You can get a new token at any time, however, to minimize network traffic and latency, we recommend using the same token for nine minutes.

有关全球实施的信息,请参阅文档 here。简而言之,您需要在后端实现此令牌生成,并使用此令牌而不是密钥将页面提供给您的客户端。

旁注 1:注意最大并发请求数(100 - 参见 here)。

注意 2:鉴于客户的使用情况,这不会帮助您向客户收费,因为您只有 1 个密钥,并且无法识别其中的不同用途