我是Azure服务的新手,在这里我需要一些指导。
背景
我正在使用Azure文本到语音服务将文本转换为语音,并且从API返回的数据保存在Azure BLOB存储中。 这是通过计划进行的,该计划不断标识新文本,将其转换并保存到Azure存储。当用户登录应用程序时,将有一个HTML5音频标签链接到该Azure保存的BLOB URL,它会自动播放转换后的文本。
我已经遵循了这些API的示例,并且一切正常。唯一的问题是音频无法在IE 11中播放。 它始终会给出“无效源”错误。它在FF的Chrome中效果很好。
Google针对此特定问题提供了许多解决方案,而我几乎都尝试了所有解决方案。
1)使用MP3类型代替以前使用的.WAV文件
2)明确关闭音频标签
3)检查浏览器中返回的标头响应。也是正确的。(音频/ mpeg)
我还尝试在存储中添加一个虚拟.mp3文件,然后从存储中播放该文件。工作正常。 因此,我强烈怀疑这是从文本语音转换API服务返回的内容,并将其存储在Azure中是问题所在。
以下是该部分的示例代码:
Task<HttpResponseMessage> task = TextToSpeechService.ConvertTextToSpeech(textToConvert, gender, voice, this.DataContext);
task.Wait();
if (task.Result.IsSuccessStatusCode && task.Result.Content != null)
{
Task<byte[]> ttsResult = task.Result.Content.ReadAsByteArrayAsync();
ttsResult.Wait();
if (ttsResult.Result != null)
{
try
{
// Save the audio to Azure Storage
var fileName = "test.mp3";
Task<string> storageTask = BlobStorage.CreateBlockBlob("texttospeechsample", fileName, ttsResult.Result, "audio/mpeg");
storageTask.Wait();
if (!string.IsNullOrEmpty(storageTask.Result))
{
// Save the details
SaveAudioStorageDetails(storageTask.Result);
}
}
catch (Exception ex)
{
throw new Exception("An error occurred while saving audio to azure storage." + ex.Message);
}
}
}
任何人都可以建议我尝试其他什么以及应该在哪里进行进一步的故障排除吗?
谢谢。
答案 0 :(得分:0)
好的,我在这里找到了问题。在进一步检查Text-To-Speech API文档时,我发现请求标头中有一个输出参数。 X-Microsoft-OutputFormat
定义了将从API返回的音频类型。
由于我一直在跟踪API示例,因此它使用的X-Microsoft-OutputFormat
是riff-24khz-16bit-mono-pcm
。这应该与我们要保存和播放的音频类型保持一致。其他浏览器可能可以将其转换并正确播放,但IE过去始终会显示“无效源”错误。
就我而言,将其更改为audio-24khz-160kbitrate-mono-mp3
可以正常工作,它也可以在IE中正确保存和播放音频。
希望这对某人有帮助。