【发布时间】:2019-08-17 04:34:02
【问题描述】:
我创建了一个Telegram robot,它的工作之一是从音频文件创建样本。现在对于发送给它的大多数音频,样本都很好;像这样:
但是,对于 一些 音频,示例看起来有点奇怪:
如您所见,此文件中的波形未显示! (我可以向你保证,声音不是空的)
为了创建示例,我使用pydub(谢谢James!)。这是我创建示例的部分:
song = AudioSegment.from_mp3('song.mp3')
sliced = song[start*1000:end*1000]
sliced.export('song.ogg', format='ogg', parameters=["-acodec", "libopus"])
然后我使用bot.send_voice 方法发送样本。 Like this:
bot.send_voice(
chat_id=update.message.chat.id,
voice=open('song.ogg', 'rb'),
caption=settings.caption,
parse_mode=ParseMode.MARKDOWN,
timeout=1000
)
Telegram Bot API 的文档说:
如果您希望 Telegram 客户端发送音频文件,请使用此方法发送音频文件 将文件显示为可播放的语音消息。为此,您的 音频必须是用 OPUS 编码的 .ogg 文件(其他格式可能是 作为音频或文档发送)。
这就是为什么在这行代码中:
sliced.export('song.ogg', format='ogg', parameters=["-acodec", "libopus"])
我用parameters=["-acodec", "libopus"]。
谁能告诉我我做错了什么?提前致谢!
【问题讨论】:
标签: python audio telegram python-telegram-bot pydub