自从提出这个问题以来,从谷歌翻译中“抓取”MP3 变得更加困难,但谷歌(最终)建立了一个TTS API。有趣的是,它按输入字符计费,每月前 1 或 400 万个输入字符是免费的(取决于您使用 WaveNet 还是老式语音)
如今,要gcloud
在命令行上使用(而不是将其构建到应用程序中),您可以大致执行以下操作(我在解释TTS 快速入门)。对于本演练,您需要base64
、curl
、gcloud
和。jq
- 在 GCP 控制台上创建一个项目,或者运行类似的东西
gcloud projects create example-throwaway-tts
- 为项目启用计费。即使您不打算超过免费赠品配额,也要这样做。
- 使用 GCP 控制台为您刚刚设置的项目启用 TTS API 。
- 再次使用控制台,这次是创建一个新的服务帐户。
- 使用任何旧名称
- 不要给它一个角色。你会收到警告。这没关系。
- 如果尚未选择密钥类型 JSON,请选择它
- 点击
Create
- 保留浏览器下载的 JSON 文件
- 设置环境变量以指向该文件,例如
export GOOGLE_APPLICATION_CREDENTIALS="~/Downloads/service-account-file.json"
- 获取适当的访问令牌:
- 告诉
gcloud
使用那个新项目:gcloud config set project example-throwaway-tts
- 设置变量
TTS_ACCESS_TOKEN=gcloud auth application-default print-access-token
- 组合一个 JSON 请求。下面我举个例子。对于这个例子,我们称之为
request.json
最后,运行以下命令
curl \
-H "Authorization: Bearer "$TTS_ACCESS_TOKEN \
-H "Content-Type: application/json; charset=utf-8" \
--data-raw @request.json \
"https://texttospeech.googleapis.com/v1/text:synthesize" \
| jq '.audioContent' \
| base64 --decode > very_simple_example.mp3
这是为了
- 使用您设置的项目的默认访问令牌进行身份验证
- 将内容类型设置为 JSON(以便
jq
可以提取有效负载)
- 用作使用's标志
request.json
发送的数据curl
--data-raw
audioContent
从响应中提取 的值
base64
解码该内容
- 将整个混乱保存为 MP3
内容request.json
如下。您可以通过audioConfig查看在何处插入所需文本、调整语音或更改输出格式:
{
'input':{
'text':'very simple example'
},
'voice':{
'languageCode':'en-gb',
'name':'en-GB-Standard-A',
'ssmlGender':'FEMALE'
},
'audioConfig':{
'audioEncoding':'MP3'
}
}
原始答案
正如 Hugolpz 所暗示的,如果您知道您想要的单词或短语(通过之前的 Translate API 调用),您可以从http://translate.google.com/translate_tts?ie=UTF-8&q=Bonjour&tl=之类的 URL 获取 MP3 FR
请注意,&tl=fr
确保您获得法语而不是默认的英语。
您需要对自己进行速率限制,但如果您正在寻找少量的单词或短语,您应该没问题。