

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

# 为合成语音设置最长持续时间
<a name="maxduration-tag"></a>

*<prosody amazon:max-duration>*

目前只有标准 TTS 格式支持此标签。

要控制您希望语音在合成后花费多长时间，请使用具有 `<prosody>` 属性的 `amazon:max-duration` 标签。

合成的语音的持续时间会因您选择的语音而略有不同。这样很难使合成的语音与需要精确计时的视觉效果或其他活动匹配。对于翻译应用程序来说，此问题被扩大，因为使用不同语言说特定短语所需的时间可能大不相同。

`<prosody amazon:max-duration>` 标签使合成的语音与所需的时间量（持续时间）匹配。

此标签使用以下语法：

```
<prosody amazon:max-duration="time duration">
```

使用 `<prosody amazon:max-duration>` 标签，您可以指定持续时间，以秒或毫秒为单位：
+ `ns`：最长持续时间，以秒为单位
+ `nms`：最长持续时间，以毫秒为单位

例如，以下说出的文本的最长持续时间为 2 秒：

```
<speak>
     <prosody amazon:max-duration="2s">
          Human speech is a powerful way to communicate. 
     </prosody>
</speak>
```

放置在标签中的文本没有超过指定的持续时间。如果所选语音或语言所需时间通常长于该持续时间，Amazon Polly 可加快语音以使其符合指定的持续时间。

如果指定的持续时间长于以正常速率读取文本所需的时间，Amazon Polly 将正常读取语音。它不会减慢语音或添加静默，因此生成的音频比请求的短。

**注意**  
Amazon Polly 提高的速度不会超过正常速率的 5 倍。如果文本的说出速度超过此值，则通常不明智。如果语音在加速到最大值后仍无法符合指定的持续时间，则音频将加速，但持续时间将长于指定的持续时间。

您可以在 `<prosody amazon:max-duration>` 标签中包括单个句子或多个句子，并且可以在文本中使用多个 `<prosody amazon:max-duration>` 标签。

例如：

```
<speak>
     <prosody amazon:max-duration="2400ms">
        Human speech is a powerful way to communicate.
     </prosody>
     <break strength="strong"/>
     <prosody amazon:max-duration="5100ms">
        Even a simple ‘Hello’ can convey a lot of information depending on the pitch, intonation, and tempo.
     </prosody>
     <break strength="strong"/>
     <prosody amazon:max-duration="8900ms">
        We naturally understand this information, which is why speech is ideal for creating applications where 
        a screen isn’t practical or possible, or simply isn’t convenient.
     </prosody>
</speak>
```



```
```

使用 `<prosody amazon:max-duration>` 标签可增加 Amazon Polly 返回合成的语音时的延迟。延迟程度取决于段落及其长度。我们建议使用由较短文本段落组成的文本。

**限制**

在如何使用 `<prosody amazon:max-duration>` 标签及其如何与其他 SSML 标签结合使用方面存在限制：
+ `<prosody amazon:max-duration>` 标签中的文本不能超过 1500 个字符。
+ 不能嵌套 `<prosody amazon:max-duration>` 标签。如果您将一个 `<prosody amazon:max-duration>` 标签放置在另一个此标签中，则 Amazon Polly 会忽略内部标签。

  例如，在下面，将忽略 `<prosody amazon:max-duration="5s">` 标签：

  ```
  <speak>
       <prosody amazon:max-duration="16s">
            Human speech is a powerful way to communicate.
          
            <prosody amazon:max-duration="5s">
                 Even a simple ‘Hello’ can convey a lot of information depending on the pitch, intonation, and tempo.
            </prosody>
  
            We naturally understand this information, which is why speech is ideal for creating applications where a screen isn’t practical or possible, or simply isn’t convenient.
       </prosody>
  </speak>
  ```
+ 不能在 `<prosody>` 标签中使用具有 `rate` 属性的 `<prosody amazon:max-duration>` 标签。这是因为二者都会影响文本的朗读速度。

  在以下示例中，Amazon Polly 将忽略 `<prosody rate="2">` 标签：

  ```
  <speak>
       <prosody amazon:max-duration="7500ms">
            Human speech is a powerful way to communicate.
        
            <prosody rate="2">
                 Even a simple ‘Hello’ can convey a lot of information depending on the pitch, intonation, and tempo.
            </prosody>
       </prosody>
  </speak>
  ```

**停顿和 `max-duration` **

当使用 `max-duration` 标签时，您仍可以在文本中插入停顿。但是，Amazon Polly 在计算语音的最长持续时间时会包括停顿的长度。此外，Amazon Polly 会保留放置在段落中的逗号和句号处出现的短停顿并包括在最长持续时间中。

例如，在下面的数据块中，在 8 秒语音中出现由逗号和句号引起的 600 毫秒中断：

```
<speak>
     <prosody amazon:max-duration="8s">
          Human speech is a powerful way to communicate.
          <break time="600ms"/>
          Even a simple ‘Hello’ can convey a lot of information depending on the pitch, intonation, and tempo.
     </prosody>
</speak>
```

