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

python-telegram-bot调用send_voice发送空音频文件问题求助

问题排查与解决方法

1. OGG文件编码不符合Telegram要求

Telegram的Voice消息仅支持Opus编码的OGG文件,且要求单声道、采样率推荐48kHz或16kHz。如果你的文件是Vorbis等其他编码,即使能发送成功,也会出现无法播放的空白状态。

验证方法:

用ffmpeg查看文件编码信息:

ffmpeg -i sample-3.ogg

查看输出中的Audio行,确认是否包含opus字样,例如:

Audio: opus, 48000 Hz, mono, fltp

转码解决:

如果编码不符,用ffmpeg重新转码:

ffmpeg -i sample-3.ogg -c:a opus -ac 1 -ar 48000 fixed_sample.ogg

之后用转码后的fixed_sample.ogg替换原文件测试。

2. 文件读取方式存在隐患

代码中直接使用open()但未妥善管理文件句柄,可能导致文件未完全读取就被系统回收,引发发送内容不完整的问题。

修正代码:

改用with上下文管理器确保文件正确读取和关闭:

async def audio_received(update: Update, context: ContextTypes.DEFAULT_TYPE):
    with open("sample-3.ogg", "rb") as voice_file:
        await context.bot.send_voice(
            chat_id=update.effective_chat.id, voice=voice_file
        )

3. 文件路径错误

如果脚本运行的工作目录与sample-3.ogg所在目录不一致,会读取到空文件或不存在的文件(部分情况下不会报错,但发送的内容为空)。

解决方法:

使用文件的绝对路径,例如:

# Linux/macOS
with open("/home/your_username/sample-3.ogg", "rb") as voice_file:
# Windows
with open("C:\\Users\\your_username\\sample-3.ogg", "rb") as voice_file:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:05:00