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

标签 audio text-to-speech google-translate phonetics

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

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

最佳答案

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

现在,要在命令行上使用 gcloud 来执行此操作(而不是将其构建到应用程序中),您将大致执行以下操作(我正在解释 TTS quick start )。本演练需要 base64curlgcloudjq

  1. 在 GCP 控制台上创建一个项目,或运行类似 gcloudprojects create example-throtaway-tts
  2. Enable billing对于该项目。即使您不打算超出免费赠品配额,也请执行此操作。
  3. 使用 GCP 控制台 enable the TTS API对于您刚刚设置的项目。
  4. 再次使用控制台,这次是 make a new service account
    • 使用任何旧名称
    • 不要赋予它任何作用。您会收到警告。这没关系。
    • 如果尚未选择 key 类型 JSON,请选择它
    • 点击创建
    • 保留浏览器下载的 JSON 文件
  5. 设置一个环境变量以指向该文件,例如导出 GOOGLE_APPLICATION_CREDENTIALS="~/Downloads/service-account-file.json"
  6. 获取适当的访问 token :
    1. 告诉 gcloud 使用该新项目:gcloud config set project example-throtaway-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
    

这样做的目的是

  • 使用您设置的项目的默认访问 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/

相关文章:

ios - 可供 AVSpeechSynthesis 在 iOS 中使用的已安装语音的可用性

java - 在 Text to Speech 中不总是调用 UtteranceProgressListener?

authentication - 为什么 Google Cloud Translate 上的持久 503 服务不可用?

android - 显示广告时,Android上的声音消失

c++ - 编写音频源过滤器用作 Lync 麦克风

text-to-speech - GSM SIM800C 文本转语音音频流

java - NetBeans + Glassfish --> NoSuchMethodError directExecutor()Ljava/util/concurrent/Executor

html - 阻止谷歌翻译翻译部分 <head> 部分?

Android:抽屉导航和音频播放器

python - 使用 Python 使用音频传输数据