Amazon Polly
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

神经 TTS

Amazon Polly 拥有一个 神经 TTS (NTTS) 系统,可以生成比标准语音更高质量的声音。NTTS 系统可以尽可能生成最自然的文本到语音转换的似人类的语音。

标准 TTS 语音使用拼接合成。此方法将记录的语音音素串联在一起(拼接),生成发音非常自然的合成语音。然而,语音中不可避免的语调变化和用于分割波形的技术限制了语音的质量。

Amazon Polly 神经 TTS 系统不使用标准的拼接合成方法来生成语音。它具有两个部分:

  • 一种神经网络,将一系列音素(最基本的语言单位)转换为一系列声谱图,这些声谱图是不同频带能量水平的快照

  • 一种声码器,可将声谱图转换为连续的音频信号。

神经 TTS 系统的第一个组成部分是序列到序列模型。该模型不仅仅从相应的输入创建其结果,而且还考虑输入元素的序列如何配合使用。该模型选择它输出的声谱图,使其频带强调人脑在处理语音时使用的声学特征。

然后该模型的输出传递给神经声码器。声码器会将声谱图转换为语音波形。当训练用于构建通用级拼接合成系统的大型数据集时,这种序列到序列的方法将产生质量更高,发音更自然的声音。

功能和区域兼容性

并非所有 AWS 区域都提供神经语音,该语音也并非支持所有的 Amazon Polly 功能。

以下区域支持神经语音:

  • 美国东部(弗吉尼亚北部):us-east-1

  • 美国西部(俄勒冈):us-west-2

  • 欧洲(爱尔兰):eu-west-1

这些区域的终端节点和协议与标准语音所用的相同。有关更多信息,请参阅区域和终端节点

神经语音支持以下功能:

  • 实时和异步语音合成操作。

  • 播音员风格。(有关播音员风格的更多信息,请参阅 NTTS 播音员风格。)

  • 所有语音标记。

  • 大多(但不是所有)Amazon Polly 支持的 SSML 标签。(有关 NTTS 支持的 SSML 标签的更多信息,请参阅支持的 SSML 标签。)

与标准语音一样,您可以从各种采样率中进行选择,以优化应用程序的带宽和音频质量。标准和神经语音的有效采样率为 8 kHz、16 kHz、22 kHz 或 24 kHz。标准语音的默认值为 22 kHz。神经语音的默认值是 24 kHz。Amazon Polly 支持 MP3、OGG (Vorbis) 和原始 PCM 音频流格式。

语音引擎

Amazon Polly 使您可以使用具有 engine 属性的神经或标准语音。该属性有两个可能的值:StandardNeural,表示是要使用标准语音还是神经语音。Standard 是默认值。

选择语音引擎(控制台)

要选择语音引擎(控制台)

  1. 访问 https://console.amazonaws.cn/polly/,打开 Amazon Polly 控制台。

  2. 在文本到语音转换页面上,对于 Engine (引擎),选择 Standard (标准)Neural (神经)

    
                            控制台 Text-to-Speech (文本到语音转换) 页面上的 Engine (引擎) 选项。

    如果选择 Neural (神经),则只有神经语音可用,纯标准语音将被禁用。

选择语音引擎 (CLI)

要选择语音引擎 (CLI)

engine 参数是可选的,有两个可能的值:standardNeural。在创建 SynthesisSynthesisTask 操作时使用该属性。

例如,您可以使用以下代码在美国西部 1(俄勒冈)区域中运行 start-speech-synthesis-task AWS CLI 命令

以下 AWS CLI 示例针对 Linux、Unix 和 macOS 编排了格式。对于 Windows,请将每行末尾处的反斜杠 (\) Unix 继续符替换为脱字号 (^),并对输入文本使用双引号 ("),对内部标签使用单引号 (')。

aws polly start-speech-synthesis-task \ --engine neural --region us-west-1 \ --endpoint-url "https://polly.us-west-1.amazonaws.com/" \ --output-format mp3 \ --output-s3-bucket-name your-bucket-name \ --output-s3-key-prefix optional/prefix/path/file \ --voice-id Joanna \ --text file://text_file.txt

这将生成与以下内容类似的响应:

"SynthesisTask": { "CreationTime": [..], "Engine": "neural", "OutputFormat": "mp3", "OutputUri": "https://s3.us-west-1.amazonaws.com/your-bucket-name/optional/prefix/path/file.<task_id>.mp3", "TextType": "text", "RequestCharacters": [..], "TaskStatus": "scheduled", "TaskId": [task_id], "VoiceId": "Joanna" }