You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Opus/OGG文件转为Telegram语音格式?SendVoice发送异常解决

解决Telegram SendVoice识别为普通音频的问题

Telegram对语音消息的OGG/Opus文件有严格的格式要求——哪怕编码正确,容器参数或元数据不符,也会被识别为普通音频。以下是针对性解决方案:

一、修正FFmpeg转换参数

你的原命令缺少Telegram语音要求的关键采样率设置,且未清理冗余元数据。替换为以下命令重新转换:

ffmpeg -i test.mp3 -ac 1 -ar 16000 -codec:a opus -b:a 32k -vbr on -compression_level 10 -map_metadata -1 -f ogg test1.ogg

参数说明:

  • -ar 16000:强制设置16kHz采样率,这是Telegram语音的标准适配采样率
  • -vbr on -compression_level 10:启用可变比特率并拉满压缩等级,更适配语音场景优化
  • -map_metadata -1:清除所有元数据,避免容器额外信息干扰Telegram的文件类型识别
  • -f ogg:明确指定输出容器为OGG,确保格式标记正确

二、检查现有文件的格式信息

如果test1.ogg已经是Opus编码,先通过ffprobe验证关键参数是否合规:

ffprobe -v quiet -print_format json -show_format -show_streams test1.ogg

重点核对:

  • streams[0].channels 必须为1(单声道)
  • streams[0].sample_rate 需为8/12/16/24/48kHz(优先16kHz)
  • streams[0].codec_name 必须是opus
  • format.format_name 必须是ogg

三、修复容器头部异常

如果参数都符合但仍被识别为普通音频,大概率是OGG容器头部存在异常,尝试重新封装:

ffmpeg -i test1.ogg -c copy -map_metadata -1 -f ogg re-encoded_test1.ogg

该命令保留原始Opus编码,仅重新生成干净的OGG容器头部。

四、SendVoice接口参数验证

发送时需确保:

  • 文件名后缀为.ogg
  • 设置duration参数(传入音频准确时长,单位秒)
  • 请求的MIME类型指定为audio/ogg

内容的提问来源于stack exchange,提问作者user23120850

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:06:29