我想通过一个简单的休息请求来利用新的Google TTS。为此,我创建了一个服务帐户,该服务帐户下载了一个JSON文件,其中包含私钥ID,私钥,客户电子邮件,客户ID,client_x509_cert_url等。
我还为系统设置了环境变量:
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", jsonFile);
然后,我发现此示例CURL请求使用Google提供的WaveNet TTS引擎:
curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
--data "{
'input':{
'text':'Android is a mobile operating system developed by Google,
based on the Linux kernel and designed primarily for
touchscreen mobile devices such as smartphones and tablets.'
},
'voice':{
'languageCode':'en-gb',
'name':'en-GB-Standard-A',
'ssmlGender':'FEMALE'
},
'audioConfig':{
'audioEncoding':'MP3'
}
}" "https://texttospeech.googleapis.com/v1beta1/text:synthesize" > writtenfile.txt
我想根据上述CURL请求创建一个简单的C#webrequest,但是行“ gcloud auth application-default print-access-token” 对我来说是个问题。我无法在此计算机上安装CLI gcloud实例。是否没有某种方法可以从JSON服务帐户文件中设置webrequest授权访问令牌?当然,我没有安装gcloud。
寻找代码示例,演示如何使用不带gcloud的服务帐户json文件将CURL代码转换为C#REST请求。
答案 0 :(得分:0)
如果您不想安装gcloud
软件包,则可以使用 API密钥执行 REST 调用。这些键可以是created directly in the GCP console,可以将它们作为参数通过请求标头传递。这样,您无需gcloud
就可以对服务进行身份验证。另外,我建议您看看此guide,其中包含使用C#进行REST请求所需的步骤。
您可以使用此Restlet Client tool测试以下示例:
REST内容示例
https://texttospeech.googleapis.com/v1beta1/text:synthesize?key=<YOUR_API_KEY>
{
'input':{
'text':'Android is a mobile operating system developed by Google,
based on the Linux kernel and designed primarily for
touchscreen mobile devices such as smartphones and tablets.'
},
'voice':{
'languageCode':'en-gb',
'name':'en-GB-Standard-A',
'ssmlGender':'FEMALE'
},
'audioConfig':{
'audioEncoding':'MP3'
}
}
最后,如果您要使用服务帐户JSON文件,可以使用客户端库将create and send your TTS requests更改为authenticate them directly from your code;但是,此方法需要安装TextToSpeech软件包。