我正在尝试将法语单词的发音保存到 .wav 或 .mp3 文件中。
我想知道 Google Translate API 上是否有任何地方(因为它有发音功能)可以让我实现这个目标。其他库也可以工作。
最佳答案
自从提出这个问题以来,从 Google 翻译中“抓取”MP3 变得更加困难,但 Google(最终)设置了 TTS API 。有趣的是,它按输入字符计费,每月前 1 或 400 万个输入字符是免费的(取决于您使用的是 WaveNet 还是老式语音)
现在,要在命令行上使用 gcloud
来执行此操作(而不是将其构建到应用程序中),您将大致执行以下操作(我正在解释 TTS quick start )。本演练需要 base64
、curl
、gcloud
和 jq
。
- 在 GCP 控制台上创建一个项目,或运行类似
gcloudprojects create example-throtaway-tts
- Enable billing对于该项目。即使您不打算超出免费赠品配额,也请执行此操作。
- 使用 GCP 控制台 enable the TTS API对于您刚刚设置的项目。
- 再次使用控制台,这次是 make a new service account 。
- 使用任何旧名称
- 不要赋予它任何作用。您会收到警告。这没关系。
- 如果尚未选择 key 类型 JSON,请选择它
- 点击
创建
- 保留浏览器下载的 JSON 文件
- 设置一个环境变量以指向该文件,例如
导出 GOOGLE_APPLICATION_CREDENTIALS="~/Downloads/service-account-file.json"
- 获取适当的访问 token :
- 告诉
gcloud
使用该新项目:gcloud config set project example-throtaway-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
这样做的目的是
- 使用您设置的项目的默认访问 token 进行身份验证
- 将内容类型设置为 JSON(以便
jq
可以提取有效负载) - 使用
request.json
作为要使用curl
的--data-raw
标志发送的数据 - 从响应中提取
audioContent
的值 base64
解码该内容- 将所有乱七八糟的内容保存为 MP3
request.json
的内容如下。你可以看到在哪里插入你想要的文字,调整the voice或通过 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=fr 的 URL 获取 MP3。
请注意,&tl=fr
确保您获得法语而不是默认英语。
您需要限制自己的速度,但如果您要查找少量单词或短语,应该没问题。
关于audio - 使用 Google Translate API 获取单词的发音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24100983/