10

I am trying to save the pronunciation of a French word into a .wav or .mp3 file.

I was wondering if there was anywhere on the Google Translate API (since it has a pronunciation functionality) that allows me to achieve this objective. Other libraries would work too.

4

2 回答 2

5

自从提出这个问题以来,从谷歌翻译中“抓取”MP3 变得更加困难,但谷歌(最终)建立了一个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
    

这是为了

  • 使用您设置的项目的默认访问令牌进行身份验证
  • 将内容类型设置为 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确保您获得法语而不是默认的英语。

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

于 2015-03-11T20:43:05.623 回答
2

Speech Synthesis API(正在开发中)提供了类似的功能。第三方库已经存在,例如ResponsiveVoice.JS

于 2017-01-25T18:52:51.593 回答