如何使用谷歌&x27;Python中的文本到语音API
我的钥匙已准备就绪,可以发出请求并从谷歌的文本中获取语音。如何使用谷歌&x27;Python中的文本到语音API,python,api,text-to-speech,Python,Api,Text To Speech,我的钥匙已准备就绪,可以发出请求并从谷歌的文本中获取语音。 我尝试了这些命令和更多命令。 这些文档没有提供我发现的Python入门的直接解决方案。我不知道我的API密钥和JSON和URL一起放在哪里 。但是需要在请求后下载一个txt文件,该文件必须发送回给他们才能获得文件。在Python中,有没有一种方法不涉及我必须返回的txt? 我只希望我的字符串列表作为音频文件返回 (我把我的实际钥匙放在上面的方框里。我不打算在这里分享。)找到了答案,在我打开的150个谷歌文档页面中丢失了链接 #(Sin
我尝试了这些命令和更多命令。
这些文档没有提供我发现的Python入门的直接解决方案。我不知道我的API密钥和JSON和URL一起放在哪里 。但是需要在请求后下载一个txt文件,该文件必须发送回给他们才能获得文件。在Python中,有没有一种方法不涉及我必须返回的txt? 我只希望我的字符串列表作为音频文件返回
(我把我的实际钥匙放在上面的方框里。我不打算在这里分享。)找到了答案,在我打开的150个谷歌文档页面中丢失了链接
#(Since I'm using a Jupyter Notebook)
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/Path/to/JSON/file/jsonfile.json"
from google.cloud import texttospeech
# Instantiates a client
client = texttospeech.TextToSpeechClient()
# Set the text input to be synthesized
synthesis_input = texttospeech.types.SynthesisInput(text="Hello, World!")
# Build the voice request, select the language code ("en-US") and the ssml
# voice gender ("neutral")
voice = texttospeech.types.VoiceSelectionParams(
language_code='en-US',
ssml_gender=texttospeech.enums.SsmlVoiceGender.NEUTRAL)
# Select the type of audio file you want returned
audio_config = texttospeech.types.AudioConfig(
audio_encoding=texttospeech.enums.AudioEncoding.MP3)
# Perform the text-to-speech request on the text input with the selected
# voice parameters and audio file type
response = client.synthesize_speech(synthesis_input, voice, audio_config)
# The response's audio_content is binary.
with open('output.mp3', 'wb') as out:
# Write the response to the output file.
out.write(response.audio_content)
print('Audio content written to file "output.mp3"')
我费时的工作是尝试用Python通过JSON发送请求,但这似乎是通过自己的模块实现的,这很好。
请注意,默认语音性别为“中性”。为JSON文件配置Python应用程序并安装客户端库
pip安装——升级googlecloudtexttospeech
语音、姓名、语言代码、SSML性别等 声音列表: 在上面的代码示例中,我将Google示例代码中的voice更改为包含name参数,并使用Wavenet voice(改进很多但更昂贵的$16/百万字符)和SSML性别改为女性
voice = texttospeech.types.VoiceSelectionParams(
language_code='en-US',
name='en-US-Wavenet-C',
ssml_gender=texttospeech.enums.SsmlVoiceGender.FEMALE)
如果您希望避免使用google Python API,可以简单地执行以下操作:
import requests
import json
url = "https://texttospeech.googleapis.com/v1beta1/text:synthesize"
text = "This is a text"
data = {
"input": {"text": text},
"voice": {"name": "fr-FR-Wavenet-A", "languageCode": "fr-FR"},
"audioConfig": {"audioEncoding": "MP3"}
};
headers = {"content-type": "application/json", "X-Goog-Api-Key": "YOUR_API_KEY" }
r = requests.post(url=url, json=data, headers=headers)
content = json.loads(r.content)
它与您所做的类似,但您需要包含API密钥。?我看到了这一点。我的意思是在OP中,在我发布的链接中没有Python等价物。我不明白这个链接是什么,(代码)。我不明白我的API密钥去了哪里。也许这就是我所需要的。这段代码在哪里可以看到API?我找了一整天都没能找到在任何地方使用这些东西的方法。当你说API键时,我想你指的是你在设置谷歌云时设置的API键,对吗?这本书也许值得一读。以JSON格式下载的API密钥是您在环境中设置为
GOOGLE\u APPLICATION\u CREDENTIALS
(请参阅步骤2)的密钥。然后,他们会进一步指导您如何正确设置。Python快速启动提供了与链接到的CURL示例等效的功能。正如aug提到的,您需要使用服务帐户,而不是API密钥。Eric,您编写了这些文档吗?恕我直言,它们非常不透明和令人困惑。很难找到。好像所有东西都有3个诱饵版本。没有链接到我注册的地方。昨天花了10个小时试图让Python完成CURL命令所做的事情。今天,大约花了8个小时试图找出在哪里输入语音名称,以及它是dif而不是语言代码。你否决了我的问题?在这里的语音选择部分是“language_code='en-US',ssml_gender=texttospeech.enums.SsmlVoiceGender.NEUTRAL)”,你知道我如何在谷歌TTS示例页面上获得“en-US-Wavenet-F”语音吗?找到了他们的列表。奇怪的原因不管声音的名字是什么,相同语言代码的所有声音听起来都一样。换句话说,“en-US”总是返回完全相同的声音。如果我把它改成“en-US-Wavenet-F”或其他任何东西,就没有变化。明白了。对于任何人未来可能的参考,在语言代码之后,您在该行下面添加name='en-US-Wavenet-F',以获得我一直试图获得的内容。如何使用此示例调用外部JSON表示,包括ssml和语音选择参数,如下图所示?为什么要进行语音客户端。列出语音()不列出带有Wavenet的声音?
import requests
import json
url = "https://texttospeech.googleapis.com/v1beta1/text:synthesize"
text = "This is a text"
data = {
"input": {"text": text},
"voice": {"name": "fr-FR-Wavenet-A", "languageCode": "fr-FR"},
"audioConfig": {"audioEncoding": "MP3"}
};
headers = {"content-type": "application/json", "X-Goog-Api-Key": "YOUR_API_KEY" }
r = requests.post(url=url, json=data, headers=headers)
content = json.loads(r.content)