首页 > 解决方案 > 谷歌文本到语音 - SSML 中断从 mp3 输出中丢失

问题描述

在将 base-64 输出从 Google Text 转换为 Speech 到 MP3 文件时,遇到 SSML 标签被“丢弃”的问题。

平台是 OSX 10.12.6。

我的语法似乎很好,并且可以使用其他服务进行测试,但是当我通过终端转换它时,它会丢弃我所有的 SSML。

在过去的 8 个小时里一直在尝试不同的事情!

我对 API 的调用是:

curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
  -H "Content-Type: application/json; charset=utf-8" \
  --data "{
    'input':{
      'ssml':'<speak>
First sentence<break time="3s"/>
Second sentence <break time="300ms"/><say-as interpret-as="date" format="yyyy" detail="1">1919</say-as><break time="2s"/>
Third sentence <say-as interpret-as="characters">send</say-as> <break time="300ms"/><say-as interpret-as="date" format="yyyy" detail="1">2016</say-as><break time="2s"/>
Fourth sentence <say-as interpret-as="cardinal">10456</say-as> <break time="300ms"/><say-as interpret-as="date" format="yyyy" detail="1">2017</say-as><break time="2s"/>
Fifth sentence <say-as interpret-as="unit">10 foot</say-as> <break time="300ms"/><say-as interpret-as="time" format="hms12">3:30am</say-as><break time="2s"/>
</speak>'
    },
    'voice':{
      'languageCode':'en-gb',
      'name':'en-GB-Wavenet-A',
      'ssmlGender':'FEMALE'
    },
    'audioConfig':{
      'audioEncoding':'MP3',
      'pitch': '0',
      'speakingRate': '0.90'
    }
  }" "https://texttospeech.googleapis.com/v1/text:synthesize" > complex-test.txt

然后使用以下命令将输出转换为 MP3:

sed 's|audioContent| |' < complex-test.txt > tmp-output.txt && \
tr -d '\n ":{}' < tmp-output.txt > tmp-output-2.txt && \
base64 tmp-output-2.txt --decode > complex-test.mp3 && \
rm tmp-output*.txt

输出只是一个没有中断的快速语音轨道,并且没有任何 SSML 标签工作。

任何新鲜的想法表示赞赏!

非常感谢。

标签: google-text-to-speech

解决方案


推荐阅读