我是Azure服务的新手,这里我需要一点指导。
背景
我使用Azure文本到语音服务将文本转换为语音,从API返回的数据保存在Azure BLOB存储中。这是通过一个计划来实现的,它不断地识别新文本,转换它并保存到Azure存储。当用户登录应用程序时,有一个HTML5音频标记,它链接到Azure保存的BLOB,并自动播放转换后的文本。
我已经跟踪了这些API的示例,一切都很好。唯一的问题是音频没有在IE11中播放,它总是给出"InValid源“错误。它在Chrome,FF中运行得很好。
谷歌为这个特定的问题提供了很多解决方案,我几乎都试过了。
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);
}
}
}有谁能建议我还应该尝试什么,我应该在哪里做进一步的故障排除?
谢谢。
发布于 2019-12-03 12:22:34
好吧,我在这里发现了问题。当我进一步检查文本到语音API文档时,我看到请求头中有一个输出参数。X-Microsoft-OutputFormat定义了从API返回的音频类型。
由于我遵循的是API示例,它使用的X-Microsoft-OutputFormat是riff-24khz-16bit-mono-pcm.This,应该与我们希望保存和播放的音频类型保持一致。其他浏览器可能能够转换它并正确地回放,但是IE过去总是给出“无效源”错误。
在我的例子中,将它更改为audio-24khz-160kbitrate-mono-mp3很好,它也可以在IE中正确保存和播放音频。
希望这能帮上忙。
https://stackoverflow.com/questions/59151571
复制相似问题