你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
语音服务允许你将 文本转换为合成语音 ,并使用 REST API 获取区域支持的语音列表 。 在本文中,你将了解授权选项、查询选项、如何构建请求以及如何解释响应。
文本转语音 REST API 支持许多区域设置中的神经网络“文本转语音”语音。 每个可用的终结点都与一个区域相关联。 需要你计划使用的终结点或区域的 API 密钥。 下面是指向详细信息的链接:
- 有关语音的完整列表,请参阅 语音服务的语言和语音支持。
- 有关区域可用性的信息,请参阅 语音服务支持的区域。
- 对于由世纪互联运营的 Azure 政府和 Microsoft Azure 终结点,请参阅这篇关于主权云的文章。
重要
标准语音和自定义语音的成本各不相同。 有关详细信息,请参阅 文本转语音定价。
先决条件
若要使用文本转语音 REST API,需要:
- 一个 Azure 帐户。 免费创建一个。
- Azure 门户中的语音资源。
- 来自您的语音资源密钥和端点页面的资源密钥和端点。
认证
每个请求都需要授权标头。 下表说明了每个功能支持哪些标头:
| 支持的授权标头 | 语音转文本 | 文本转语音 |
|---|---|---|
Ocp-Apim-Subscription-Key |
是的 | 是的 |
Authorization: Bearer |
是的 | 是的 |
使用 Ocp-Apim-Subscription-Key 标头时,只需提供资源密钥。 例如:
'Ocp-Apim-Subscription-Key': 'YourSpeechResourceKey'
如果您在 Authorization: Bearer 中使用 STS 承载令牌流程,请先向 issueToken 端点发送请求。 在此请求中,将资源密钥交换为有效期为 10 分钟的访问令牌。
另一种方法是使用Microsoft Entra身份验证,该身份验证还使用 Authorization: Bearer 标头,但使用通过Microsoft Entra ID颁发的令牌。 请参阅 使用Microsoft Entra身份验证。
如何获取 STS 访问令牌
若要获取 STS 访问令牌,请使用 Ocp-Apim-Subscription-Key 和资源密钥向 issueToken 端点发出请求。
终结点 issueToken 采用以下格式:
https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken
将 YourResourceName 替换为你的语音资源名称。
注意
此终结点要求资源配置 自定义子域 。 对于没有自定义域的资源,请改用区域终结点: https://<region>.api.cognitive.microsoft.com/sts/v1.0/issueToken 将 <region> 替换为资源的Azure区域(例如,eastus)。
使用以下示例创建访问令牌请求。
HTTP 示例
此示例是一个简单的 HTTP 请求来获取令牌。 将 YourSpeechResourceKey 替换为语音服务的资源密钥。 将 YourResourceName 替换为你的语音资源名称。
POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YourSpeechResourceKey
Host: YourResourceName.cognitiveservices.azure.com
Content-type: application/x-www-form-urlencoded
Content-Length: 0
响应正文包含 JSON Web 令牌 (JWT) 格式的访问令牌。
PowerShell 示例
此示例是一个简单的 PowerShell 脚本,用于获取访问令牌。 将 YourSpeechResourceKey 替换为语音服务的资源密钥。 将 YourResourceName 替换为你的语音资源名称。
$FetchTokenHeader = @{
'Content-type'='application/x-www-form-urlencoded';
'Content-Length'= '0';
'Ocp-Apim-Subscription-Key' = 'YourSpeechResourceKey'
}
$OAuthToken = Invoke-RestMethod -Method POST `
-Uri https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken `
-Headers $FetchTokenHeader
# show the token received
$OAuthToken
cURL 示例
cURL 是 Linux(适用于 Linux 的 Windows 子系统)中提供的命令行工具。 此 cURL 命令演示如何获取访问令牌。 将 YourSpeechResourceKey 替换为语音服务的资源密钥。 将 YourResourceName 替换为你的语音资源名称。
curl -v -X POST \
"https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken" \
-H "Content-type: application/x-www-form-urlencoded" \
-H "Content-Length: 0" \
-H "Ocp-Apim-Subscription-Key: YourSpeechResourceKey"
C# 示例
此 C# 类演示如何获取访问令牌。 在实例化该类时,传递你的语音服务的资源密钥。 将 YourResourceName 替换为你的语音资源名称。
public class Authentication
{
public static readonly string FetchTokenUri =
"https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken";
private string subscriptionKey;
private string token;
public Authentication(string subscriptionKey)
{
this.subscriptionKey = subscriptionKey;
this.token = FetchTokenAsync(FetchTokenUri, subscriptionKey).Result;
}
public string GetAccessToken()
{
return this.token;
}
private async Task<string> FetchTokenAsync(string fetchUri, string subscriptionKey)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
UriBuilder uriBuilder = new UriBuilder(fetchUri);
var result = await client.PostAsync(uriBuilder.Uri.AbsoluteUri, null);
Console.WriteLine("Token Uri: {0}", uriBuilder.Uri.AbsoluteUri);
return await result.Content.ReadAsStringAsync();
}
}
}
Python示例
# Request module must be installed.
# Run pip install requests if necessary.
import requests
subscription_key = 'REPLACE_WITH_YOUR_KEY'
def get_token(subscription_key):
fetch_token_url = 'https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken'
headers = {
'Ocp-Apim-Subscription-Key': subscription_key
}
response = requests.post(fetch_token_url, headers=headers)
access_token = str(response.text)
print(access_token)
如何使用访问令牌
应将访问令牌作为 Authorization: Bearer <TOKEN> 头信息发送到服务。 每个访问令牌有效期为 10 分钟。 可以随时获取新令牌,但为了最大程度地减少网络流量和延迟,建议将同一令牌使用 9 分钟。
重要
持有者令牌的作用范围仅限于签发该令牌的端点。 从 YourResourceName.cognitiveservices.azure.com 获取的令牌仅适用于对该主机的请求。 来自 <region>.api.cognitive.microsoft.com 的令牌仅适用于区域性语音端点。 如果您在使用 Bearer 令牌时收到 401 错误,请改为将 Ocp-Apim-Subscription-Key 与您的资源密钥一起使用,因为这种方式适用于所有终结点格式。
下面是针对短音频的语音转文本 REST API 的示例 HTTP 请求:
POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: YourResourceName.cognitiveservices.azure.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive
// Message body here...
使用Microsoft Entra身份验证
要使用 Microsoft Entra 身份验证与语音识别 REST API 处理短音频,你需要创建一个访问令牌。 获取包含资源 ID 和Microsoft Entra访问令牌的访问令牌的步骤与使用语音 SDK 时的步骤相同。 按照此处的步骤使用Microsoft Entra身份验证
- 创建适用于语音的 Foundry 资源
- 配置语音资源以用于Microsoft Entra身份验证
- 获取Microsoft Entra访问令牌
- 获取语音资源 ID
获取资源 ID 和Microsoft Entra访问令牌后,可以按以下格式构造实际访问令牌:
aad#YOUR_RESOURCE_ID#YOUR_MICROSOFT_ENTRA_ACCESS_TOKEN
需要在资源 ID 和访问令牌之间包括“aad#”前缀和“#”(哈希)分隔符。
下面是针对短音频的语音转文本 REST API 的示例 HTTP 请求:
POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: YourResourceName.cognitiveservices.azure.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive
// Message body here...
若要详细了解Microsoft Entra访问令牌(包括令牌生存期),请访问 Microsoft 身份平台中的 访问令牌。
获取语音列表
可以使用 Speech 资源终结点获取完整的语音列表。 将 /tts/cognitiveservices/voices/list 路径与资源终结点一起使用。 例如,使用 https://YourResourceName.cognitiveservices.azure.com/tts/cognitiveservices/voices/list 终结点。 有关所有受支持区域的列表,请参阅 区域 文档。
注意
预览版中的语音和样式 仅在区域子集中可用。 有关支持公共预览版中语音和样式的区域的当前列表,请参阅 语音服务区域表。
请求标头
此表列出了文本转语音请求的必需标头和可选标头:
| 标题 | 描述 | 必需或可选 |
|---|---|---|
Ocp-Apim-Subscription-Key |
语音资源密钥。 | 此标头或 Authorization 是必需的。 |
Authorization |
一个授权令牌,前面有一个单词 Bearer。 有关详细信息,请参阅 “身份验证”。 |
此标头或 Ocp-Apim-Subscription-Key 是必需的。 |
请求正文
对此终结点的 GET 请求不需要正文。
示例请求
此请求只需要授权标头:
GET /tts/cognitiveservices/voices/list HTTP/1.1
Host: YourResourceName.cognitiveservices.azure.com
Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY
下面是一个示例 curl 命令:
curl --location --request GET 'https://YourResourceName.cognitiveservices.azure.com/tts/cognitiveservices/voices/list' \
--header 'Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY'
示例响应
你应会收到一个响应,其中 JSON 正文包含所有受支持的区域设置、声音、性别、风格和其他详细信息。
WordsPerMinute每个语音的属性可用于估计输出语音的长度。 此 JSON 示例显示部分结果,以说明响应的结构:
[
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
"DisplayName": "Jenny",
"LocalName": "Jenny",
"ShortName": "en-US-JennyNeural",
"Gender": "Female",
"Locale": "en-US",
"LocaleName": "English (United States)",
"StyleList": [
"assistant",
"chat",
"customerservice",
"newscast",
"angry",
"cheerful",
"sad",
"excited",
"friendly",
"terrified",
"shouting",
"unfriendly",
"whispering",
"hopeful"
],
"SampleRateHertz": "48000",
"VoiceType": "Neural",
"Status": "GA",
"WordsPerMinute": "152"
},
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (en-US, JennyMultilingualNeural)",
"DisplayName": "Jenny Multilingual",
"LocalName": "Jenny Multilingual",
"ShortName": "en-US-JennyMultilingualNeural",
"Gender": "Female",
"Locale": "en-US",
"LocaleName": "English (United States)",
"SecondaryLocaleList": [
"de-DE",
"en-AU",
"en-CA",
"en-GB",
"es-ES",
"es-MX",
"fr-CA",
"fr-FR",
"it-IT",
"ja-JP",
"ko-KR",
"pt-BR",
"zh-CN"
],
"SampleRateHertz": "48000",
"VoiceType": "Neural",
"Status": "GA",
"WordsPerMinute": "190"
},
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (ga-IE, OrlaNeural)",
"DisplayName": "Orla",
"LocalName": "Orla",
"ShortName": "ga-IE-OrlaNeural",
"Gender": "Female",
"Locale": "ga-IE",
"LocaleName": "Irish (Ireland)",
"SampleRateHertz": "48000",
"VoiceType": "Neural",
"Status": "GA",
"WordsPerMinute": "139"
},
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (zh-CN, YunxiNeural)",
"DisplayName": "Yunxi",
"LocalName": "云希",
"ShortName": "zh-CN-YunxiNeural",
"Gender": "Male",
"Locale": "zh-CN",
"LocaleName": "Chinese (Mandarin, Simplified)",
"StyleList": [
"narration-relaxed",
"embarrassed",
"fearful",
"cheerful",
"disgruntled",
"serious",
"angry",
"sad",
"depressed",
"chat",
"assistant",
"newscast"
],
"SampleRateHertz": "48000",
"VoiceType": "Neural",
"Status": "GA",
"RolePlayList": [
"Narrator",
"YoungAdultMale",
"Boy"
],
"WordsPerMinute": "293"
},
// Redacted for brevity
]
HTTP 状态代码
每个响应的 HTTP 状态代码指示成功或常见错误。
| HTTP 状态代码 | 描述 | 可能的原因 |
|---|---|---|
| 200 | 还行 | 请求成功。 |
| 400 | 错误请求 | 缺少必需参数、空或 null。 或者,传递给必需或可选参数的值无效。 一个常见原因是标头太长。 |
| 401 | 未经 授权 | 请求未获授权。 确保资源密钥或令牌有效且位于正确的区域中。 |
| 429 | 请求过多 | 已超出资源允许的请求配额或速率。 |
| 502 | 网关错误 | 存在网络或服务器端问题。 此状态还可能指示标头无效。 |
将文本转换为语音
终结点 cognitiveservices/v1 允许使用 语音合成标记语言(SSML)将文本转换为语音。
区域和终结点
这些区域通过 REST API 支持文本转语音。 请务必选择与语音资源区域匹配的终结点。
标准语音
使用此表可以按区域或终结点确定 神经语音的可用性 :
| 区域 | 端点 |
|---|---|
| 澳大利亚东部 | https://australiaeast.tts.speech.microsoft.com/cognitiveservices/v1 |
| 巴西南部 | https://brazilsouth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 加拿大中部 | https://canadacentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| 加拿大东部 | https://canadaeast.tts.speech.microsoft.com/cognitiveservices/v1 |
| 美国中部 | https://centralus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 东亚 | https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1 |
| 美国东部 | https://eastus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 美国东部 2 | https://eastus2.tts.speech.microsoft.com/cognitiveservices/v1 |
| 法国中部 | https://francecentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| 德国中西部 | https://germanywestcentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| 印度中部 | https://centralindia.tts.speech.microsoft.com/cognitiveservices/v1 |
| 意大利北部 | https://italynorth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 日本东部 | https://japaneast.tts.speech.microsoft.com/cognitiveservices/v1 |
| 日本西部 | https://japanwest.tts.speech.microsoft.com/cognitiveservices/v1 |
| 韩国中部 | https://koreacentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| 美国中北部 | https://northcentralus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 北欧 | https://northeurope.tts.speech.microsoft.com/cognitiveservices/v1 |
| 挪威东部 | https://norwayeast.tts.speech.microsoft.com/cognitiveservices/v1 |
| 卡塔尔中部 | https://qatarcentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| 南非北部 | https://southafricanorth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 美国中南部 | https://southcentralus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 东南亚 | https://southeastasia.tts.speech.microsoft.com/cognitiveservices/v1 |
| 瑞典中部 | https://swedencentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| 瑞士北部 | https://switzerlandnorth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 瑞士西部 | https://switzerlandwest.tts.speech.microsoft.com/cognitiveservices/v1 |
| 阿拉伯联合酋长国北部 | https://uaenorth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 英国南部 | https://uksouth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 英国西部 | https://ukwest.tts.speech.microsoft.com/cognitiveservices/v1 |
| US Gov 亚利桑那州 | https://usgovarizona.tts.speech.azure.us/cognitiveservices/v1 |
| US Gov 弗吉尼亚州 | https://usgovvirginia.tts.speech.azure.us/cognitiveservices/v1 |
| 美国中西部 | https://westcentralus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 西欧 | https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1 |
| 美国西部 | https://westus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 美国西部 2 | https://westus2.tts.speech.microsoft.com/cognitiveservices/v1 |
| 美国西部 3 | https://westus3.tts.speech.microsoft.com/cognitiveservices/v1 |
提示
有关支持预览版语音的区域的当前列表,请参阅 语音服务区域表。
自定义语音
如果您创建了自定义的语音,请使用您创建的终结点。 还可以使用以下终结点。 用自定义语音模型的部署 ID 替换 {deploymentId}。
| 区域 | 培训 | 部署 | 端点 |
|---|---|---|---|
| 澳大利亚东部 | 是的 | 是的 | https://australiaeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 巴西南部 | 不 | 是的 | https://brazilsouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 加拿大中部 | 不 | 是的 | https://canadacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 美国中部 | 不 | 是的 | https://centralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 东亚 | 不 | 是的 | https://eastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 美国东部 | 是的 | 是的 | https://eastus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 美国东部 2 | 是的 | 是的 | https://eastus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 法国中部 | 不 | 是的 | https://francecentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 德国中西部 | 不 | 是的 | https://germanywestcentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 印度中部 | 是的 | 是的 | https://centralindia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 意大利北部 | 不 | 是的 | https://italynorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 日本东部 | 是的 | 是的 | https://japaneast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 日本西部 | 不 | 是的 | https://japanwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 韩国中部 | 是的 | 是的 | https://koreacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 美国中北部 | 不 | 是的 | https://northcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 北欧 | 是的 | 是的 | https://northeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 挪威东部 | 不 | 是的 | https://norwayeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 南非北部 | 不 | 是的 | https://southafricanorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 美国中南部 | 是的 | 是的 | https://southcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 东南亚 | 是的 | 是的 | https://southeastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 瑞典中部 | 不 | 是的 | https://swedencentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 瑞士北部 | 不 | 是的 | https://switzerlandnorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 瑞士西部 | 不 | 是的 | https://switzerlandwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 阿拉伯联合酋长国北部 | 不 | 是的 | https://uaenorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 英国南部 | 是的 | 是的 | https://uksouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 美国中西部 | 不 | 是的 | https://westcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 西欧 | 是的 | 是的 | https://westeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 美国西部 | 是的 | 是的 | https://westus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 美国西部 2 | 是的 | 是的 | https://westus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 美国西部 3 | 不 | 是的 | https://westus3.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
注意
上述区域可用于标准语音模型托管和实时合成。 自定义语音训练仅在某些区域中可用。 但是,可以轻松地将 自定义语音模型 从这些区域复制到上述列表中的其他区域。
长音频 API
长音频 API 在多个区域中可用,并且具有独特的端点。
| 区域 | 端点 |
|---|---|
| 澳大利亚东部 | https://australiaeast.customvoice.api.speech.microsoft.com |
| 美国东部 | https://eastus.customvoice.api.speech.microsoft.com |
| 印度中部 | https://centralindia.customvoice.api.speech.microsoft.com |
| 美国中南部 | https://southcentralus.customvoice.api.speech.microsoft.com |
| 东南亚 | https://southeastasia.customvoice.api.speech.microsoft.com |
| 英国南部 | https://uksouth.customvoice.api.speech.microsoft.com |
| 西欧 | https://westeurope.customvoice.api.speech.microsoft.com |
请求标头
此表列出了文本转语音请求的必需标头和可选标头:
| 标题 | 描述 | 必需或可选 |
|---|---|---|
Authorization |
一个授权令牌,前面有一个单词 Bearer。 有关详细信息,请参阅 “身份验证”。 |
必填 |
Content-Type |
指定所提供文本的内容类型。 接受的值: application/ssml+xml。 |
必填 |
X-Microsoft-OutputFormat |
指定音频输出格式。 有关接受值的完整列表,请参阅 音频输出。 | 必填 |
User-Agent |
应用程序名称。 提供的值必须少于 255 个字符。 | 必填 |
请求正文
如果使用自定义语音,请求正文可以发送为纯文本(ASCII 或 UTF-8)。 否则,每个 POST 请求的正文将作为 SSML 发送。 SSML 允许你选择文本到语音功能返回的合成语音的语音和语言。 有关支持语音的完整列表,请参阅 语音服务的语言和语音支持。
示例请求
此 HTTP 请求使用 SSML 指定语音和语言。 如果正文长度较长,并且生成的音频超过 10 分钟,则将其截断为 10 分钟。 换句话说,音频长度不能超过 10 分钟。
POST /cognitiveservices/v1 HTTP/1.1
X-Microsoft-OutputFormat: riff-24khz-16bit-mono-pcm
Content-Type: application/ssml+xml
Host: YourResourceName.cognitiveservices.azure.com
Content-Length: <Length>
Authorization: Bearer [Base64 access_token]
User-Agent: <Your application name>
<speak version='1.0' xml:lang='en-US'><voice xml:lang='en-US' xml:gender='Male'
name='en-US-ChristopherNeural'>
I'm excited to try text to speech!
</voice></speak>
* 对于内容长度,应使用自己的内容长度。 在大多数情况下,会自动计算此值。
HTTP 状态代码
每个响应的 HTTP 状态代码指示成功或常见错误:
| HTTP 状态代码 | 描述 | 可能的原因 |
|---|---|---|
| 200 | 还行 | 请求成功。 响应主体是音频文件。 |
| 400 | 错误请求 | 缺少必需参数、空或 null。 或者,传递给必需或可选参数的值无效。 一个常见原因是标头太长。 |
| 401 | 未经 授权 | 请求未获授权。 确保语音资源密钥或令牌有效且位于正确的区域中。 |
| 415 | 不支持的媒体类型 | 可能提供了错误的 Content-Type 值。
Content-Type 应设置为 application/ssml+xml. |
| 429 | 请求过多 | 已超出资源允许的请求配额或速率。 |
| 502 | 网关错误 | 存在网络或服务器端问题。 此状态还可能指示标头无效。 |
| 503 | 服务不可用 | 由于各种原因,服务器端存在问题。 |
如果 HTTP 状态为 200 OK,响应正文包含请求格式的音频文件。 此文件可在传输、保存到缓冲区或保存到文件时播放。
音频输出
支持的流式处理和非流式处理音频格式作为 X-Microsoft-OutputFormat 标头在每个请求中发送。 每个格式都包含比特率和编码类型。 语音服务支持 48-kHz、24-kHz、16-kHz 和 8-kHz 音频输出。 每个标准语音模型在 24kHz 和高保真 48kHz 上可用。
amr-wb-16000hz
audio-16khz-16bit-32kbps-mono-opus
audio-16khz-32kbitrate-mono-mp3
audio-16khz-64kbitrate-mono-mp3
audio-16khz-128kbitrate-mono-mp3
audio-24khz-16bit-24kbps-mono-opus
audio-24khz-16bit-48kbps-mono-opus
audio-24khz-48kbitrate-mono-mp3
audio-24khz-96kbitrate-mono-mp3
audio-24khz-160kbitrate-mono-mp3
audio-48khz-96kbitrate-mono-mp3
audio-48khz-192kbitrate-mono-mp3
g722-16khz-64kbps
ogg-16khz-16bit-mono-opus
ogg-24khz-16bit-mono-opus
ogg-48khz-16bit-mono-opus
raw-8khz-8bit-mono-alaw
raw-8khz-8bit-mono-mulaw
raw-8khz-16bit-mono-pcm
raw-16khz-16bit-mono-pcm
raw-16khz-16bit-mono-truesilk
raw-22050hz-16bit-mono-pcm
raw-24khz-16bit-mono-pcm
raw-24khz-16bit-mono-truesilk
raw-44100hz-16bit-mono-pcm
raw-48khz-16bit-mono-pcm
webm-16khz-16bit-mono-opus
webm-24khz-16bit-24kbps-mono-opus
webm-24khz-16bit-mono-opus
注意
如果选择 48kHz 输出格式,则会相应地调用具有 48kHz 的高保真语音模型。 合成时,可以通过向上采样或向下采样来获取 24kHz 和 48kHz 以外的采样率,例如,44.1kHz 从 48kHz 向下采样。
如果所选的语音和输出格式具有不同的比特率,则根据需要重新采样音频。 可以使用 ogg-24khz-16bit-mono-opus解码格式。