語音服務允許你將 文字轉換成合成語音 ,並透過 REST API 取得該區域支援的語音列表 。 在本文中,您將了解授權選項、查詢選項、如何結構請求,以及如何解讀回應。
提示
文字轉語音 REST API 的使用情境有限。 只有在無法使用 Speech SDK 的情況下才使用。 例如,透過語音 SDK,你可以 訂閱活動 ,獲得更多關於文字轉語音處理與結果的見解。
文字轉語音 REST API 在許多地區支援神經文字轉語音。 每個可用端點都對應一個區域。 您需要為你計畫使用的端點或區域提供 API 金鑰。 以下是更多資訊連結:
- 完整的語音列表,請參見 語音服務的語言與語音支援。
- 有關區域可用性資訊,請參閱語音 服務支援區域。
- 關於由21Vianet端點操作的Azure Government與Microsoft Azure,請參見關於主權雲的文章。
重要
標準音色與客製化音色的費用各異。 更多資訊請參閱 文字轉語音定價。
Prerequisites
要使用文字轉語音 REST API,你需要:
認證
每個請求都需要一個授權標頭。 下表說明每個功能支援哪些標頭:
| 支援的授權標頭 | 語音轉文字 | 文字轉語音 |
|---|---|---|
Ocp-Apim-Subscription-Key |
是的 | 是的 |
Authorization: Bearer |
是的 | 是的 |
使用 Ocp-Apim-Subscription-Key 標頭時,必須只提供你的資源金鑰。 例如:
'Ocp-Apim-Subscription-Key': 'YourSpeechResourceKey'
如果您使用 STS 持有人權杖流程搭配Authorization: Bearer,請先對issueToken端點提出要求。 在此要求中,要以資源金鑰交換有效期間 10 分鐘的存取權杖。
另一種選擇是使用 Microsoft Entra 認證,也使用 Authorization: Bearer 標頭,但憑證由 Microsoft Entra ID 發出。 參見 Use Microsoft Entra authentication。
如何取得 STS 存取令牌
要取得 STS 存取權杖,請使用 issueToken 和 你的資源金鑰向Ocp-Apim-Subscription-Key端點提出請求。
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 請求,用來取得一個 token。 用你的語音服務資源金鑰替換 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 Token (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(以及 Windows 子系統 Linux 版)中使用的命令列工具。 這個 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分鐘。 你可以隨時取得新的令牌,但為了減少網路流量和延遲,我們建議使用相同的令牌九分鐘。
重要
持有人權杖的範圍是核發它們的端點。 從YourResourceName.cognitiveservices.azure.com取得的權杖只對同一主機的要求有效。 來自 <region>.api.cognitive.microsoft.com 的權杖只能用於區域性 Speech 端點。 如果您在使用 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 存取權杖的步驟與使用 Speech SDK 相同。 請依照此處步驟使用 Microsoft Entra 認證
- 建立語音鑄造資源
- 設定語音資源以進行 Microsoft Entra 認證
- 取得 Microsoft Entra 存取令牌
- 取得語音資源ID
取得資源 ID 與 Microsoft Entra 存取權杖後,實際的存取權杖可依以下格式建構:
aad#YOUR_RESOURCE_ID#YOUR_MICROSOFT_ENTRA_ACCESS_TOKEN
你需要在資源識別碼和存取權杖之間加入「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 身分識別平台中的存取權杖。
取得語音列表
你可以用語音資源端點取得完整的語音清單。 將 /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 |
| 美國亞利桑那州政府 | 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 |
提示
關於目前支援語音預覽的區域列表,請參閱 語音服務區域表。
自訂語音
如果你建立了自訂語音,請使用你建立的那個端點。 你也可以使用以下端點。 替換 {deploymentId} 成你自訂語音模型的部署 ID。
| 區域 | 訓練 | 部署 | 終點 |
|---|---|---|---|
| 澳洲東部 | 是的 | 是的 | 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>
* 針對 Content-Length,您應使用自己的內容長度。 在大多數情況下,這個數值會自動計算。
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器解碼這個格式。