如何在不设置环境变量的情况下将 google 语音的凭据设置为文本?

How do I set credentials for google speech to text without setting environment variable?

有使用库的 C# 示例client-libraries-usage-csharp

还有如何设置环境变量的示例

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"

如何在不设置环境变量的情况下将 google 语音的凭据设置为文本?

有点像这样:

var credentials = ...create(file.json); var speech = SpeechClient.Create(凭据);

除非您是 运行 GCP 服务上的应用程序,否则除了设置环境变量之外,没有其他方法可以获取客户端库的服务帐户凭据。

GCP 客户端库使用一种名为 Application Default Credentials (ADC) 的策略来查找您的应用程序的凭据。

默认情况下,客户端库将使用环境变量指向的JSON。如果未找到 JSON 但您的应用程序在 App Engine、Compute Engine 或 Kubernetes Engine 上是 运行,那么您的应用程序将使用默认服务帐户的凭据(例如,App Engine 默认服务帐户,如果您的应用程序在 App Engine 上 运行。)

using Grpc.Auth;

然后

string keyPath = "key.json";

GoogleCredential googleCredential;
using (Stream m = new FileStream(keyPath, FileMode.Open))
    googleCredential = GoogleCredential.FromStream(m);
var channel = new Grpc.Core.Channel(SpeechClient.DefaultEndpoint.Host,
    googleCredential.ToChannelCredentials());
var speech = SpeechClient.Create(channel);

SpeechClient.Create() 在 2.7.0 版本中不再支持参数凭据,但我找到了以下解决方案:

var client = new SpeechClientBuilder { JsonCredentials = "..." }.Build() 

JsonCredentials 接受具有 json 内容的字符串。