采样音频不会保留波(矢量)!

Ami*_*ani 7 python audio pydub telegram python-telegram-bot

我做了一个Telegram机器人,它的工作之一就是从音频文件创建样本。现在,对于发送给它的大多数音频而言,样本都很好。像这样的东西:

在此处输入图片说明

但是,对于某些音频,样本看起来有些奇怪:

在此处输入图片说明

如您所见,此文件中的波未显示!(我可以向您保证声音不是空的)

为了创建示例,我使用pydub(谢谢James!)。这是我创建示例的部分:

song = AudioSegment.from_mp3('song.mp3')
sliced = song[start*1000:end*1000]
sliced.export('song.ogg', format='ogg', parameters=["-acodec", "libopus"])
Run Code Online (Sandbox Code Playgroud)

然后使用bot.send_voice方法发送样本。像这样

bot.send_voice(
    chat_id=update.message.chat.id,
    voice=open('song.ogg', 'rb'),
    caption=settings.caption,
    parse_mode=ParseMode.MARKDOWN,
    timeout=1000
)
Run Code Online (Sandbox Code Playgroud)

Telegram Bot API的文档说:

如果希望Telegram客户端将文件显示为可播放的语音消息,请使用此方法发送音频文件。为此,您的音频必须位于使用OPUS编码的.ogg文件中(其他格式可能以音频或文档的形式发送)。

这就是为什么在这行代码中:

sliced.export('song.ogg', format='ogg', parameters=["-acodec", "libopus"])
Run Code Online (Sandbox Code Playgroud)

我用过parameters=["-acodec", "libopus"]

谁能告诉我我在做什么错?提前致谢!

sel*_*bie 0

暗中拍摄猜测:

刚刚试听了这两首 Muse 歌曲后,“Pressure”是一首比“The Void”响亮得多的摇滚歌曲。我怀疑 Telegram 服务本身在执行语音到文本翻译时只是将音乐检测为噪音。与言语不同的是,言语之间的动态范围很宽,而音乐的音量往往相同。因此,每个样本的相对体积相对相同 - 因此是一条平坦的线。