本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Polly 合成语音示例
本页提供了在控制台、和 Python 中执行的 Amazon CLI简短语音合成示例。本示例使用纯文本执行语音合成,而不是使用 SSML。
- Console
-
在控制台上合成语音
-
登录 Amazon Web Services Management Console 并打开 Amazon Polly 控制台,网址为。https://console.aws.amazon.com/polly/
-
选择文本到语音转换选项卡。文本字段将加载示例文本,以便您可以快速试用 Amazon Polly。
-
关闭 SSML。
-
在输入框中键入或粘贴此文本。
He was caught up in the game. In the middle of the 10/3/2014 W3C meeting he shouted, "Score!" quite loudly.
-
在引擎下,选择生成式、长篇、神经或标准。
-
选择一种语言和 Amazon 地区,然后选择一种声音。(如果您为引擎选择神经,则只有支持 NTTS 的语言和语音才可用。所有标准和长篇语音都会被禁用。)
-
要立即收听语音,请选择收听。
-
要将语音保存到文件中,请执行以下操作之一:
-
选择下载。
-
要更改为其他文件格式,请展开其他设置,打开语音文件格式设置,选择所需的文件格式,然后选择下载。
-
-
- Amazon CLI
-
在本练习中,将通过传送输入文本来调用
SynthesizeSpeech
操作。您可以将生成的音频保存为文件并验证其内容。-
运行
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" }
-
播放生成的
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])
-
有关更深入的示例,请参阅以下主题: