通过官网的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确实存在
我对语音编解码这块不是很熟悉,不知道开发者社区里面是否有人可以帮我解决一下这个问题?至少教我一下怎么对音频字节码进行一下处理,以便这个音频传到阿里云对象存储之后显示的语音时长要是正确的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到音频时长显示错误的问题,通常并不直接关联到音频编解码本身,而是与音频文件的元数据(Metadata)有关。音频文件中的元数据包含了诸如时长、采样率、位深度等信息,如果这些信息记录不正确,可能会导致播放器或存储服务误读时长。
针对您提到的情况,您可以尝试以下步骤来解决或诊断问题:
检查音频生成设置:首先确认在使用阿里云语音合成服务时,输出音频的配置是否正确,特别是采样率和编码格式。确保这些参数符合行业标准且与您的播放设备兼容。
修复音频元数据:如果音频文件本身是正确的,但元数据有误,可以使用音频编辑软件(如Audacity、Adobe Audition或者FFmpeg命令行工具)来打开音频文件,并手动修正元数据信息。具体操作通常是导出或重新保存文件时,确保软件能够正确写入时长和其他元数据。
使用FFmpeg调整元数据示例:
ttsForLongText.wav
):
ffmpeg -i ttsForLongText.wav -codec copy -metadata duration=70 -y fixed_ttsForLongText.wav
这里-metadata duration=70
指定了音频时长为70秒(根据实际时长替换)。-codec copy
表示仅复制流而不进行重新编码,这样处理速度很快且不会影响音质。最后,fixed_
前缀用于标识已修复的文件。
重新上传至OSS:完成上述步骤后,将修复了元数据的音频文件重新上传至阿里云对象存储(OSS),并检查时长是否正确显示。
联系技术支持:如果以上方法均未能解决问题,建议再次联系阿里云的技术支持,提供详细的操作步骤和错误表现,以便他们能更深入地调查此问题。可能需要从服务端排查是否存在处理长文本语音合成时对元数据处理的潜在bug。
希望这些建议能帮助您解决问题!