Azure 认知服务(文本转语音)和 IE 中的音频问题(源无效)



我是 Azure 服务的新手,在这里需要一些指导。

背景

我正在使用 Azure 文本转语音服务将文本转换为语音,并且从 API 返回的数据保存在 Azure BLOB 存储中。 这是通过一个计划发生的,该计划不断识别新文本,将其转换并保存到 Azure 存储。当用户登录应用程序时,有一个 HTML5 音频标记链接到该 Azure 保存的 BLOB URL,它会自动播放转换后的文本。

我已经遵循了这些 API 的示例,一切正常。唯一的问题是音频无法在IE 11中播放。 它总是给出"无效源"错误。它在Chrome,FF中运行良好。

谷歌为这个特定问题加载了许多解决方案,我几乎都尝试了。

1( 使用 MP3 类型而不是 .我之前使用的 WAV 文件

2( 显式关闭音频标签

3( 检查了浏览器中返回的标头响应。这也是正确的。(音频/移动像素(

我还尝试在存储中添加一个虚拟.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);
}
}
}

任何人都可以建议我还应该尝试什么以及我应该进一步排除故障的地方吗?

谢谢。

好的,我在这里找到了问题。当我进一步检查文本到语音转换 API 文档时,我看到请求标头中有一个输出参数。X-Microsoft-OutputFormat定义将从 API 返回的音频类型。

https://learn.microsoft.com/en-us/azure/cognitive-services/speech-service/rest-text-to-speech#audio-outputs

由于我遵循的是 API 示例,因此它使用X-Microsoft-OutputFormatriff-24khz-16bit-mono-pcm。这应该与我们想要保存和播放的音频类型一致。其他浏览器可能能够转换它并正确播放,但IE过去总是给出"无效来源"错误。

就我而言,将其更改为audio-24khz-160kbitrate-mono-mp3工作正常,并且还可以在IE中正确保存和播放音频。

希望这对某人有所帮助。

最新更新