I have an example here: Blazor Video Creator
async Task CreateWAVFile()
{
Processing = true;
StateHasChanged();
try
{
Status = "";
Error = "";
using (var client = new HttpClient())
{
// Get a auth token
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", SubscriptionKey);
UriBuilder uriBuilder = new UriBuilder(TokenUri);
var result = await client.PostAsync(uriBuilder.Uri.AbsoluteUri, null);
var AuthToken = await result.Content.ReadAsStringAsync();
// Set Headers
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AuthToken);
client.DefaultRequestHeaders.Add("User-Agent", "curl");
client.DefaultRequestHeaders.Add("X-Microsoft-OutputFormat", "audio-16khz-128kbitrate-mono-mp3");
var ssml = @"<speak version='1.0' xml:lang='en-US' xmlns='http://www.w3.org/2001/10/synthesis' ";
ssml = ssml + @"xmlns:mstts='http://www.w3.org/2001/mstts'>";
ssml = ssml + @$"<voice name='en-US-JennyNeural'>{InputText}</voice></speak>";
// Call the service
HttpResponseMessage response =
await client.PostAsync(new Uri(DestinationURL),
new StringContent(ssml,
Encoding.UTF8, "application/ssml+xml"));
if (response.IsSuccessStatusCode)
{
//Read as a byte array
var bytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
var AudioFilePath = $"{Processingpath}MyWavFile.mp3";
File.WriteAllBytes(AudioFilePath, bytes);
}
}
}
catch (Exception ex)
{
Error = ex.Message;
}
finally
{
StateHasChanged();
}
}