使用 Google Translate API 获取单词的发音

use*_*664 9 audio text-to-speech google-translate phonetics

我正在尝试将法语单词的发音保存到 .wav 或 .mp3 文件中。

我想知道 Google Translate API 上是否有任何地方(因为它具有发音功能)可以让我实现这一目标。其他库也可以。

Jes*_*rer 9

自从提出这个问题以来,从 Google 翻译中“抓取”MP3 变得更加困难,但 Google(终于)建立了TTS API。有趣的是,它按输入字符计费,每月前 1 或 400 万个输入字符是免费的(取决于您使用的是 WaveNet 还是老式语音)

gcloud如今,要在命令行上使用此操作(而不是将其构建到应用程序中),您将大致执行以下操作(我正在解释TTS 快速入门)。对于本演练,您需要base64curlgcloud、 和jq

  1. 在GCP控制台上创建一个项目,或者运行类似的东西gcloud projects create example-throwaway-tts
  2. 为项目启用计费。即使您不打算超出免费赠品配额,也请执行此操作。
  3. 使用 GCP 控制台为您刚刚设置的项目启用 TTS API 。
  4. 再次使用控制台,这次是创建一个新的服务帐户
    • 使用任何旧名称
    • 不要赋予它一个角色。您会收到警告。这没关系。
    • 如果尚未选择密钥类型 JSON,请选择它
    • 点击Create
    • 保留浏览器下载的 JSON 文件
  5. 设置环境变量指向该文件,例如export GOOGLE_APPLICATION_CREDENTIALS="~/Downloads/service-account-file.json"
  6. 获取适当的访问令牌:
    1. 告诉gcloud使用该新项目:gcloud config set project example-throwaway-tts
    2. 设置变量TTS_ACCESS_TOKEN=gcloud auth application-default print-access-token
  7. 组合一个 JSON 请求。下面我举一个例子。对于这个例子,我们将其称为request.json
  8. 最后,运行以下命令

     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
    
    Run Code Online (Sandbox Code Playgroud)

这样做的目的是

  • 使用您设置的项目的默认访问令牌进行身份验证
  • 将内容类型设置为 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'
  }
}
Run Code Online (Sandbox Code Playgroud)

原答案

正如 Hugolpz 所暗示的,如果您知道所需的单词或短语(通过之前的 Translate API 调用),您可以从http://translate.google.com/translate_tts?ie=UTF-8&q=Bonjour&tl=等 URL 获取 MP3 FR

请注意,这&tl=fr可确保您获得法语而不是默认的英语。

您需要限制自己的速度,但如果您正在寻找少量的单词或短语,那么应该没问题。

  • 不幸的是,TTS 功能已受到验证码保护,因此无法再使用 Google Translate API 以编程方式执行此操作。 (2认同)