使用 Amazon Polly 合成语音示例 - Amazon Polly
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon Polly 合成语音示例

本页提供了在控制台、和 Python 中执行的 Amazon CLI简短语音合成示例。本示例使用纯文本执行语音合成,而不是使用 SSML。

Console
在控制台上合成语音
  1. 登录 Amazon Web Services Management Console 并打开 Amazon Polly 控制台,网址为。https://console.aws.amazon.com/polly/

  2. 选择文本到语音转换选项卡。文本字段将加载示例文本,以便您可以快速试用 Amazon Polly。

  3. 关闭 SSML

  4. 在输入框中键入或粘贴此文本。

    He was caught up in the game. In the middle of the 10/3/2014 W3C meeting he shouted, "Score!" quite loudly.
  5. 引擎下,选择生成式长篇神经标准

  6. 选择一种语言和 Amazon 地区,然后选择一种声音。(如果您为引擎选择神经,则只有支持 NTTS 的语言和语音才可用。所有标准和长篇语音都会被禁用。)

  7. 要立即收听语音,请选择收听

  8. 要将语音保存到文件中,请执行以下操作之一:

    1. 选择下载

    2. 要更改为其他文件格式,请展开其他设置,打开语音文件格式设置,选择所需的文件格式,然后选择下载

Amazon CLI

在本练习中,将通过传送输入文本来调用 SynthesizeSpeech 操作。您可以将生成的音频保存为文件并验证其内容。

  1. 运行synthesize-speech Amazon CLI 命令将样本文本合成到音频文件 (hello.mp3)。

    以下 Amazon CLI 示例是针对 Unix、Linux 和 macOS 进行格式化的。对于 Windows,请将每行末尾的反斜杠 (\) Unix 行继续符替换为脱字号 (^) 并在输入文本周围使用全角引号(“),内部标签使用单引号(’)。

    aws polly synthesize-speech \ --output-format mp3 \ --voice-id Joanna \ --text 'Hello, my name is Joanna. I learned about the W3C on 10/3 of last year.' \ hello.mp3

    在对 synthesize-speech 的调用中,您提供样本文本,该文本将与您选择的语音进行合成。您必须提供语音 ID(将在后续步骤中进行说明)和输出格式。该命令会将生成的音频保存为 hello.mp3 文件。除 MP3 文件外,该操作还向控制台发送以下输出。

    { "ContentType": "audio/mpeg", "RequestCharacters": "71" }
  2. 播放生成的 hello.mp3 文件以验证合成的语音。

Python

要测试 Python 示例代码,您需要 Amazon SDK for Python (Boto)。有关说明,请参阅 适用于 Python (Boto3) 的 Amazon SDK

本示例中的 Python 代码将执行以下操作:

  • 调用, Amazon SDK for Python (Boto) 向 Amazon Polly 发送SynthesizeSpeech请求(通过提供一些文本作为输入)。

  • 访问在响应中生成的音频流并将音频保存为您本地磁盘上的文件 (speech.mp3)。

  • 使用您的本地系统的默认音频播放器播放音频文件。

将代码保存为一个文件 (example.py) 并运行。

"""Getting Started Example for Python 2.7+/3.3+""" from boto3 import Session from botocore.exceptions import BotoCoreError, ClientError from contextlib import closing import os import sys import subprocess from tempfile import gettempdir # Create a client using the credentials and region defined in the [adminuser] # section of the Amazon credentials file (~/.aws/credentials). session = Session(profile_name="adminuser") polly = session.client("polly") try: # Request speech synthesis response = polly.synthesize_speech(Text="Hello world!", OutputFormat="mp3", VoiceId="Joanna") except (BotoCoreError, ClientError) as error: # The service returned an error, exit gracefully print(error) sys.exit(-1) # Access the audio stream from the response if "AudioStream" in response: # Note: Closing the stream is important because the service throttles on the # number of parallel connections. Here we are using contextlib.closing to # ensure the close method of the stream object will be called automatically # at the end of the with statement's scope. with closing(response["AudioStream"]) as stream: output = os.path.join(gettempdir(), "speech.mp3") try: # Open a file for writing the output as a binary stream with open(output, "wb") as file: file.write(stream.read()) except IOError as error: # Could not write to file, exit gracefully print(error) sys.exit(-1) else: # The response didn't contain audio data, exit gracefully print("Could not stream audio") sys.exit(-1) # Play the audio using the platform's default player if sys.platform == "win32": os.startfile(output) else: # The following works on macOS and Linux. (Darwin = mac, xdg-open = linux). opener = "open" if sys.platform == "darwin" else "xdg-open" subprocess.call([opener, output])

有关更深入的示例,请参阅以下主题: