1

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

背景

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

我遵循了这些 API 中的示例,一切正常。唯一的问题是音频不能在 IE 11 中播放。它总是给出“InValid Source”错误。它在 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);
        }
    }
}

谁能建议我还应该尝试什么以及我应该在哪里进一步排除故障?

谢谢你。

4

1 回答 1

1

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

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

由于我在关注 API 示例,所以X-Microsoft-OutputFormat它使用的是riff-24khz-16bit-mono-pcm. 这应该与我们要保存和播放的音频类型一致。其他浏览器可能能够转换它并正确播放,但 IE 过去总是给出“Invalid Source”错误。

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

希望这可以帮助某人。

于 2019-12-03T12:22:34.040 回答