public override async Task <Stream> GetSynthesizedDataAsync(string ssml, AudioEncode outputEncode, CancellationToken token) { HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, _synthesizeUri) { Content = new StringContent(ssml, Encoding.UTF8, "application/ssml+xml") }; request.Headers.Add("Connection", "Keep-Alive"); request.Headers.Add("X-Microsoft-OutputFormat", outputEncode.GetEncodeName()); //request.Headers.Add("X-FD-ClientID", "RadioStationService"); //request.Headers.Add("X-FD-ImpressionGUID", Guid.NewGuid().ToString()); HttpResponseMessage response = await HttpClient.SendAsync(request, token).ConfigureAwait(false); if (!response.IsSuccessStatusCode) { string errorMsg = await response.Content.ReadAsStringAsync().ConfigureAwait(false); throw new Exception( $"Synthesize fail with status code: {response.StatusCode.ToString()}, error message: [{errorMsg}]"); } Stream stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); return(stream); }
public override Stream GetSynthesizedData(string ssml, AudioEncode outputEncode) { return(Task.Run(() => GetSynthesizedDataAsync(ssml, outputEncode, CancellationToken.None)).Result); }
public static string GetEncodeName(this AudioEncode encode) { EncodeMapping.TryGetValue(encode, out string encodeString); return(encodeString); }