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

问题描述 投票:7回答:2

我做了一个Telegram robot,其中一个工作是从音频文件创建样本。现在,对于发送给它的大多数音频,样本都非常好;这样的事情:

enter image description here

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

enter image description here

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

为了创建样本,我使用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
2个回答
0
投票

在黑暗中猜测:

刚刚对这两首Muse歌曲进行了采样,“压力”是一首比“The Void”更响亮的摇滚歌曲。我怀疑Telegram服务本身只是在执行语音到文本翻译时将音乐检测为噪音。与口语之间具有宽动态范围的语音不同,音乐往往具有相同的音量。因此,每个样品的相对体积相对相同 - 因此是扁平线。


0
投票

由于它只发生在一些歌曲中,我相信这些问题与原始歌曲格式有关。确保pudub正确获取文件参数,例如:通道数,样本宽度,帧速率等。有时结果格式也会改变,因此您可以获得范围[-1..1](浮点)中的音频,有时候[-32767..32768](整数)。

© www.soinside.com 2019 - 2024. All rights reserved.