<html class="layout layout-holy-grail show-table-of-contents conceptual show-breadcrumb default-focus" lang="en-us" dir="ltr" data-authenticated="false" data-auth-status-determined="false" data-target="docs" x-ms-format-detection="none">
			
		<head>
			<title>Text to speech API reference (REST) - Speech service - Azure AI services | Microsoft Learn</title>
			<meta charset="utf-8">
			<meta name="viewport" content="width=device-width, initial-scale=1.0">
			<meta name="color-scheme" content="light dark">

			<meta name="description" content="Learn how to use the REST API to convert text into synthesized speech.">
			<link rel="canonical" href="https://learn.microsoft.com/en-us/azure/ai-services/speech-service/rest-text-to-speech"> 

			<!-- Non-customizable open graph and sharing-related metadata -->
			<meta name="twitter:card" content="summary_large_image">
			<meta name="twitter:site" content="@MicrosoftLearn">
			<meta property="og:type" content="website">
			<meta property="og:image:alt" content="Microsoft Learn">
			<meta property="og:image" content="https://learn.microsoft.com/en-us/media/open-graph-image.png">
			<!-- Page specific open graph and sharing-related metadata -->
			<meta property="og:title" content="Text to speech API reference (REST) - Speech service - Azure AI services">
			<meta property="og:url" content="https://learn.microsoft.com/en-us/azure/ai-services/speech-service/rest-text-to-speech">
			<meta property="og:description" content="Learn how to use the REST API to convert text into synthesized speech.">
			<meta name="platform_id" content="9c6b8162-c824-76ed-289a-d6b9840af93a"> <meta name="scope" content="Azure">
			<meta name="locale" content="en-us">
			 <meta name="adobe-target" content="true">
			<meta name="uhfHeaderId" content="azure">

			<meta name="page_type" content="conceptual">

			<!--page specific meta tags-->
			

			<!-- custom meta tags -->
			
		<meta name="breadcrumb_path" content="../../breadcrumb/azure-ai/toc.json">
	
		<meta name="feedback_help_link_url" content="https://learn.microsoft.com/answers/tags/55/azure-speech/">
	
		<meta name="feedback_help_link_type" content="get-help-at-qna">
	
		<meta name="feedback_product_url" content="https://feedback.azure.com/d365community/forum/09041fae-0b25-ec11-b6e6-000d3a4f0858?c=21041fae-0b25-ec11-b6e6-000d3a4f0858">
	
		<meta name="feedback_system" content="Standard">
	
		<meta name="permissioned-type" content="public">
	
		<meta name="recommendations" content="true">
	
		<meta name="recommendation_types" content="Training">
	
		<meta name="recommendation_types" content="Certification">
	
		<meta name="ms.suite" content="office">
	
		<meta name="author" content="PatrickFarley">
	
		<meta name="learn_banner_products" content="azure">
	
		<meta name="manager" content="nitinme">
	
		<meta name="ms.author" content="pafarley">
	
		<meta name="ms.collection" content="ce-skilling-ai-copilot">
	
		<meta name="ms.update-cycle" content="180-days">
	
		<meta name="ms.service" content="azure-ai-speech">
	
		<meta name="ms.topic" content="how-to">
	
		<meta name="ms.date" content="2025-08-07T00:00:00Z">
	
		<meta name="ms.custom" content="references_regions">
	
		<meta name="document_id" content="e351e013-771a-bfdc-0f76-815316c7717d">
	
		<meta name="document_version_independent_id" content="8c3a1bbe-196a-13b8-f905-b8ea7bfd0e7a">
	
		<meta name="updated_at" content="2025-08-20T17:29:00Z">
	
		<meta name="original_content_git_url" content="https://github.com/MicrosoftDocs/azure-ai-docs-pr/blob/live/articles/ai-services/speech-service/rest-text-to-speech.md">
	
		<meta name="gitcommit" content="https://github.com/MicrosoftDocs/azure-ai-docs-pr/blob/52669de2348b609aec4b05b0e1412e9e702de369/articles/ai-services/speech-service/rest-text-to-speech.md">
	
		<meta name="git_commit_id" content="52669de2348b609aec4b05b0e1412e9e702de369">
	
		<meta name="site_name" content="Docs">
	
		<meta name="depot_name" content="Learn.azure-ai">
	
		<meta name="schema" content="Conceptual">
	
		<meta name="toc_rel" content="toc.json">
	
		<meta name="word_count" content="2652">
	
		<meta name="asset_id" content="ai-services/speech-service/rest-text-to-speech">
	
		<meta name="moniker_range_name" content="">
	
		<meta name="item_type" content="Content">
	
		<meta name="source_path" content="articles/ai-services/speech-service/rest-text-to-speech.md">
	
		<meta name="previous_tlsh_hash" content="C46F9182430C4D02FDDD4F166AAFBE8B57F861886790A9A00C54293A50D22DA49BA24A9DF7ABE388337786942081640FC5C0667DC25E0FC4CA948BFBC46C7187FADD43FDF5">
	
		<meta name="github_feedback_content_git_url" content="https://github.com/MicrosoftDocs/azure-ai-docs/blob/main/articles/ai-services/speech-service/rest-text-to-speech.md">
	 
		<meta name="cmProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/a8711e05-df51-442a-970f-935304535b39" data-source="generated">
	
		<meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/3d3c20d8-79ed-4203-aee0-ffb9c9bafe72" data-source="generated">
	

			<!-- assets and js globals -->
			
			<link rel="stylesheet" href="../styles/site-ltr.css">
			<link rel="preconnect" href="//mscom.demdex.net" crossorigin="">
						<link rel="dns-prefetch" href="//target.microsoft.com">
						<link rel="dns-prefetch" href="//microsoftmscompoc.tt.omtrdc.net">
						<link rel="preload" as="script" href="/static/third-party/adobe-target/at-js/2.9.0/at.js" integrity="sha384-1/viVM50hgc33O2gOgkWz3EjiD/Fy/ld1dKYXJRUyjNYVEjSUGcSN+iPiQF7e4cu" crossorigin="anonymous" id="adobe-target-script" type="application/javascript">
			<script src="../scripts/wcp-consent.js"></script>
			<script src="../scripts/ms.jsll-4.min.js"></script>
			<script src="../scripts/deprecation.js"></script>

			<!-- msdocs global object -->
			<script id="msdocs-script">
		var msDocs = {
  "environment": {
    "accessLevel": "online",
    "azurePortalHostname": "portal.azure.com",
    "reviewFeatures": false,
    "supportLevel": "production",
    "systemContent": true,
    "siteName": "learn",
    "legacyHosting": false
  },
  "data": {
    "contentLocale": "en-us",
    "contentDir": "ltr",
    "userLocale": "en-us",
    "userDir": "ltr",
    "pageTemplate": "Conceptual",
    "brand": "azure",
    "context": {},
    "standardFeedback": true,
    "showFeedbackReport": false,
    "feedbackHelpLinkType": "get-help-at-qna",
    "feedbackHelpLinkUrl": "https://learn.microsoft.com/answers/tags/55/azure-speech/",
    "feedbackSystem": "Standard",
    "feedbackGitHubRepo": "MicrosoftDocs/azure-docs",
    "feedbackProductUrl": "https://feedback.azure.com/d365community/forum/09041fae-0b25-ec11-b6e6-000d3a4f0858?c=21041fae-0b25-ec11-b6e6-000d3a4f0858",
    "extendBreadcrumb": false,
    "isEditDisplayable": true,
    "isPrivateUnauthorized": false,
    "hideViewSource": false,
    "isPermissioned": false,
    "hasRecommendations": true,
    "contributors": [
      {
        "name": "PatrickFarley",
        "url": "https://github.com/PatrickFarley"
      },
      {
        "name": "eric-urban",
        "url": "https://github.com/eric-urban"
      },
      {
        "name": "ForrestGumb",
        "url": "https://github.com/ForrestGumb"
      },
      {
        "name": "nitinme",
        "url": "https://github.com/nitinme"
      },
      {
        "name": "anaharris-ms",
        "url": "https://github.com/anaharris-ms"
      }
    ]
  },
  "functions": {}
};;
	</script>

			<!-- base scripts, msdocs global should be before this -->
			<script src="../scripts/index-docs.js"></script>
			

			<!-- json-ld -->
			
		</head>
	
			<body id="body" data-bi-name="body" class="layout-body" lang="en-us" dir="ltr">
				<header class="layout-body-header">
		<div class="header-holder has-default-focus">
			
		<a href="#main" style="z-index: 1070" class="outline-color-text visually-hidden-until-focused position-fixed inner-focus focus-visible top-0 left-0 right-0 padding-xs text-align-center background-color-body">
			Skip to main content
		</a>
	
		<a href="#" data-skip-to-ask-learn="" style="z-index: 1070" class="outline-color-text visually-hidden-until-focused position-fixed inner-focus focus-visible top-0 left-0 right-0 padding-xs text-align-center background-color-body" hidden>
			Skip to Ask Learn chat experience
		</a>
	

			<div hidden id="cookie-consent-holder" data-test-id="cookie-consent-container"></div>
			<!-- Unsupported browser warning -->
			<div id="unsupported-browser" style="background-color: white; color: black; padding: 16px; border-bottom: 1px solid grey;" hidden>
				<div style="max-width: 800px; margin: 0 auto;">
					<p style="font-size: 24px">This browser is no longer supported.</p>
					<p style="font-size: 16px; margin-top: 16px;">
						Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
					</p>
					<div style="margin-top: 12px;">
						<a href="../html/p.html" style="background-color: #0078d4; border: 1px solid #0078d4; color: white; padding: 6px 12px; border-radius: 2px; display: inline-block;">
							Download Microsoft Edge
						</a>
						<a href="../html/internet-explorer-microsoft-edge.html" style="background-color: white; padding: 6px 12px; border: 1px solid #505050; color: #171717; border-radius: 2px; display: inline-block;">
							More info about Internet Explorer and Microsoft Edge
						</a>
					</div>
				</div>
			</div>
			<!-- site header -->
			<header id="ms--site-header" data-test-id="site-header-wrapper" role="banner" itemscope="itemscope" itemtype="http://schema.org/Organization">
				<div id="ms--mobile-nav" class="site-header display-none-tablet padding-inline-none gap-none" data-bi-name="mobile-header" data-test-id="mobile-header"></div>
				<div id="ms--primary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L1-header" data-test-id="primary-header"></div>
				<div id="ms--secondary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L2-header" data-test-id="secondary-header"></div>
			</header>
			
		<!-- banner -->
		<div data-banner="">
			<div id="disclaimer-holder"></div>
			
		</div>
		<!-- banner end -->
	
		</div>
	</header>
				 <section id="layout-body-menu" class="layout-body-menu display-flex" data-bi-name="menu">
					<div id="left-container" class="left-container display-none display-block-tablet padding-inline-sm padding-bottom-sm width-full">
		<nav id="affixed-left-container" class="margin-top-sm-tablet position-sticky display-flex flex-direction-column" aria-label="Primary"></nav>
	</div>
			  </section>

				<main id="main" role="main" class="layout-body-main" data-bi-name="content" lang="en-us" dir="ltr">
					
			<div id="ms--content-header" class="content-header default-focus border-bottom-none" data-bi-name="content-header">
		<div class="content-header-controls margin-xxs margin-inline-sm-tablet">
			<button type="button" class="contents-button button button-sm margin-right-xxs" data-bi-name="contents-expand" aria-haspopup="true" data-contents-button="">
				<span class="icon" aria-hidden="true"><span class="docon docon-menu"></span></span>
				<span class="contents-expand-title"> Table of contents </span>
			</button>
			<button type="button" class="ap-collapse-behavior ap-expanded button button-sm" data-bi-name="ap-collapse" aria-controls="action-panel">
				<span class="icon" aria-hidden="true"><span class="docon docon-exit-mode"></span></span>
				<span>Exit editor mode</span>
			</button>
		</div>
	</div>
			<div data-main-column="" class="padding-sm padding-top-none padding-top-sm-tablet">
				<div>
					
		<div id="article-header" class="background-color-body margin-bottom-xs display-none-print">
			<div class="display-flex align-items-center justify-content-space-between">
				
		<details id="article-header-breadcrumbs-overflow-popover" class="popover" data-for="article-header-breadcrumbs">
			<summary class="button button-clear button-primary button-sm inner-focus" aria-label="All breadcrumbs">
				<span class="icon">
					<span class="docon docon-more"></span>
				</span>
			</summary>
			<div id="article-header-breadcrumbs-overflow" class="popover-content padding-none"></div>
		</details>

		<bread-crumbs id="article-header-breadcrumbs" data-test-id="article-header-breadcrumbs" class="overflow-hidden flex-grow-1 margin-right-sm margin-right-md-tablet margin-right-lg-desktop margin-left-negative-xxs padding-left-xxs"></bread-crumbs>
	 
		<div id="article-header-page-actions" class="opacity-none margin-left-auto display-flex flex-wrap-no-wrap align-items-stretch">
			
		<button class="button button-sm border-none inner-focus display-none-tablet flex-shrink-0" data-bi-name="ask-learn-assistant-entry" data-test-id="ask-learn-assistant-modal-entry-mobile" data-ask-learn-modal-entry="" type="button" style="min-width: max-content;" aria-expanded="false" aria-label="Ask Learn" hidden>
			<span class="icon font-size-lg" aria-hidden="true">
				<span class="docon docon-chat-sparkle-fill gradient-ask-learn-logo"></span>
			</span>
		</button>
		<button class="button button-sm display-none display-inline-flex-tablet display-none-desktop flex-shrink-0 margin-right-xxs border-color-ask-learn" data-bi-name="ask-learn-assistant-entry" data-test-id="ask-learn-assistant-modal-entry-tablet" data-ask-learn-modal-entry="" type="button" style="min-width: max-content;" aria-expanded="false" hidden>
			<span class="icon font-size-lg" aria-hidden="true">
				<span class="docon docon-chat-sparkle-fill gradient-ask-learn-logo"></span>
			</span>
			<span>Ask Learn</span>
		</button>
		<button class="button button-sm display-none flex-shrink-0 display-inline-flex-desktop margin-right-xxs border-color-ask-learn" data-bi-name="ask-learn-assistant-entry" data-test-id="ask-learn-assistant-flyout-entry" data-ask-learn-flyout-entry="" data-flyout-button="toggle" type="button" style="min-width: max-content;" aria-expanded="false" aria-controls="ask-learn-flyout" hidden>
			<span class="icon font-size-lg" aria-hidden="true">
				<span class="docon docon-chat-sparkle-fill gradient-ask-learn-logo"></span>
			</span>
			<span>Ask Learn</span>
		</button>
	 
		<button type="button" id="ms--focus-mode-button" data-focus-mode="" data-bi-name="focus-mode-entry" class="button button-sm flex-shrink-0 margin-right-xxs display-none display-inline-flex-desktop">
			<span class="icon font-size-lg" aria-hidden="true">
				<span class="docon docon-glasses"></span>
			</span>
			<span>Focus mode</span>
		</button>
	 

			<details class="popover popover-right" id="article-header-page-actions-overflow">
				<summary class="justify-content-flex-start button button-clear button-sm button-primary inner-focus" aria-label="More actions" title="More actions">
					<span class="icon" aria-hidden="true">
						<span class="docon docon-more-vertical"></span>
					</span>
				</summary>
				<div class="popover-content">
					
		<button data-page-action-item="overflow-mobile" type="button" class="button-block button-sm has-inner-focus button button-clear display-none-tablet justify-content-flex-start text-align-left" data-bi-name="contents-expand" data-contents-button="" data-popover-close="">
			<span class="icon">
				<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
			</span>
			<span class="contents-expand-title">Table of contents</span>
		</button>
	 
		<a id="lang-link-overflow" class="button-sm has-inner-focus button button-clear button-block justify-content-flex-start text-align-left" data-bi-name="language-toggle" data-page-action-item="overflow-all" data-check-hidden="true" data-read-in-link="" href="#" hidden>
			<span class="icon" aria-hidden="true" data-read-in-link-icon="">
				<span class="docon docon-locale-globe"></span>
			</span>
			<span data-read-in-link-text="">Read in English</span>
		</a>
	 
		<button type="button" class="collection button button-clear button-sm button-block justify-content-flex-start text-align-left inner-focus" data-list-type="collection" data-bi-name="collection" data-page-action-item="overflow-all" data-check-hidden="true" data-popover-close="">
			<span class="icon" aria-hidden="true">
				<span class="docon docon-circle-addition"></span>
			</span>
			<span class="collection-status">Add</span>
		</button>
	
					
		<button type="button" class="collection button button-block button-clear button-sm justify-content-flex-start text-align-left inner-focus" data-list-type="plan" data-bi-name="plan" data-page-action-item="overflow-all" data-check-hidden="true" data-popover-close="" hidden>
			<span class="icon" aria-hidden="true">
				<span class="docon docon-circle-addition"></span>
			</span>
			<span class="plan-status">Add to plan</span>
		</button>
	  
		<a data-contenteditbtn="" class="button button-clear button-block button-sm inner-focus justify-content-flex-start text-align-left text-decoration-none" data-bi-name="edit" href="../html/rest-text-to-speech.md.html" data-original_content_git_url="https://github.com/MicrosoftDocs/azure-ai-docs-pr/blob/live/articles/ai-services/speech-service/rest-text-to-speech.md" data-original_content_git_url_template="{repo}/blob/{branch}/articles/ai-services/speech-service/rest-text-to-speech.md" data-pr_repo="" data-pr_branch="">
			<span class="icon" aria-hidden="true">
				<span class="docon docon-edit-outline"></span>
			</span>
			<span>Edit</span>
		</a>
	
					
		<hr class="margin-block-xxs">
		<h4 class="font-size-sm padding-left-xxs">Share via</h4>
		
					<a class="button button-clear button-sm inner-focus button-block justify-content-flex-start text-align-left text-decoration-none share-facebook" data-bi-name="facebook" data-page-action-item="overflow-all" href="#">
						<span class="icon color-primary" aria-hidden="true">
							<span class="docon docon-facebook-share"></span>
						</span>
						<span>Facebook</span>
					</a>

					<a href="#" class="button button-clear button-sm inner-focus button-block justify-content-flex-start text-align-left text-decoration-none share-twitter" data-bi-name="twitter" data-page-action-item="overflow-all">
						<span class="icon color-text" aria-hidden="true">
							<span class="docon docon-xlogo-share"></span>
						</span>
						<span>x.com</span>
					</a>

					<a href="#" class="button button-clear button-sm inner-focus button-block justify-content-flex-start text-align-left text-decoration-none share-linkedin" data-bi-name="linkedin" data-page-action-item="overflow-all">
						<span class="icon color-primary" aria-hidden="true">
							<span class="docon docon-linked-in-logo"></span>
						</span>
						<span>LinkedIn</span>
					</a>
					<a href="#" class="button button-clear button-sm inner-focus button-block justify-content-flex-start text-align-left text-decoration-none share-email" data-bi-name="email" data-page-action-item="overflow-all">
						<span class="icon color-primary" aria-hidden="true">
							<span class="docon docon-mail-message"></span>
						</span>
						<span>Email</span>
					</a>
			  
	 
		<hr class="margin-block-xxs">
		<button class="button button-block button-clear button-sm justify-content-flex-start text-align-left inner-focus" type="button" data-bi-name="print" data-page-action-item="overflow-all" data-popover-close="" data-print-page="" data-check-hidden="true">
			<span class="icon color-primary" aria-hidden="true">
				<span class="docon docon-print"></span>
			</span>
			<span>Print</span>
		</button>
	
				</div>
			</details>
		</div>
	
			</div>
		</div>
	
					<!-- azure disclaimer -->
					
					<!-- privateUnauthorizedTemplate is hidden by default -->
					
		<div unauthorized-private-section="" data-bi-name="permission-content-unauthorized-private" hidden>
			<hr class="hr margin-top-xs margin-bottom-sm">
			<div class="notification notification-info">
				<div class="notification-content">
					<p class="margin-top-none notification-title">
						<span class="icon">
							<span class="docon docon-exclamation-circle-solid" aria-hidden="true"></span>
						</span>
						<span>Note</span>
					</p>
					<p class="margin-top-none authentication-determined not-authenticated">
						Access to this page requires authorization. You can try <a class="docs-sign-in" href="#" data-bi-name="permission-content-sign-in">signing in</a> or <a class="docs-change-directory" data-bi-name="permisson-content-change-directory">changing directories</a>.
					</p>
					<p class="margin-top-none authentication-determined authenticated">
						Access to this page requires authorization. You can try <a class="docs-change-directory" data-bi-name="permisson-content-change-directory">changing directories</a>.
					</p>
				</div>
			</div>
		</div>
	
					<div class="content"><h1 id="text-to-speech-rest-api">Text to speech REST API</h1></div>
					
		<div id="article-metadata" class="page-metadata-container display-flex gap-xxs justify-content-space-between align-items-center flex-wrap-wrap">
			
		<div class="margin-block-xxs">
			<ul class="metadata page-metadata" data-bi-name="page info" lang="en-us" dir="ltr">
				  <li class="visibility-hidden-visual-diff">
			<local-time format="twoDigitNumeric" datetime="2025-08-07T08:00:00.000Z" data-article-date-source="calculated" class="is-invisible">
				2025-08-07
			</local-time>
		</li>  
			</ul>
		</div>
	 
				<div id="user-feedback" class="margin-block-xxs display-none display-none-print" hidden data-hide-on-archived="">
					
		<button id="user-feedback-button" data-test-id="conceptual-feedback-button" class="button button-sm button-clear button-primary display-none" type="button" data-bi-name="user-feedback-button" data-user-feedback-button="" hidden>
			<span class="icon" aria-hidden="true">
				<span class="docon docon-like"></span>
			</span>
			<span>Feedback</span>
		</button>
	
				</div>
		  
		</div>
	 
		<nav id="center-doc-outline" class="doc-outline is-hidden-desktop display-none-print margin-bottom-sm" data-bi-name="intopic toc" aria-label="In this article">
			<h2 id="ms--in-this-article" class="title is-6 margin-block-xs">
				In this article
			</h2>
		</nav>
	
					<div class="content"><p>The Speech service allows you to <a href="#convert-text-to-speech" data-linktype="self-bookmark">convert text into synthesized speech</a> and <a href="#get-a-list-of-voices" data-linktype="self-bookmark">get a list of supported voices</a> for a region by using a REST API. In this article, you learn about authorization options, query options, how to structure a request, and how to interpret a response.</p>
<div class="TIP">
<p>Tip</p>
<p>Use cases for the text to speech REST API are limited. Use it only in cases where you can't use the <a href="../html/speech-sdk.html" data-linktype="relative-path">Speech SDK</a>. For example, with the Speech SDK you can <a href="../html/how-to-speech-synthesis.html" data-linktype="relative-path">subscribe to events</a> for more insights about the text to speech processing and results.</p>
</div>
<p>The text to speech REST API supports neural text to speech voices in many locales. Each available endpoint is associated with a region. An API key for the endpoint or region that you plan to use is required. Here are links to more information:</p>
<ul>
<li>For a complete list of voices, see <a href="../html/language-support.html" data-linktype="relative-path">Language and voice support for the Speech service</a>.</li>
<li>For information about regional availability, see <a href="../html/regions.html" data-linktype="relative-path">Speech service supported regions</a>.</li>
<li>For Azure Government and Microsoft Azure operated by 21Vianet endpoints, see <a href="../html/sovereign-clouds.html" data-linktype="relative-path">this article about sovereign clouds</a>.</li>
</ul>
<div class="IMPORTANT">
<p>Important</p>
<p>Costs vary for standard voices and custom voices. For more information, see <a href="../html/speech-services.html" data-linktype="external">text to speech pricing</a>.</p>
</div>
<p>Before you use the text to speech REST API, understand that you need to complete a token exchange as part of authentication to access the service. For more information, see <a href="#authentication" data-linktype="self-bookmark">Authentication</a>.</p>
<h2 id="get-a-list-of-voices">Get a list of voices</h2>
<p>You can use the <code>tts.speech.microsoft.com/cognitiveservices/voices/list</code> endpoint to get a full list of voices for a specific region or endpoint. Prefix the voices list endpoint with a region to get a list of voices for that region. For example, to get a list of voices for the <code>westus</code> region, use the <code>https://westus.tts.speech.microsoft.com/cognitiveservices/voices/list</code> endpoint. For a list of all supported regions, see the <a href="../html/regions.html" data-linktype="relative-path">regions</a> documentation.</p>
<div class="NOTE">
<p>Note</p>
<p><a href="../html/language-support.html" data-linktype="relative-path">Voices and styles in preview</a> are only available in three service regions: East US, West Europe, and Southeast Asia.</p>
</div>
<h3 id="request-headers">Request headers</h3>
<p>This table lists required and optional headers for text to speech requests:</p>
<table>
<thead>
<tr>
<th>Header</th>
<th>Description</th>
<th>Required or optional</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Ocp-Apim-Subscription-Key</code></td>
<td>Your Speech resource key.</td>
<td>Either this header or <code>Authorization</code> is required.</td>
</tr>
<tr>
<td><code>Authorization</code></td>
<td>An authorization token preceded by the word <code>Bearer</code>. For more information, see <a href="#authentication" data-linktype="self-bookmark">Authentication</a>.</td>
<td>Either this header or <code>Ocp-Apim-Subscription-Key</code> is required.</td>
</tr>
</tbody>
</table>
<h3 id="request-body">Request body</h3>
<p>A body isn't required for <code>GET</code> requests to this endpoint.</p>
<h3 id="sample-request">Sample request</h3>
<p>This request requires only an authorization header:</p>
<pre><code class="lang-http">GET /cognitiveservices/voices/list HTTP/1.1

Host: westus.tts.speech.microsoft.com
Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY
</code></pre>
<p>Here's an example curl command:</p>
<pre><code class="lang-curl">curl --location --request GET 'https://YOUR_RESOURCE_REGION.tts.speech.microsoft.com/cognitiveservices/voices/list' \
--header 'Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY'
</code></pre>
<h3 id="sample-response">Sample response</h3>
<p>You should receive a response with a JSON body that includes all supported locales, voices, gender, styles, and other details. The <code>WordsPerMinute</code> property for each voice can be used to estimate the length of the output speech. This JSON example shows partial results to illustrate the structure of a response:</p>
<pre><code class="lang-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": "24000",
        "VoiceType": "Neural",
        "Status": "GA",
        "ExtendedPropertyMap": {
          "IsHighQuality48K": "True"
        },
        "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": "24000",
        "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": "24000",
        "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": "24000",
        "VoiceType": "Neural",
        "Status": "GA",
        "RolePlayList": [
          "Narrator",
          "YoungAdultMale",
          "Boy"
        ],
        "WordsPerMinute": "293"
    },
    // Redacted for brevity
]
</code></pre>
<h3 id="http-status-codes">HTTP status codes</h3>
<p>The HTTP status code for each response indicates success or common errors.</p>
<table>
<thead>
<tr>
<th>HTTP status code</th>
<th>Description</th>
<th>Possible reason</th>
</tr>
</thead>
<tbody>
<tr>
<td>200</td>
<td>OK</td>
<td>The request was successful.</td>
</tr>
<tr>
<td>400</td>
<td>Bad request</td>
<td>A required parameter is missing, empty, or null. Or, the value passed to either a required or optional parameter is invalid. A common reason is a header that's too long.</td>
</tr>
<tr>
<td>401</td>
<td>Unauthorized</td>
<td>The request isn't authorized. Make sure your resource key or token is valid and in the correct region.</td>
</tr>
<tr>
<td>429</td>
<td>Too many requests</td>
<td>You exceeded the quota or rate of requests allowed for your resource.</td>
</tr>
<tr>
<td>502</td>
<td>Bad gateway</td>
<td>There's a network or server-side problem. This status might also indicate invalid headers.</td>
</tr>
</tbody>
</table>
<h2 id="convert-text-to-speech">Convert text to speech</h2>
<p>The <code>cognitiveservices/v1</code> endpoint allows you to convert text to speech by using <a href="../html/speech-synthesis-markup.html" data-linktype="relative-path">Speech Synthesis Markup Language (SSML)</a>.</p>
<h3 id="regions-and-endpoints">Regions and endpoints</h3>
<p>These regions are supported for text to speech through the REST API. Be sure to select the endpoint that matches your Speech resource region.</p>
<h3 id="standard-voices">Standard voices</h3>
<p>Use this table to determine <em>availability of neural voices</em> by region or endpoint:</p>
<table>
<thead>
<tr>
<th>Region</th>
<th>Endpoint</th>
</tr>
</thead>
<tbody>
<tr>
<td>Australia East</td>
<td><code>https://australiaeast.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Brazil South</td>
<td><code>https://brazilsouth.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Canada Central</td>
<td><code>https://canadacentral.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Central US</td>
<td><code>https://centralus.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>East Asia</td>
<td><code>https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>East US</td>
<td><code>https://eastus.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>East US 2</td>
<td><code>https://eastus2.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>France Central</td>
<td><code>https://francecentral.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Germany West Central</td>
<td><code>https://germanywestcentral.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>India Central</td>
<td><code>https://centralindia.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Japan East</td>
<td><code>https://japaneast.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Japan West</td>
<td><code>https://japanwest.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Jio India West</td>
<td><code>https://jioindiawest.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Korea Central</td>
<td><code>https://koreacentral.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>North Central US</td>
<td><code>https://northcentralus.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>North Europe</td>
<td><code>https://northeurope.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Norway East</td>
<td><code>https://norwayeast.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>South Central US</td>
<td><code>https://southcentralus.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Southeast Asia</td>
<td><code>https://southeastasia.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Sweden Central</td>
<td><code>https://swedencentral.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Switzerland North</td>
<td><code>https://switzerlandnorth.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>Switzerland West</td>
<td><code>https://switzerlandwest.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>UAE North</td>
<td><code>https://uaenorth.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>US Gov Arizona</td>
<td><code>https://usgovarizona.tts.speech.azure.us/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>US Gov Virginia</td>
<td><code>https://usgovvirginia.tts.speech.azure.us/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>UK South</td>
<td><code>https://uksouth.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>West Central US</td>
<td><code>https://westcentralus.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>West Europe</td>
<td><code>https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>West US</td>
<td><code>https://westus.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>West US 2</td>
<td><code>https://westus2.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
<tr>
<td>West US 3</td>
<td><code>https://westus3.tts.speech.microsoft.com/cognitiveservices/v1</code></td>
</tr>
</tbody>
</table>
<div class="TIP">
<p>Tip</p>
<p><a href="../html/language-support.html" data-linktype="relative-path">Voices in preview</a> are available in only these three regions: East US, West Europe, and Southeast Asia.</p>
</div>
<h3 id="custom-voices">Custom voices</h3>
<p>If you created a custom voice, use the endpoint that you created. You can also use the following endpoints. Replace <code>{deploymentId}</code> with the deployment ID for your custom voice model.</p>
<table>
<thead>
<tr>
<th>Region</th>
<th>Training</th>
<th>Deployment</th>
<th>Endpoint</th>
</tr>
</thead>
<tbody>
<tr>
<td>Australia East</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://australiaeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Brazil South</td>
<td>No</td>
<td>Yes</td>
<td><code>https://brazilsouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Canada Central</td>
<td>No</td>
<td>Yes</td>
<td><code>https://canadacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Central US</td>
<td>No</td>
<td>Yes</td>
<td><code>https://centralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>East Asia</td>
<td>No</td>
<td>Yes</td>
<td><code>https://eastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>East US</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://eastus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>East US 2</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://eastus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>France Central</td>
<td>No</td>
<td>Yes</td>
<td><code>https://francecentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Germany West Central</td>
<td>No</td>
<td>Yes</td>
<td><code>https://germanywestcentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>India Central</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://centralindia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Japan East</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://japaneast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Japan West</td>
<td>No</td>
<td>Yes</td>
<td><code>https://japanwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Jio India West</td>
<td>No</td>
<td>Yes</td>
<td><code>https://jioindiawest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Korea Central</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://koreacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>North Central US</td>
<td>No</td>
<td>Yes</td>
<td><code>https://northcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>North Europe</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://northeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Norway East</td>
<td>No</td>
<td>Yes</td>
<td><code>https://norwayeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>South Africa North</td>
<td>No</td>
<td>Yes</td>
<td><code>https://southafricanorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>South Central US</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://southcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Southeast Asia</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://southeastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Switzerland North</td>
<td>No</td>
<td>Yes</td>
<td><code>https://switzerlandnorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>Switzerland West</td>
<td>No</td>
<td>Yes</td>
<td><code>https://switzerlandwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>UAE North</td>
<td>No</td>
<td>Yes</td>
<td><code>https://uaenorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>UK South</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://uksouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>West Central US</td>
<td>No</td>
<td>Yes</td>
<td><code>https://westcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>West Europe</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://westeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>West US</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://westus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>West US 2</td>
<td>Yes</td>
<td>Yes</td>
<td><code>https://westus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
<tr>
<td>West US 3</td>
<td>No</td>
<td>Yes</td>
<td><code>https://westus3.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}</code></td>
</tr>
</tbody>
</table>
<div class="NOTE">
<p>Note</p>
<p>The preceding regions are available for standard voice model hosting and real-time synthesis. Custom voice training is only available in some regions. But you can easily <a href="../html/professional-voice-train-voice.html" data-linktype="relative-path">copy a custom voice model</a> from these regions to other regions in the preceding list.</p>
</div>
<h3 id="long-audio-api">Long Audio API</h3>
<p>The Long Audio API is available in multiple regions with unique endpoints:</p>
<table>
<thead>
<tr>
<th>Region</th>
<th>Endpoint</th>
</tr>
</thead>
<tbody>
<tr>
<td>Australia East</td>
<td><code>https://australiaeast.customvoice.api.speech.microsoft.com</code></td>
</tr>
<tr>
<td>East US</td>
<td><code>https://eastus.customvoice.api.speech.microsoft.com</code></td>
</tr>
<tr>
<td>India Central</td>
<td><code>https://centralindia.customvoice.api.speech.microsoft.com</code></td>
</tr>
<tr>
<td>South Central US</td>
<td><code>https://southcentralus.customvoice.api.speech.microsoft.com</code></td>
</tr>
<tr>
<td>Southeast Asia</td>
<td><code>https://southeastasia.customvoice.api.speech.microsoft.com</code></td>
</tr>
<tr>
<td>UK South</td>
<td><code>https://uksouth.customvoice.api.speech.microsoft.com</code></td>
</tr>
<tr>
<td>West Europe</td>
<td><code>https://westeurope.customvoice.api.speech.microsoft.com</code></td>
</tr>
</tbody>
</table>
<h3 id="request-headers-1">Request headers</h3>
<p>This table lists required and optional headers for text to speech requests:</p>
<table>
<thead>
<tr>
<th>Header</th>
<th>Description</th>
<th>Required or optional</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Authorization</code></td>
<td>An authorization token preceded by the word <code>Bearer</code>. For more information, see <a href="#authentication" data-linktype="self-bookmark">Authentication</a>.</td>
<td>Required</td>
</tr>
<tr>
<td><code>Content-Type</code></td>
<td>Specifies the content type for the provided text. Accepted value: <code>application/ssml+xml</code>.</td>
<td>Required</td>
</tr>
<tr>
<td><code>X-Microsoft-OutputFormat</code></td>
<td>Specifies the audio output format. For a complete list of accepted values, see <a href="#audio-outputs" data-linktype="self-bookmark">Audio outputs</a>.</td>
<td>Required</td>
</tr>
<tr>
<td><code>User-Agent</code></td>
<td>The application name. The provided value must be fewer than 255 characters.</td>
<td>Required</td>
</tr>
</tbody>
</table>
<h3 id="request-body-1">Request body</h3>
<p>If you're using a custom voice, the body of a request can be sent as plain text (ASCII or UTF-8). Otherwise, the body of each <code>POST</code> request is sent as <a href="../html/speech-synthesis-markup.html" data-linktype="relative-path">SSML</a>. SSML allows you to choose the voice and language of the synthesized speech that the text to speech feature returns. For a complete list of supported voices, see <a href="../html/language-support.html" data-linktype="relative-path">Language and voice support for the Speech service</a>.</p>
<h3 id="sample-request-1">Sample request</h3>
<p>This HTTP request uses SSML to specify the voice and language. If the body length is long, and the resulting audio exceeds 10 minutes, it's truncated to 10 minutes. In other words, the audio length can't exceed 10 minutes.</p>
<pre><code class="lang-http">POST /cognitiveservices/v1 HTTP/1.1

X-Microsoft-OutputFormat: riff-24khz-16bit-mono-pcm
Content-Type: application/ssml+xml
Host: westus.tts.speech.microsoft.com
Content-Length: &lt;Length&gt;
Authorization: Bearer [Base64 access_token]
User-Agent: &lt;Your application name&gt;

&lt;speak version='1.0' xml:lang='en-US'&gt;&lt;voice xml:lang='en-US' xml:gender='Male'
    name='en-US-ChristopherNeural'&gt;
        I'm excited to try text to speech!
&lt;/voice&gt;&lt;/speak&gt;
</code></pre>
<p><sup>*</sup> For the Content-Length, you should use your own content length. In most cases, this value is calculated automatically.</p>
<h3 id="http-status-codes-1">HTTP status codes</h3>
<p>The HTTP status code for each response indicates success or common errors:</p>
<table>
<thead>
<tr>
<th>HTTP status code</th>
<th>Description</th>
<th>Possible reason</th>
</tr>
</thead>
<tbody>
<tr>
<td>200</td>
<td>OK</td>
<td>The request was successful. The response body is an audio file.</td>
</tr>
<tr>
<td>400</td>
<td>Bad request</td>
<td>A required parameter is missing, empty, or null. Or, the value passed to either a required or optional parameter is invalid. A common reason is a header that's too long.</td>
</tr>
<tr>
<td>401</td>
<td>Unauthorized</td>
<td>The request isn't authorized. Make sure your Speech resource key or token is valid and in the correct region.</td>
</tr>
<tr>
<td>415</td>
<td>Unsupported media type</td>
<td>It's possible that the wrong <code>Content-Type</code> value was provided. <code>Content-Type</code> should be set to <code>application/ssml+xml</code>.</td>
</tr>
<tr>
<td>429</td>
<td>Too many requests</td>
<td>You exceeded the quota or rate of requests allowed for your resource.</td>
</tr>
<tr>
<td>502</td>
<td>Bad gateway</td>
<td>There's a network or server-side problem. This status might also indicate invalid headers.</td>
</tr>
<tr>
<td>503</td>
<td>Service Unavailable</td>
<td>There's a server-side problem for various reasons.</td>
</tr>
</tbody>
</table>
<p>If the HTTP status is <code>200 OK</code>, the body of the response contains an audio file in the requested format. This file can be played as it's transferred, saved to a buffer, or saved to a file.</p>
<h2 id="audio-outputs">Audio outputs</h2>
<p>The supported streaming and nonstreaming audio formats are sent in each request as the <code>X-Microsoft-OutputFormat</code> header. Each format incorporates a bit rate and encoding type. The Speech service supports 48-kHz, 24-kHz, 16-kHz, and 8-kHz audio outputs. Each standard voice model is available at 24kHz and high-fidelity 48kHz.</p>
<div class="tabGroup" id="tabgroup_1">
<ul role="tablist">
<li role="presentation">
<a href="#tabpanel_1_streaming" role="tab" aria-controls="tabpanel_1_streaming" data-tab="streaming" tabindex="0" aria-selected="true" data-linktype="self-bookmark">Streaming</a>
</li>
<li role="presentation">
<a href="#tabpanel_1_nonstreaming" role="tab" aria-controls="tabpanel_1_nonstreaming" data-tab="nonstreaming" tabindex="-1" data-linktype="self-bookmark">NonStreaming</a>
</li>
</ul>
<section id="tabpanel_1_streaming" role="tabpanel" data-tab="streaming">

<pre><code>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
</code></pre>
</section>
<section id="tabpanel_1_nonstreaming" role="tabpanel" data-tab="nonstreaming" aria-hidden="true" hidden="hidden">

<pre><code>riff-8khz-8bit-mono-alaw
riff-8khz-8bit-mono-mulaw
riff-8khz-16bit-mono-pcm
riff-22050hz-16bit-mono-pcm
riff-24khz-16bit-mono-pcm
riff-44100hz-16bit-mono-pcm
riff-48khz-16bit-mono-pcm
</code></pre>
</section>
</div>

<div class="NOTE">
<p>Note</p>
<p>If you select 48kHz output format, the high-fidelity voice model with 48kHz will be invoked accordingly. The sample rates other than 24kHz and 48kHz can be obtained through upsampling or downsampling when synthesizing, for example, 44.1kHz is downsampled from 48kHz.</p>
<p>If your selected voice and output format have different bit rates, the audio is resampled as necessary. You can decode the <code>ogg-24khz-16bit-mono-opus</code> format by using the <a href="../html/downloads.html" data-linktype="external">Opus codec</a>.</p>
</div>
<h2 id="authentication">Authentication</h2>
<p>Each request requires an authorization header. This table illustrates which headers are supported for each feature:</p>
<table>
<thead>
<tr>
<th>Supported authorization header</th>
<th>Speech to text</th>
<th>Text to speech</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Ocp-Apim-Subscription-Key</code></td>
<td>Yes</td>
<td>Yes</td>
</tr>
<tr>
<td><code>Authorization: Bearer</code></td>
<td>Yes</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p>When you're using the <code>Ocp-Apim-Subscription-Key</code> header, only your resource key must be provided. For example:</p>
<pre><code class="lang-http">'Ocp-Apim-Subscription-Key': 'YourSpeechResourceKey'
</code></pre>
<p>When you're using the <code>Authorization: Bearer</code> header, you need to make a request to the <code>issueToken</code> endpoint. In this request, you exchange your resource key for an access token that's valid for 10 minutes.</p>
<p>Another option is to use Microsoft Entra authentication that also uses the <code>Authorization: Bearer</code> header, but with a token issued via Microsoft Entra ID. See <a href="#use-microsoft-entra-authentication" data-linktype="self-bookmark">Use Microsoft Entra authentication</a>.</p>
<h3 id="how-to-get-an-access-token">How to get an access token</h3>
<p>To get an access token, you need to make a request to the <code>issueToken</code> endpoint by using <code>Ocp-Apim-Subscription-Key</code> and your resource key.</p>
<p>The <code>issueToken</code> endpoint has this format:</p>
<pre><code class="lang-http">https://&lt;REGION_IDENTIFIER&gt;.api.cognitive.microsoft.com/sts/v1.0/issueToken
</code></pre>
<p>Replace <code>&lt;REGION_IDENTIFIER&gt;</code> with the identifier that matches the <a href="../html/regions.html" data-linktype="relative-path">region</a> of your Speech resource.</p>
<p>Use the following samples to create your access token request.</p>
<h4 id="http-sample">HTTP sample</h4>
<p>This example is a simple HTTP request to get a token. Replace <code>YourSpeechResourceKey</code> with your resource key for the Speech service. If your Speech resource isn't in the West US region, replace the <code>Host</code> header with your region's host name.</p>
<pre><code class="lang-http">POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YourSpeechResourceKey
Host: eastus.api.cognitive.microsoft.com
Content-type: application/x-www-form-urlencoded
Content-Length: 0
</code></pre>
<p>The body of the response contains the access token in JSON Web Token (JWT) format.</p>
<h4 id="powershell-sample">PowerShell sample</h4>
<p>This example is a simple PowerShell script to get an access token. Replace <code>YourSpeechResourceKey</code> with your resource key for the Speech service. Make sure to use the correct endpoint for the region that matches your Speech resource. This example is currently set to West US.</p>
<pre><code class="lang-powershell">$FetchTokenHeader = @{
  'Content-type'='application/x-www-form-urlencoded';
  'Content-Length'= '0';
  'Ocp-Apim-Subscription-Key' = 'YourSpeechResourceKey'
}

$OAuthToken = Invoke-RestMethod -Method POST -Uri https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken
 -Headers $FetchTokenHeader

# show the token received
$OAuthToken

</code></pre>
<h4 id="curl-sample">cURL sample</h4>
<p>cURL is a command-line tool available in Linux (and in the Windows Subsystem for Linux). This cURL command illustrates how to get an access token. Replace <code>YourSpeechResourceKey</code> with your resource key for the Speech service. Make sure to use the correct endpoint for the region that matches your Speech resource. This example is currently set to West US.</p>
<pre><code class="lang-console">curl -v -X POST \
 "https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken" \
 -H "Content-type: application/x-www-form-urlencoded" \
 -H "Content-Length: 0" \
 -H "Ocp-Apim-Subscription-Key: YourSpeechResourceKey"
</code></pre>
<h4 id="c-sample">C# sample</h4>
<p>This C# class illustrates how to get an access token. Pass your resource key for the Speech service when you instantiate the class. If your Speech resource isn't in the West US region, change the value of <code>FetchTokenUri</code> to match the region for your Speech resource.</p>
<pre><code class="lang-csharp">public class Authentication
{
    public static readonly string FetchTokenUri =
        "https://eastus.api.cognitive.microsoft.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&lt;string&gt; 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();
        }
    }
}
</code></pre>
<h4 id="python-sample">Python sample</h4>
<pre><code class="lang-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://eastus.api.cognitive.microsoft.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)
</code></pre>
<h3 id="how-to-use-an-access-token">How to use an access token</h3>
<p>The access token should be sent to the service as the <code>Authorization: Bearer &lt;TOKEN&gt;</code> header. Each access token is valid for 10 minutes. You can get a new token at any time, but to minimize network traffic and latency, we recommend using the same token for nine minutes.</p>
<p>Here's a sample HTTP request to the Speech to text REST API for short audio:</p>
<pre><code class="lang-http">POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: westus.stt.speech.microsoft.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive

// Message body here...
</code></pre>
<h3 id="use-microsoft-entra-authentication">Use Microsoft Entra authentication</h3>
<p>To use Microsoft Entra authentication with the Speech to text REST API for short audio, you need to create an access token.
The steps to obtain the access token consisting of Resource ID and  Microsoft Entra access token are the same as when using the Speech SDK.
Follow the steps here <a href="../html/how-to-configure-azure-ad-auth.html" data-linktype="relative-path">Use Microsoft Entra authentication</a></p>
<div class="checklist">
<ul>
<li>Create an AI Foundry resource for Speech</li>
<li>Configure the Speech resource for Microsoft Entra authentication</li>
<li>Get a Microsoft Entra access token</li>
<li>Get the Speech resource ID</li>
</ul>
</div>
<p>After the resource ID and the Microsoft Entra access token were obtained, the actual access token can be constructed following this format:</p>
<pre><code class="lang-http">aad#YOUR_RESOURCE_ID#YOUR_MICROSOFT_ENTRA_ACCESS_TOKEN
</code></pre>
<p>You need to include the "aad#" prefix and the "#" (hash) separator between resource ID and the access token.</p>
<p>Here's a sample HTTP request to the Speech to text REST API for short audio:</p>
<pre><code class="lang-http">POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: westus.stt.speech.microsoft.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive

// Message body here...
</code></pre>
<p>To learn more about Microsoft Entra access tokens, including token lifetime, visit <a href="../html/access-tokens.html" data-linktype="absolute-path">Access tokens in the Microsoft identity platform</a>.</p>
<h2 id="next-steps">Next steps</h2>
<ul>
<li><a href="../html/cognitive-services.html" data-linktype="external">Create a free Azure account</a></li>
<li><a href="../html/professional-voice-create-project.html" data-linktype="relative-path">Get started with custom voice</a></li>
<li><a href="../html/batch-synthesis.html" data-linktype="relative-path">Batch synthesis</a></li>
</ul>
</div>
					
		<div id="ms--inline-notifications" class="margin-block-xs" data-bi-name="inline-notification"></div>
	 
		<div id="assertive-live-region" role="alert" aria-live="assertive" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
		<div id="polite-live-region" role="status" aria-live="polite" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
	
					
		<!-- feedback section -->
		<section id="site-user-feedback-footer" class="font-size-sm margin-top-md display-none-print display-none-desktop" data-test-id="site-user-feedback-footer" data-bi-name="site-feedback-section">
			<hr class="hr">
			<h2 id="ms--feedback" class="title is-3">Feedback</h2>
			<div class="display-flex flex-wrap-wrap align-items-center">
				<p class="font-weight-semibold margin-xxs margin-left-none">
					Was this page helpful?
				</p>
				<div class="buttons">
					<button class="thumb-rating-button like button button-primary button-sm" data-test-id="footer-rating-yes" data-binary-rating-response="rating-yes" type="button" title="This article is helpful" data-bi-name="button-rating-yes" aria-pressed="false">
						<span class="icon" aria-hidden="true">
							<span class="docon docon-like"></span>
						</span>
						<span>Yes</span>
					</button>
					<button class="thumb-rating-button dislike button button-primary button-sm" data-test-id="footer-rating-no" data-binary-rating-response="rating-no" type="button" title="This article is not helpful" data-bi-name="button-rating-no" aria-pressed="false">
						<span class="icon" aria-hidden="true">
							<span class="docon docon-dislike"></span>
						</span>
						<span>No</span>
					</button>
				</div>
			</div>
		</section>
		<!-- end feedback section -->
	
				</div>
				
		<div id="ms--additional-resources-mobile" class="display-none-print">
			<hr class="hr" hidden>
			<h2 id="ms--additional-resources-mobile-heading" class="title is-3" hidden>
				Additional resources
			</h2>
			
		<section id="right-rail-recommendations-mobile" data-bi-name="recommendations" hidden></section>
	 
		<section id="right-rail-training-mobile" data-bi-name="learning-resource-card" hidden></section>
	 
		<section id="right-rail-events-mobile" data-bi-name="events-card" hidden></section>
	 
		<section id="right-rail-qna-mobile" class="margin-top-xxs" data-bi-name="qna-link-card" hidden></section>
	
		</div>
	
			</div>
			
		<div id="action-panel" role="region" aria-label="Action Panel" class="action-panel" tabindex="-1"></div>
	
		
				</main>
				<aside id="layout-body-aside" class="layout-body-aside" data-bi-name="aside">
					
		<div id="ms--additional-resources" class="right-container padding-sm display-none display-block-desktop height-full" data-bi-name="pageactions" role="complementary" aria-label="Additional resources">
			<div id="affixed-right-container" data-bi-name="right-column">
				
		<nav id="side-doc-outline" class="doc-outline border-bottom padding-bottom-xs margin-bottom-xs" data-bi-name="intopic toc" aria-label="In this article">
			<h3>In this article</h3>
		</nav>
	
				<!-- Feedback -->
				
		<section id="ms--site-user-feedback-right-rail" class="font-size-sm display-none-print" data-test-id="site-user-feedback-right-rail" data-bi-name="site-feedback-right-rail">
			<p class="font-weight-semibold margin-bottom-xs">Was this page helpful?</p>
			<div class="buttons">
				<button class="thumb-rating-button like button button-primary button-sm" data-test-id="right-rail-rating-yes" data-binary-rating-response="rating-yes" type="button" title="This article is helpful" data-bi-name="button-rating-yes" aria-pressed="false">
					<span class="icon" aria-hidden="true">
						<span class="docon docon-like"></span>
					</span>
					<span>Yes</span>
				</button>
				<button class="thumb-rating-button dislike button button-primary button-sm" data-test-id="right-rail-rating-no" data-binary-rating-response="rating-no" type="button" title="This article is not helpful" data-bi-name="button-rating-no" aria-pressed="false">
					<span class="icon" aria-hidden="true">
						<span class="docon docon-dislike"></span>
					</span>
					<span>No</span>
				</button>
			</div>
		</section>
	
			</div>
		</div>
	
			  </aside> <section id="layout-body-flyout" class="layout-body-flyout" data-bi-name="flyout">
					 <div class="height-full border-left background-color-body-medium" id="ask-learn-flyout"></div>
			  </section> <div class="layout-body-footer" data-bi-name="layout-footer">
		<footer id="footer" data-test-id="footer" data-bi-name="footer" class="footer-layout has-padding has-default-focus border-top uhf-container" role="contentinfo">
			<div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop">
				
		<a data-mscc-ic="false" href="#" data-bi-name="select-locale" class="locale-selector-link flex-shrink-0 button button-sm button-clear external-link-indicator" title=""><span class="icon" aria-hidden="true"><span class="docon docon-world"></span></span><span class="local-selector-link-text">en-us</span></a>
	
				<div class="ccpa-privacy-link" data-ccpa-privacy-link="" hidden>
		
		<a data-mscc-ic="false" href="../html/yourcaliforniaprivacychoices.html" data-bi-name="your-privacy-choices" class="button button-sm button-clear flex-shrink-0 external-link-indicator" title="">
		<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43" aria-hidden="true" focusable="false">
			<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff" />
			<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f" />
			<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff" />
			<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f" />
		</svg>
	
			<span>Your Privacy Choices</span></a>
	
	</div>
				<div class="flex-shrink-0">
		<div class="dropdown has-caret-up">
			<button data-test-id="theme-selector-button" class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger" aria-controls="{{ themeMenuId }}" aria-expanded="false" title="Theme" data-bi-name="theme">
				<span class="icon">
					<span class="docon docon-sun" aria-hidden="true"></span>
				</span>
				<span>Theme</span>
				<span class="icon expanded-indicator" aria-hidden="true">
					<span class="docon docon-chevron-down-light"></span>
				</span>
			</button>
			<div class="dropdown-menu" id="{{ themeMenuId }}" role="menu">
				<ul class="theme-selector padding-xxs" data-test-id="theme-dropdown-menu">
					<li class="theme display-block">
						<button class="button button-clear button-sm theme-control button-block justify-content-flex-start text-align-left" data-theme-to="light">
							<span class="theme-light margin-right-xxs">
								<span class="theme-selector-icon border display-inline-block has-body-background" aria-hidden="true">
									<svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 14">
										<rect width="22" height="14" class="has-fill-body-background" />
										<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
										<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
										<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
										<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
										<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
										<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
										<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
									</svg>
								</span>
							</span>
							<span role="menuitem"> Light </span>
						</button>
					</li>
					<li class="theme display-block">
						<button class="button button-clear button-sm theme-control button-block justify-content-flex-start text-align-left" data-theme-to="dark">
							<span class="theme-dark margin-right-xxs">
								<span class="border theme-selector-icon display-inline-block has-body-background" aria-hidden="true">
									<svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 14">
										<rect width="22" height="14" class="has-fill-body-background" />
										<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
										<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
										<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
										<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
										<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
										<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
										<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
									</svg>
								</span>
							</span>
							<span role="menuitem"> Dark </span>
						</button>
					</li>
					<li class="theme display-block">
						<button class="button button-clear button-sm theme-control button-block justify-content-flex-start text-align-left" data-theme-to="high-contrast">
							<span class="theme-high-contrast margin-right-xxs">
								<span class="border theme-selector-icon display-inline-block has-body-background" aria-hidden="true">
									<svg class="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 14">
										<rect width="22" height="14" class="has-fill-body-background" />
										<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
										<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
										<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
										<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
										<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
										<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
										<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
									</svg>
								</span>
							</span>
							<span role="menuitem"> High contrast </span>
						</button>
					</li>
				</ul>
			</div>
		</div>
	</div>
			</div>
			<ul class="links" data-bi-name="footerlinks">
				<li class="manage-cookies-holder" hidden></li>
				<li>
		
		<a data-mscc-ic="false" href="../html/principles-for-ai-generated-content.html" data-bi-name="aiDisclaimer" class="external-link-indicator" title="">AI Disclaimer</a>
	
	</li><li>
		
		<a data-mscc-ic="false" href="../html/previous-versions.html" data-bi-name="archivelink" class="external-link-indicator" title="">Previous Versions</a>
	
	</li> <li>
		
		<a data-mscc-ic="false" href="../html/MicrosoftLearnBlog.html" data-bi-name="bloglink" class="external-link-indicator" title="">Blog</a>
	
	</li> <li>
		
		<a data-mscc-ic="false" href="../html/contribute.html" data-bi-name="contributorGuide" class="external-link-indicator" title="">Contribute</a>
	
	</li><li>
		
		<a data-mscc-ic="false" href="../html/fwlink.html" data-bi-name="privacy" class="external-link-indicator" title="">Privacy</a>
	
	</li><li>
		
		<a data-mscc-ic="false" href="../html/termsofuse.html" data-bi-name="termsofuse" class="external-link-indicator" title="">Terms of Use</a>
	
	</li><li>
		
		<a data-mscc-ic="false" href="../html/Trademarks.html" data-bi-name="trademarks" class="external-link-indicator" title="">Trademarks</a>
	
	</li>
				<li>© Microsoft 2025</li>
			</ul>
		</footer>
	
			</div></body>
		</html>