如何使用谷歌&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应用程序并安装客户端库
  • 创建服务帐户
  • 使用服务帐户创建服务帐户密钥
  • JSON文件下载并安全保存
  • 在Python应用程序中包括Google应用程序凭据
  • 安装库:
    pip安装——升级googlecloudtexttospeech
  • 使用Google的Python示例可以发现: 注意:在Google的示例中,它没有正确地包含name参数。 和

    下面是使用谷歌应用程序凭据和女性wavenet语音修改的示例。
    语音、姓名、语言代码、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)