开发者社区 问答 正文

长文本语音合成功能有bug

通过官网的demo:https://help.aliyun.com/document_detail/140423.html?spm=a2c4g.11186623.6.630.46654ff4k07hSU 进行长文本(超过300字节)语音合成,合成完的语音放到阿里云对象存储上面 https://hellozjf-oss.oss-cn-hangzhou.aliyuncs.com/test/ttsForLongText.wav,显示的语音时长是40多个小时(实际只有1分10多秒)

我找阿里云的售后确认了一下,这个bug确实存在

Dingtalk_20210813173702.jpg

我对语音编解码这块不是很熟悉,不知道开发者社区里面是否有人可以帮我解决一下这个问题?至少教我一下怎么对音频字节码进行一下处理,以便这个音频传到阿里云对象存储之后显示的语音时长要是正确的

展开
收起
hellozjf 2021-08-13 17:41:26 1355 分享 版权
阿里云 AI 助理回答

遇到音频时长显示错误的问题,通常并不直接关联到音频编解码本身,而是与音频文件的元数据(Metadata)有关。音频文件中的元数据包含了诸如时长、采样率、位深度等信息,如果这些信息记录不正确,可能会导致播放器或存储服务误读时长。

针对您提到的情况,您可以尝试以下步骤来解决或诊断问题:

  1. 检查音频生成设置:首先确认在使用阿里云语音合成服务时,输出音频的配置是否正确,特别是采样率和编码格式。确保这些参数符合行业标准且与您的播放设备兼容。

  2. 修复音频元数据:如果音频文件本身是正确的,但元数据有误,可以使用音频编辑软件(如Audacity、Adobe Audition或者FFmpeg命令行工具)来打开音频文件,并手动修正元数据信息。具体操作通常是导出或重新保存文件时,确保软件能够正确写入时长和其他元数据。

  3. 使用FFmpeg调整元数据示例:

    • 安装FFmpeg(如果尚未安装)。
    • 打开命令行工具,运行如下命令来快速修复一个音频文件的元数据(假设音频文件名为ttsForLongText.wav):
      ffmpeg -i ttsForLongText.wav -codec copy -metadata duration=70 -y fixed_ttsForLongText.wav
      

      这里-metadata duration=70指定了音频时长为70秒(根据实际时长替换)。-codec copy表示仅复制流而不进行重新编码,这样处理速度很快且不会影响音质。最后,fixed_前缀用于标识已修复的文件。

  4. 重新上传至OSS:完成上述步骤后,将修复了元数据的音频文件重新上传至阿里云对象存储(OSS),并检查时长是否正确显示。

  5. 联系技术支持:如果以上方法均未能解决问题,建议再次联系阿里云的技术支持,提供详细的操作步骤和错误表现,以便他们能更深入地调查此问题。可能需要从服务端排查是否存在处理长文本语音合成时对元数据处理的潜在bug。

希望这些建议能帮助您解决问题!

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答